Комментарии 12
1) Добавляйте хабы: ML, математика, алгоритмы, статистика в IT.
2) Статья хорошая.
3) Прогнозирование - это отдельная дисциплина, которая слишком глубока, если вы действительно собрались погрузиться в ее пучины, то могу только позавидовать вашей смелости.
Рекомендую библиотеку sktime для анализа и прогноза временных рядов.
Эмм, попробуйте statsforecast от NIXTLA.Там есть куча моделей в том числе AutoARIMA с поддержкой экзогенных регрессоров и возможностью делать прогноз на множестве временных рядов
https://nixtlaverse.nixtla.io/statsforecast/index.html
Очень рекомендую книгу Франсуа Шолле "Глубокое обучение на R". В ней математика очень органично вплетена в код и будет проще разобраться.
Обложка
Когда есть явные выбросы, хороший результат даёт простейший медианный фильтр с окном 3-9 (размер окна всегда нечётный). Выбросы просто срезаются, а даже резкие нарастания/убывания сохраняются.
После медианного фильтра сглаживание часто даёт уже явно лучший результат. Даже сглаживание скользящим средним.
Поэкспериментируйте. Может у Вас как раз этот случай.
Я с временными рядами борюсь только третий месяц. Поделюсь некоторыми своими наблюдениями:
1. Для моих двухлетних наборов данных по часам лучше всего подходят градиентный бустинг и рекуррентные нейросети. Так же пробую AutoTS, FEDOT, Ethna, Prophet, NeuralProphet и другие.
2. Модель необходимо настраивать, даже если она кажется бесперспективной. Лучше всего автоматом искать по сетке и валидировать на разных месяцах. Переходить к следующему алгоритму только наигравшись с предыдущим.
3. Процесс минимизации ошибки на обучении обладает некоторой случайностью (по крайней мере на нейронках). Можно несколько раз перезапустить модель на одних и тех же параметрах и получить разные показатели. Выбрать по итогу ту модель, чьи веса выстроились наилучшим образом.
3. Не стоит радоваться результату MAPE=1,5%. Это повод искать ошибки. Вероятно, валидационные данные попали в обучение или еще что-то.
4. Не стоит чураться экзогенных переменных. Время года, час, день недели, месяц, продолжительность светового дня, синусы и косинусы этих переменных и прочее. Лучше потом выкинуть наименее значимые для модели или объединять их в новые, если уж обучение будет идти слишком долго. Да и в целом стоит побольше уделить внимания набору данных: корреляции признаков между собой, стандартизации, переводом в дамми-переменные категориальных признаков и т.д.
На данный момент MAPE=2,2% - мой наилучший результат. Проблема в том, что ременной ряд продолжает дополняться новыми данными с каждым днем. Соответственно, эффективность моделей или растет или падает. Думаю, что прорвемся. Удачи нам)
SARIMAX vs Экспоненциальное сглаживание: Когда простота побеждает