Як перекодувати категоричну змінну в числову змінну при використанні SVM або нейронної мережі


19

Для використання SVM або нейронної мережі йому потрібно перетворити (кодувати) категоричні змінні в числові змінні, нормальним методом у цьому випадку є використання 0-1 двійкових значень з k-м категоричним значенням, перетвореним у (0,0, .. ., 1,0, ... 0) (1 знаходиться на k-й позиції). Чи є інші методи для цього, особливо коли існує велика кількість категоричних значень (наприклад, 10000), таким чином, що представлення 0-1 введе велику кількість додаткових розмірів (одиниць введення) в нейронну мережу, що здається не зовсім бажаним або очікуваним ?

Я запитую про загальні стратегії.


Ви питаєте про загальні стратегії чи про якусь конкретну проблему?
Денис Тарасов

Відповіді:


11

У NLP, де слова зазвичай кодуються як 1-з-k, останнім часом з'явилося використання вбудовування слів. Сторінка вікіпедії зі своїми посиланнями - хороший початок.

Загальна ідея полягає у вивченні векторального подання для кожного слова i там, де в цьому просторі близькі семантично схожі слова. Отже, вхідні дані мають розмір n замість розміру словникового запасу.хiRнiн

Можливо, ви зможете перенести цю ідею у ваше налаштування.


10

"Стандартними" методами є: однокольорове кодування (про яке ви згадали у запитанні). Якщо є занадто багато можливих категорій, але вам потрібно кодування 0-1, ви можете використовувати хеш-трюк .

Інший часто використовуваний метод - усереднення відповідей за категорією: див . Картинку з коментаря на kaggle .


1

Ви можете використовувати dummyVarsв R, з caretпакета. Він автоматично створить різні стовпці на основі кількості рівнів. Згодом ви можете використовувати cbindта прикріплювати їх до оригінальних даних. Інші варіанти включають model.matrixі sparse.model.matrix.


0

Ви можете спробувати двійкове кодування, яке є більш компактним, а іноді і випереджальним. Наприклад, ви можете реалізувати категоричне вбудовування в Keras.


0

к-1

"Вбудовування об'єктів категоричних змінних" Чен Го, Фелікс Берхан

Ми відображаємо категоричні змінні в задачі наближення функції до евклідових просторів, які є вбудованими сутностями категоричних змінних. Картування вивчається нейронною мережею під час стандартного навчального процесу під керівництвом. Вбудовування об'єктів не тільки зменшує використання пам'яті та прискорює нейронні мережі порівняно з однокольоровим кодуванням, але, що ще важливіше, відображаючи подібні значення, близькі один до одного у вбудовуваному просторі, воно виявляє внутрішні властивості категоричних змінних. Ми успішно застосували його в недавньому змаганні Kaggle і змогли вийти на третю позицію порівняно простими функціями. Далі ми демонструємо в цій роботі, що вбудовування сутності допомагає нейронній мережі краще узагальнити, коли дані рідкісні, а статистика невідома. Таким чином, це особливо корисно для наборів даних з великою кількістю особливостей кардинальності, де інші методи, як правило, переважають. Ми також демонструємо, що вбудовування, отримані від навченої нейронної мережі, значно підвищують продуктивність усіх перевірених методів машинного навчання, коли вони використовуються як функції введення. Оскільки вбудовування сутності визначає міру відстані для категоричних змінних, його можна використовувати для візуалізації категоричних даних та для кластеризації даних.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.