Як дізнатися, що проблема з машинним навчанням безперспективна?


207

Уявіть стандартний сценарій машинного навчання:

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

Питання: коли зупинитись? Звідки ви знаєте, що ваші дані насправді безнадійні, і всі химерні моделі не принесуть вам користі, ніж передбачити середній результат у всіх випадках чи якесь інше тривіальне рішення?

Звичайно, це проблема передбачуваності, але, наскільки я знаю, важко оцінити прогнозованість багатоваріантних даних, перш ніж щось спробувати. Або я помиляюся?

Відмова від відповідальності: це питання надихнуло це питання Коли мені потрібно зупинити пошук моделі? що не привертало великої уваги. Було б добре детально відповісти на таке питання для довідки.


1
На цю проблему можна відповісти практичним шляхом (як це робив @StephanKolassa) або абсолютним (якась теорема, яка показує дану модель, може дізнатися проблему, якщо певні умови будуть виконані). Котрий саме ви хочете?
Супербест

3
Це схоже на класичну проблему зупинки інформатики? Скажімо, у вас є алгоритм A довільної складності, який здійснює пошук за вхідними даними D, шукаючи прогнозні моделі, і алгоритм зупиняється, коли знаходить «хорошу» модель для даних. Не додаючи значної структури на A і D, я не бачу, як ви могли сказати, чи коли-небудь A зупинить даний вклад D, як ви можете сказати, чи вдасться A врешті-решт чи продовжуватиме пошук назавжди?
Меттью Ганн

@Superbest це може бути і те, і інше. Якщо вам є що додати, сміливо відповідайте. Я ніколи не чув про теорему, яка нічого б не говорила про те, щоб мати справу з багатовимірними галасливими даними в реальному житті, але якщо ви знаєте, що застосовується, мені було б цікаво прочитати вашу відповідь.
Тім

3
Виходячи з відповіді @ StephenKolassa, ще одне питання, яке ви могли б відмовити від цього, - це "У який момент я повинен повернути свою роботу до експертів з теми та обговорити мої результати (або відсутність результатів)?"
Роберт де Граф

Також пов’язана тема: stats.stackexchange.com/questions/28057/…
Ян Кукацька

Відповіді:


241

Передбачуваність

Ви праві, що це питання передбачуваності. Там було кілька статей про прогнозованість в практикує-орієнтований журнал IIF в Форсайт . (Повне розкриття: я асоційований редактор.)

Проблема в тому, що передбачуваність вже важко оцінити в "простих" випадках.

Кілька прикладів

Припустимо, у вас є такий часовий ряд, але ви не розмовляєте німецькою мовою:

яйця

Як би ви моделювали великий пік у квітні, і як би ви включили цю інформацію до будь-яких прогнозів?

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

Аналогічно, припустімо, що у вас є синя лінія нижче, і ви хочете моделювати те, що сталося 2010-02-28, так інакше, ніж "нормальні" шаблони 2010-02-27:

гра в хокей

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

Наостанок подивіться на це:

чуже

Це часовий ряд щоденних розпродажів у магазині з готівкою та перенесенням . (Праворуч у вас проста таблиця: 282 дні мали нульовий продаж, 42 дні - 1 продаж, а один день - 500.) Я не знаю, що це за товар.

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

Підсумок

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

[T] тут відомі знання; Є речі, які ми знаємо, ми знаємо. Ми також знаємо, що є відомі невідомі; тобто, ми знаємо, що є деякі речі, про які ми не знаємо. Але є й невідомі невідомі - ті, яких ми не знаємо, ми не знаємо.

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

Єдиний спосіб вирішити це питання - зібрати знання про домен.

Висновки

З цього я роблю три висновки:

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

Суть

Ось як я рекомендував би будувати моделі - і помічаючи, коли зупинитись:

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

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


10
+1 за чудову відповідь, з якою я повністю згоден. Я не приймаю цього (поки), оскільки все ще сподіваюся на інші відповіді, оскільки проблема широка.
Тім

1
Звичайно. Я також хотів би бачити чужий погляд на це!
Стефан Коласа

9
If you are forecasting a fair coin toss, then there is no way to get above 50% accuracy.. Ви все там сказали.
Вальфрат

3
Використовуючи знання про домен, ви можете додати нові функції до перших двох випадків (наприклад, час до Великодня та перегляд телевізійних номерів, хоча останній потребує власного прогнозування), щоб отримати набагато кращі результати. В жодному випадку ситуація не є безнадійною. Дійсно цікава частина полягає в тому, як розповісти про відсутні знання домену з набору даних про справедливі монети.
Karolis Juodelė

