Представьте себе стандартный сценарий машинного обучения:
Вы сталкиваетесь с большим многомерным набором данных, и у вас довольно размытое понимание этого. Что вам нужно сделать, это сделать прогноз о некоторой переменной на основе того, что у вас есть. Как обычно, вы очищаете данные, просматриваете описательную статистику, запускаете некоторые модели, перекрестно проверяете их и т. Д., Но после нескольких попыток, переходя назад и вперед и пробуя несколько моделей, ничего не работает, и ваши результаты печальны. Вы можете потратить часы, дни или недели на такую проблему ...
Вопрос в том, когда остановиться? Откуда вы знаете, что ваши данные на самом деле безнадежны, и что все модные модели не принесут вам большей пользы, чем прогнозирование среднего результата для всех случаев или какое-то другое тривиальное решение?
Конечно, это проблема прогнозируемости, но, насколько мне известно, трудно оценить прогнозируемость для многомерных данных, прежде чем пытаться что-то с ними сделать. Или я не прав?
Отказ от ответственности: этот вопрос был вдохновлен этим Когда я должен прекратить искать модель? это не привлекло большого внимания. Было бы неплохо иметь подробный ответ на такой вопрос для справки.
Ответы:
прогнозируемость
Вы правы в том, что это вопрос прогнозируемости. Там было несколько статей о прогнозируемости в практикующей-ориентированный журнал IIF в Форсайт . (Полное раскрытие: я помощник редактора.)
Проблема в том, что прогнозируемость уже трудно оценить в «простых» случаях.
Несколько примеров
Предположим, у вас есть такие временные ряды, но вы не говорите по-немецки:
Как бы вы смоделировали большой пик в апреле и как бы вы включили эту информацию в любые прогнозы?
Если бы вы не знали, что этот временной ряд является продажей яиц в швейцарской сети супермаркетов, пик которой приходится на западный календарный день Пасхи , у вас не было бы шансов. Кроме того, с учетом того, что Пасха движется по календарю на целых шесть недель, любые прогнозы, которые не включают конкретную дату Пасхи (предполагая, скажем, что это был просто какой-то сезонный пик, повторятся на определенной неделе в следующем году) вероятно был бы очень выключен.
Аналогичным образом, предположим, что у вас есть синяя линия ниже, и вы хотите смоделировать то, что произошло 2010-02-28, настолько отличным от «нормальных» шаблонов 2010-02-27:
Опять же, не зная, что происходит, когда целый город, полный канадцев, смотрит по телевизору олимпийскую игру в финал по хоккею с шайбой, у вас нет ни малейшего шанса понять, что здесь произошло, и вы не сможете предсказать, когда что-то подобное повторится.
Наконец, посмотрите на это:
Это временной ряд ежедневных продаж в магазине наличных денег . (Справа у вас есть простая таблица: 282 дня имели нулевые продажи, 42 дня - 1 ... и один день - 500.) Я не знаю, что это за товар.
До сегодняшнего дня я не знаю, что произошло в тот день с продажами в 500. Я думаю, что некоторые клиенты предварительно заказали большое количество любого продукта и собрали его. Теперь, не зная этого, любой прогноз на этот конкретный день будет далеко. И наоборот, предположим, что это произошло прямо перед Пасхой, и у нас есть тупой умный алгоритм, который полагает, что это может быть эффектом Пасхи (может быть, это яйца?), И с радостью прогнозирует 500 единиц на следующую Пасху. Ой, может , что пойдет не так.
Резюме
Во всех случаях мы видим, как прогнозируемость может быть хорошо понята только тогда, когда у нас достаточно глубокое понимание вероятных факторов, которые влияют на наши данные. Проблема в том, что, если мы не знаем эти факторы, мы не знаем, что мы можем не знать их. Согласно Дональду Рамсфелду :
Если Пасха или пристрастие канадцев к хоккею неизвестны нам, мы застряли - и у нас даже нет пути вперед, потому что мы не знаем, какие вопросы нам нужно задать.
Единственный способ справиться с этим - собрать знания о предметной области.
Выводы
Из этого я делаю три вывода:
Нижняя линия
Вот как я бы порекомендовал строить модели и замечать, когда нужно остановиться:
Обратите внимание, что я не рекомендую пробовать разные классы моделей, если ваши оригинальные модели плато. Как правило, если вы начали с разумной модели, использование чего-то более сложного не принесет существенной пользы и может просто привести к перегрузке тестового набора. Я видел это часто, и другие люди соглашаются .
источник
If you are forecasting a fair coin toss, then there is no way to get above 50% accuracy.
, Вы сказали все там.Ответ от Стефана Коласса превосходен, но я хотел бы добавить, что часто есть экономическое условие остановки:
В качестве примера: у нас был клиент, который хотел предсказать, когда его машины сломаются. Мы проанализировали существующие данные и обнаружили, по существу, шум. Мы погрузились в процесс и обнаружили, что наиболее важные данные не были записаны и их было очень трудно собрать. Но без этих данных наша модель была настолько бедной, что никто бы ее не использовал, и она была консервированной.
В то время как я сосредоточился на экономике при работе с коммерческим продуктом, это правило также применимо к научным кругам или к веселым проектам - хотя деньги в таких обстоятельствах не столь важны, время все еще остается редким товаром. Например в академических кругах вы должны перестать работать, когда вы не дадите ощутимых результатов, и у вас есть другие, более перспективные проекты, которые вы могли бы реализовать. Но не отбрасывайте этот проект - пожалуйста, опубликуйте также нулевые результаты или результаты «Вам нужно больше / другие данные», они тоже важны!
источник
Есть другой способ. Спроси себя -
Так, например, если у вас было большое количество переменных, связанных с разными футбольными командами, и вы пытались предсказать, кто победит, вы можете взглянуть на шансы букмекерских контор или какую-то форму прогнозирования из краудсорсинга, чтобы сравнить с результатами вашего машинного обучения. алгоритм. Если вам лучше, вы можете быть на пределе, если хуже, то, безусловно, есть возможности для улучшения.
Ваша способность улучшаться зависит (в целом) от двух вещей:
Это зависит от того, что именно я пытаюсь сделать, но я склонен использовать ответы на эти вопросы, чтобы определить направление, в котором я иду при построении модели, в частности, пытаться ли извлечь и извлечь больше данных, которые я могу использовать, или сосредоточиться на них. пытаясь уточнить модель.
Я согласен со Стефаном, что обычно лучший способ сделать это - обратиться к эксперту по предметной области.
источник