Як кодувати клас з 24 000 категорій?


10

Зараз я працюю над логістичною регресійною моделлю для геноміки. Одне з полів введення, яке я хочу включити як коваріат, - це genes. Відомо близько 24 000 генів. Існує багато особливостей з цим рівнем мінливості в обчислювальній біології, і потрібні сотні тисяч зразків.

  • Якщо я LabelEncoder()ці 24K гени
  • а потім OneHotEncoder()їх ...

Чи буде 24000 стовпців, щоб зробити мої тренування керасом необгрунтованими для чотирьохядерного процесора i7 з частотою 2,2 ГГц?

Якщо так, чи є інший підхід до кодування, який я можу взяти з цим?

Чи варто якось намагатися присвятити шар своєї моделі цій функції?

Чи означає це, що мені потрібні 24K вузли введення?


Чому б не навчитися представництву за допомогою VAE? Я думаю, що в генній послідовності навчання представлення (як це робиться в NLP) буде мати багато сенсу порівняно з простою PCA ...
n1tk

Відповіді:


10

Так, для використання кодування з гарячим кодом для функцій 24k потрібні вузли введення 24k. Однак це не повинно бути проблемою для Кераса (або будь-якої іншої бібліотеки глибокого навчання). Натуральна обробка мови часто використовує однокольорове кодування слів з розміром словника в одному і тому ж бальному парку.

Якщо ви використовуєте "глибоку" модель, один із прихованих шарів повинен подбати про зменшення розмірності ваших даних. Окремий крок попередньої обробки зазвичай не потрібен.

Час тренувань не повинен бути необґрунтованим.


Дякуємо за перевірку здорового стану
HashRocketSyntax

Я помітив, що ви згадували шар, а не PCA в sklearn. Чи рекомендуєте ви автоенкодери як форму зменшення розмірності?
HashRocketSyntax

2
Ви згадали, що використовуєте Кераса, значить, ви використовуєте якусь нейронну мережу? Якщо десь у вашій мережі у вас є шар з меншою кількістю вузлів, ніж ваш вхід, мережа виконує зменшення розмірності автоматично. Я припускаю, що у вас є лише один (або невелика кількість) регресійних виходів. Отже, одним простим способом є наявність вхідного шару (d = 24k), одного або декількох проміжних шарів (d = 1k або щось подібне) та вашого вихідного шару (d = 1).
C. Yduqoli

Незважаючи на те, що подібні шари за розмірами часто зустрічаються в NLP, як правило, не розумно навчати сучасні моделі NLP на процесорі, потужні графічні процесори дійсно є настільними ставками в NLP для всього, що виходить за межі маленьких «іграшкових» моделей. З іншого боку, це не є великим бар'єром, оскільки як фізичний, так і хмарний графічні процесори досить легко доступні.
Петеріс

6

Вбудовування об'єктів категорійних змінних ( оригінальний пейджер ) було б тут дуже підходящим підходом. Читайте тут , або тут . Я фактично поставив шматки кодів звідси і там і зробив повну запущену реалізацію, дивіться це git repo. Це легко обробляє дуже високі кардинальні категоріальні змінні за допомогою нейронних мереж. Не буду перераховувати плюси та мінуси ОГЕ, ви просто Google це, але один з його головних недоліків. коли у вас дуже висока категорична змінна категорія - це різко збільшує ваш простір без необхідності, що, на мою думку, не є ідеальним. І що ще важливіше, наскільки мені відомо, що ОЕЕ не враховує смислових відносин між категоріями, якщо таке відношення існує! Однак Entity Embedding - це концепція вбудовування Word в NLP; ваги, які вивчаються для кодування категорій, можуть потенційно охоплювати внутрішньокатегоріальні відносини.


3

Як правило, цю кількість генів слід зменшити до значно меншого набору значущих ознак. Тоді у моделі можна використовувати зменшений набір функцій. Наприклад, аналіз основних компонентів (PCA) є однією з найпоширеніших методів відновлення і використовується для даних експресії генів .

" Машинне навчання для інтеграції даних у біологію та медицину: принципи, практика та можливості" Zitnika et al. охоплює різноманітні особливості інженерних методів для генів.


Спасибі має сенс Зменшіть простір функцій до кількості відповідних генів (та регуляторних зон у вігнах).
HashRocketSyntax

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