Об автоматическом (или около того) прогнозировании#лонгридНа прошлой неделе я рассказывал про базовые модели прогнозирования на одной зимней школе, а на выходных - проверял домашние работы участников, и этот процесс навёл меня на мысль написать этот пост.
Условие домашней работы было достаточно простым - нужно было
взять любой ряд цен из Pink Sheet Всемирного Банка (месячные ряды цен на разные биржевые продукты, от нефти до креветок) и построить его
прогноз рядом простых авторегрессионных (
когда текущее значения ряда определяется предыдущими значениями)
моделей, сделать это
много раз и посчитать
среднюю точность таких прогнозов на 1 месяц вперёд.
Набор моделей был вполне стандартный для базового курса по прогнозированию:
ARIMA (с автоматическим подбором параметров),
ETS,
гибриды, прогнозирующие ансамблем из других моделей (вплоть до простейших нейронных сетей -
и когда-нибудь я напишу отдельный текст про бессмысленную и беспощадную любовь некоторых людей к нейронным сетям там, где они не работают)
В целом, идея "
а давайте придумаем какую-нибудь модель, чтобы просто нажимать на кнопочку и получать хорошие прогнозы" выглядит очень привлекательно, и на каком-то этапе возникает ощущение, что сейчас заживём!
Но чаще всего, увы, "зажить" не получается, и результаты этого небольшого домашнего задания это прекрасно подтвердили:
больше чем в половине работ лучшей моделью оказалась...
Наивная модель! Которая просто повторяет последнее наблюдение в качестве прогноза ("завтра равно сегодня").
Среди тех работ, где победила не-наивная модель,
разница в точности модели-победительницы и наивной чаще всего составляла
доли процента. Буквально в одном случае хорошо (с разницей с наивной больше пары процентов) сработала ARIMA, в паре случаев - ETS, ещё в паре случаев какие-то гибриды.
Как показывает практика, даже при существенном усложнении моделей
редко получается получить кардинальный прирост точности. Я наблюдал хорошо работающие
LSTM (более сложный вид нейронных сетей), но в основном на более
высокочастотных данных, когда в выборке хотя бы несколько тысяч наблюдений. Я слышал про хорошо работающий
Prophet, но для специфичных типов данных (долей). И видел гораздо больше случаев, когда ни LSTM, ни Prophet, не способны значимо улучшить точность по сравнению с наивным прогнозом. А там, где
точность улучшается - это достигается
долгим и аккуратным подбором параметров моделей, а вовсе не "нажал на кнопочку - и всё работает".
Мораль сей басни? Не бывает волшебных палочек :)
Если вам нужен хороший прогноз - то даже при использовании авторегрессионной модели вам, скорее всего,
придётся довольно много времени потратить на подбор оптимальной модели и её параметров. А лучше использовать модель с внешними объясняющими переменными - но тогда придётся потратить на неё ещё больше времени и сил.
Но они точно окупятся!