4
@ KarolisJuodelė: це якраз моя думка. Ми навіть не можемо знати, коли наша ситуація безперспективна, якщо ми не поговоримо з експертом ... і тоді, іноді і експерт нам не може допомогти, і для експертів є "невідомі невідомі", які, можливо, може бути ще хтось знати.
Стефан Коласа

57

Відповідь Стефана Коласса відмінна, але я хотів би додати, що часто також існує стан зупинки економіки:

  1. Коли ви робите ML для клієнта, а не для розваги, вам слід поглянути на суму грошей, яку клієнт готовий витратити. Якщо він заплатить вашій фірмі 5000 €, і ви витратили місяць на пошук моделі, ви втратите гроші. Звучить банально, але я бачив, що "повинно бути рішення !!!!" - розмірковування, яке призвело до величезних перевитрат витрат. Тож зупиніться, коли гроші не будуть, і повідомте про проблему своєму клієнту.
  2. Якщо ви виконали якусь роботу, у вас часто виникає відчуття того, що можливо з поточним набором даних. Спробуйте застосувати це до тієї суми грошей, яку ви можете заробити за допомогою моделі, якщо сума є тривіальною чи чистою негативною (наприклад, через час збирання даних, розробки рішення тощо), ви повинні зупинити.

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

Хоча я зосередився на економіці, працюючи над комерційним продуктом, це правило також стосується наукових шкіл або для веселих проектів - хоча гроші за таких обставин менше турбують, час все ще є рідкісним товаром. E. g. в академічних школах вам слід припинити роботу, коли ви не отримаєте відчутних результатів, і у вас є інші, більш перспективні проекти, які ви могли б зробити. Але не відмовляйтесь від цього проекту - також опублікуйте нульові результати або "потрібні більше / інші дані", вони також важливі!


1
+1 безумовно чудовий момент! Я думаю, що всі відповіді на це питання можуть здатися "очевидними", але я не бачив ніде всіх "очевидних" речей, зібраних для ознайомлення.
Тім

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

2
Я думаю, що "ніхто б не використовував іст і не був консервований", мабуть, слід змінити на "ніхто б не користувався ним, і це було консервоване" - це був ваш призначений сенс?
Срібна рибка

2
Дякую. Я б сказав, що мова йде не лише про час, а про те, що ви могли інвестувати час інакше. Ви можете замість цього працювати над дослідницьким проектом щодо іншого рятувального препарату, який би заощадив ваш час, але громадськість отримає користь від результатів тощо.
Тім

2
@ChristianSauer На моєму досвіді як інженера проблема невідповідності між датчиками (cf датчики) та корисною метою, ймовірно, передує винаході транзистора.
Роберт де Грааф

9

Є й інший спосіб. Запитайте себе -

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

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

Ваша здатність до покращення залежить (в цілому) від двох речей:

  1. Чи використовуєте ви ті самі дані, що і найкращий експерт у цій задачі?
  2. Чи використовуєте ви дані дані так само ефективно, як найкращий експерт у цьому конкретному завданні?

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

Я погоджуюсь зі Стефаном, що зазвичай найкращий спосіб зробити це - запитати експерта з домену.


1
Насправді, ваша відповідь суперечить відповіді @StephanKolassa, де він посилається на літературу, яка передбачає, що показники прогнозу є досить оманливими.
Тім

1
@Tim: повне розкриття інформації - це посилання перейшло до статті про орієнтири, які я написав сам. Тим не менш, я стою під своїми висновками: всі показники точності прогнозування попиту, які я бачив, дуже ймовірно порівнюють яблука з апельсинами. Тому я трохи скептично ставлюсь до зовнішніх орієнтирів. Крім того, я думаю, що ця відповідь дещо ставить питання. Після того, як ваш алгоритм ML покращиться на "найвідомішому", то як ви дізнаєтесь, чи можете ви вдосконалити його далі чи ми досягли Плато Безнадії?
Стефан Коласа

1
Мій останній випадок використання був зовсім іншим. Я намагався передбачити, хто ризикує вбити себе від своїх публікацій в Інтернеті. Існують різні психометричні тести, які можна використовувати для вимірювання ступеня тяжкості депресії, таких як PHQ9. В якості широко використовуваного медичного тесту проводиться значна робота з його достовірності та надійності, наприклад "Дійсність PHQ-9 - короткий показник тяжкості депресії". Я виявив, що надійність та інші заходи в цій роботі є гарною відправною точкою щодо ймовірних результатів, які можна було б досягти від машинного навчання.
Гевін Поттер

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