Глибоке навчання проти збільшення градієнта: коли використовувати?


30

У мене є велика проблема даних з великим набором даних (візьмемо, наприклад, 50 мільйонів рядків і 200 стовпців). Набір даних складається з приблизно 100 числових стовпців та 100 категоричних стовпців та стовпця відповідей, що представляє проблему бінарного класу. Можливість кожної з категоричних стовпців менше 50.

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


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

1
На цьому тижні я фактично планував зробити велике порівняння моделі для власного дослідження реальних даних. Я трохи приберу результати та опублікую їх тут. Крім того, по крайней мере один студент CS вивчив питання: academia.edu/3526056 / ...
shadowtalker

1
@NeilSlater Мені подобається бачити відповідь на те, якою може бути / що може бути
інтуїція

1
У мене ще недостатньо репутації, щоб коротко прокоментувати ваше первісне запитання, і це насправді не відповідь. У будь-якому випадку, я хотів сказати, що я вважаю, що цей документ є досить актуальним для цього питання: Fernández-Delgado, M., Cernadas, E., Barro, S., & Amorim, D. (2014). Чи потрібні нам сотні класифікаторів для вирішення реальних проблем класифікації? Журнал машинного навчання, 15, 3133–3181. Отримано з dl.acm.org/citation.cfm?id=2697065
Жозе Марія Матеос

Чи є якийсь дослідницький аналіз даних чи якісь інші методи, які допоможуть мені вирішити один метод над іншим? У загальному випадку ні, це «теорема без вільного обіду» доводить це. Але є евристика, яка може направити вас у правильному напрямку, наприклад scikit-learn.org/stable/tutorial/machine_learning_map/…
Саймон

Відповіді:


32

Навіщо обмежувати себе цими двома підходами? Тому що вони круті? Я б завжди починав з простого лінійного класифікатора \ регресора. Отже, у цьому випадку лінійна SVM або логістична регресія, бажано з реалізацією алгоритму, яка може скористатися обмеженістю за рахунок розміру даних. Запустити алгоритм DL на цьому наборі даних буде потрібно багато часу, і я б зазвичай намагався глибоко вивчити проблеми спеціалістів, де в даних є така ієрархічна структура, як зображення або текст. Це надмірна кількість багатьох простих проблем з навчанням, і потрібно багато часу та досвіду для вивчення, а алгоритми DL дуже дуже повільно навчаються. Крім того, те, що у вас є 50М рядків, не означає, що вам потрібно використовувати весь набір даних, щоб отримати хороші результати. Залежно від даних, ви можете отримати хороші результати, взявши зразок у декілька 100 000 рядків або кілька мільйонів. Я б почав просто, з невеликого зразка та лінійного класифікатора, і звідси ускладнюватись, якщо результати не будуть задовільними. Принаймні так ви отримаєте базову лінію. Ми часто знаходили прості лінійні моделі для виконання більш складних моделей у більшості завдань, тому ви хочете завжди починати з цього місця.


4
+1 для початку з простої моделі та підпробовування
Метт

Я погоджуюся з використанням svm для розріджених даних, але ви не думаєте, що svm знадобиться багато часу для підготовки такого величезного набору даних про розміри!
blitu12345

Ні, особливо ні, якщо воно рідке і використовує лінійне ядро. Але вони можуть мати проблеми з великою кількістю рядків. Це буде пекло набагато швидше, ніж модель DL в будь-якому випадку. Але зауважте, що я також рекомендував логістичну регресію.
Саймон

Моя головна суть - почати з простої лінійної моделі, а навіть не використовувати повний набір даних, оскільки навряд чи вам потрібен цілий набір даних, щоб отримати хороші показники. Я сумніваюся, що між використанням рядків 100k і кількома мільйонами є велика різниця в точності.
Саймон

+1 для спробу глибокого вивчення проблем спеціалістів, де є якась ієрархічна структура в даних
eric2323223

4

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

Після того, як ви перейдете до дисбалансу класу більше 1:10, то більшість методів класифікації просто перестають працювати. Вам залишаться методи, засновані на випадкових лісових і, можливо, нейронних мережах (ще не пробували). Я працюю з класовим балансом в діапазоні від 1: 500 до 1: 1000 і виявив, що ані зменшення, ані зменшення розміру не працює. На щастя, мій набір даних "лише" 6 мільйонів спостережень за 200 змінними, і я в змозі запустити прискорені дерева на весь набір у розумні строки.

Отже, щоб безпосередньо відповісти на ваше запитання:

  • вам слід придумати купу питань, на які ви хочете відповісти, а в разі класифікації перевірити залишки класів цільових змінних.

  • ви повинні перевірити розподіл (не в математичному сенсі) відсутніх значень у всіх своїх даних і документувати те, що ви знайдете. Деякі методи ML в порядку з відсутніми значеннями, в той час як інші - ні, і вам потрібно вивчити імпутацію даних (яка має власний набір правил та вказівок та проблем).


1
Спробуйте класифікатор SGD від sklearn з class_weight = "збалансованим"
Дієго

4

З моєї точки зору, для 5 мільйонів екземплярів вам потрібно багато дерев, щоб отримати гарне узагальнення (хороша модель в терміні мирян). Якщо це не проблема, тоді йдіть за нею, навіть точна відповідь покладається на характер вашої проблеми. GBT - це хороший метод, особливо якщо у вас змішані типи функцій, такі як категоричні, числові тощо. Крім того, порівняно з нейронними мережами, вона має меншу кількість налаштованих гіперпараметрів. Тому швидше мати кращу модель налаштування. Ще одна річ - альтернатива паралельних тренувань. Ви можете тренувати кілька дерев одночасно з хорошим процесором. Якщо ви не задоволені результатами, тоді перейдіть на Neural Nets, оскільки це означає, що ваша модель повинна бути більш обширною, і ви повинні дізнатися інформацію вищого порядку через ваші дані. Це обумовлено NN в порівнянні з іншими алгоритмами навчання.


4

По рядках того, що @Simon вже сказав:

  1. Підходи до глибокого навчання були особливо корисні при вирішенні проблем із зором, мовленням та мовою, де інженерія функцій складна і вимагає великих зусиль.
  2. Для вашої програми, схоже, це не так, оскільки у вас чітко визначені функції та потрібні лише взаємодії з функціями тощо.
  3. Зважаючи на те, що в даний час для моделей глибокого навчання потрібно багато обчислювальних ресурсів та часу вченого на кодування матеріалів, я б запропонував обрати неглибокий підхід до навчання.

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


1

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

Я хотів додати, що генеративні моделі також повинні бути випробувані. Класифікатор Naive Bayes - один із найпростіших імовірнісних класифікаторів, і він перевершує багато складних методів, таких як підтримка векторних машин у багатьох завданнях. Ви можете подивитися на цю просту реалізацію NB та це посиланням для порівняння NB логістичної регресії.

Можна створити класифікатор Naive bayes (NB) як базову модель, а потім застосувати будь-яку техніку машинного навчання, наприклад, машини підтримки вектора (SVM) або багатошарові перцептрони (MLP). Тут можна сказати, що NB обчислювально дешевше, ніж MLP, тому бажані кращі показники від MLP.

До вашого точного запиту: Глибоке вивчення та збільшення градієнтного дерева є дуже потужними методами, які можуть моделювати будь-які відносини в даних. Але що робити, якщо у вашому випадку проста логістична регресія або NB надає бажану точність. Тому завжди краще спершу спробувати прості прийоми та мати базову продуктивність. Тоді можна перейти до складних моделей і порівняти з базовою лінією.

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