Нейрові мережі: одночасна змінна переважна безперервна?


13

У мене є вихідні дані, які містять близько 20 стовпців (20 функцій). Десять із них - це суцільні дані, 10 з них - категоричні. Деякі з категоричних даних можуть мати приблизно 50 різних значень (США). Після того як я попередньо обробляла дані, 10 безперервних стовпців стають 10 підготовленими стовпцями, а 10 категоричних значень стають схожими на 200 однокольорових кодованих змінних. Я стурбований тим, що якщо я поміщую всі ці 200 + 10 = 210 ознак у нейронну мережу, то 200-одинакові функції (10 категоричних стовпців) будуть повністю домінувати над 10-безперервними функціями.

Можливо, одним із методів було б "групувати" стовпці разом чи щось. Чи це справжнє занепокоєння і чи є якийсь стандартний спосіб вирішення цього питання?

(Я використовую Keras, хоча я не думаю, що це має велике значення.)


Чи обдумали ви використовувати дві (або більше) послідовних моделей, а потім об'єднувати їх? Кожна модель має вхідні дані, які краще відповідають даним, як вони надходять (на відміну від розтирання їх, як ковбаса.) Цілі однакові, але ви робите два набори навчальних даних, кожен подається незалежно під час встановлення. Безпосередньо після злиття виходить ваш остаточний вихідний шар, так що остаточний шар приймає рішення щодо того, яка модель найкраще працює для конкретних зразків. З сайту keras.io: keras.io/getting-started/sequences-model-guide
photox

Тільки те, що я шукав. Дякуємо за ваш внесок.
користувач1367204

Я спробував це, і val_loss ансамблю (model_1, model_2) був вищим, ніж val_loss моделі_1 та вище, ніж val_loss моделі_2.
користувач1367204

Ви насправді це намагалися і визначили, що ця проблема насправді виникає? які тести ви зробили, щоб перевірити цю точку? які були результати?
Х'ю Перкінс

Відповіді:


5

Ви можете кодувати категоричні змінні методом, відмінним від "гарячого". Двійкові або хеширующие кодери можуть бути доречними для цього випадку. Зокрема, приємно, тому що ви кодуєте всі категорії в одне представлення на особливість вектора, тому жодна з них не домінує над іншою. Ви також можете вказати розмір остаточного подання, так що можна хеш-пам'ять усіх категоричних змінних на 10 ознак і в кінцевому рахунку з 20 числовими ознаками (наполовину безперервно, наполовину категоричні).

Обидва реалізовані в https://github.com/scikit-learn-contrib/categorical-encoding або досить прямо вперед, щоб реалізувати себе.


4

Ви можете використовувати вбудовування, щоб перетворити велику кількість категоричних змінних в один вектор. Цей стислий вектор буде розподіленим поданням категоричних ознак. Категоричні входи будуть перетворені на відносно невеликий вектор довжини N з N реальних чисел, який певним чином представляє N прихованих ознак, що описують усі входи.

Розглянемо велику кількість слів у словнику англійської мови. Якщо це число дорівнює N, то кожне слово може бути представлене як одне з гарячими кодованими векторами довжини N. Однак слово-до-веч здатне зафіксувати практично всю цю інформацію у векторі довжиною між 200-300.

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