Вопрос или проблема
У меня есть временные ряды данных за каждый день за последние 5 лет с сезонными колебаниями и общим увеличением тренда. Вот как выглядят мои данные:
И я пытаюсь предсказать на каждый день в течение 4-5 лет в будущем. Подходы, которые я использовал на данный момент:
- LSTM, GRU (но они крайне склонны к переобучению, а я пытаюсь делать последовательные прогнозы, что приводит к накоплению огромных ошибок и часто со временем выравнивается на небольших отсчетах и имеет синусоидные паттерны на длинных отсчетах).
- SARIMAX и другие модели сезонного прогнозирования, но они склонны очень плохо масштабироваться на большой период прогнозов. В основном они в итоге приводят к кривой, которая следует за трендом (увеличением/уменьшением), но значения почти линейны или нереалистично близки друг к другу.
О чем я сейчас думаю:
Отделить одинаковые дни каждого года и подогнать модель под эти значения, а затем делать последовательные прогнозы на тот же день в последующие годы. Таким образом, иметь 365 разных моделей и затем соединить полученные значения для получения прогнозов на весь год и будущие годы. Таким образом, я идеально сохраню сезонность, и ошибки накопления будут минимизированы. Так что мой вопрос:
Это хорошая идея (и если да, то есть ли метод сделать это осуществимо без оценки каждой из 365 моделей) или мне следует попробовать какой-либо другой подход?
- Вы пробовали старый добрый преобразование Фурье?
- Если вы можете выдержать математическую нагрузку, вы можете попробовать вейвлет-преобразование, но сначала я бы рекомендовал простое преобразование Фурье.
.
Ответ или решение
При прогнозировании временных рядов, особенно когда необходимо предсказать данные на каждый день в течение 4-5 лет вперёд, важно учитывать как краткосрочные сезонные колебания, так и долгосрочные тренды, которые наблюдаются в данных. Рассмотрим более детально различные подходы и методы, которые могут быть полезны в данной ситуации.
Теория
Прогнозирование временных рядов является сложной задачей, особенно в случаях, когда данные демонстрируют как сезонные колебания, так и общий тренд. Наиболее часто используемые методы включают:
-
Модели на основе рекуррентных нейронных сетей (RNN): такие как LSTM (Long Short-Term Memory) и GRU (Gated Recurrent Unit), которые могут улавливать зависимости в данных. Однако их серьезным недостатком может быть склонность к переобучению и накоплению ошибок при попытке предсказать большое количество шагов вперёд.
-
Классические модели временных рядов, такие как SARIMA (Seasonal Autoregressive Integrated Moving Average): хороши для учёта сезонности, но часто масштаб не позволяет адекватно предсказать на долгосрочный период без линейной аппроксимации тренда.
-
Спектральные методы, например, Преобразование Фурье и Вейвлет-преобразование: они помогают выявить скрытые периодичности в данных и могут быть полезны в задачах, где важно учитывать многокомпонентную сезонность.
Пример
Ваши текущие данные представляют собой временной ряд с ежедневными наблюдениями за 5 лет, которые демонстрируют сезонные колебания и общий положительный тренд. Из образцов текущих подходов, которые вы использовали, такие как RNN и SARIMA, становятся очевидны их недостатки при длительном прогнозировании. Ошибки накапливаются, и возможны значительные отклонения от реальных значений.
Ключевым вопросом является ваше предложение разделить данные на 365 различных наборов (по одному набору на каждый день года) и обучить отдельные модели для каждого из них. Хотя такой подход может минимизировать аккумуляцию ошибок, он требует значительных вычислительных ресурсов и может оказаться не самым устойчивым в долгосрочной перспективе из-за его сложности и зависимости от количества моделей.
Применение
Основываясь на этих наблюдениях, стоит рассмотреть более комплексный подход, который сочетает в себе возможности перечисленных выше методов, а именно:
-
Гибридные модели: Рассмотрите возможность воспроизведения процесса прогнозирования с использованием гибридной модели. Например, можно использовать нейронные сети для улавливания нелинейных отношений и трендов в данных в сочетании с моделями ARIMA для краткосрочных сезонных изменений. Это позволит модели адаптироваться к различным временным аспектам данных.
-
Спектральный анализ: Включение Преобразования Фурье позволит проверить наличие скрытых периодичностей в данных, которые могут быть не очевидны на первый взгляд. Ранжирование частотных компонент может помочь в выявлении значимых аспектов сезонности, которые должны быть учтены при обучении модели.
-
Многовариантные алгоритмы прогнозирования: Использование алгоритмов, которые могут обрабатывать сразу несколько аспектов данных, таких как Facebook Prophet, который разработан для анализа временных рядов с учётом трендов и перерывов. Он позволяет учитывать сезонные вариации и аномалии, и может дать более правдоподобные долгосрочные прогнозы.
-
Кросс-валидация и регуляризация: Для предотвращения переобучения в нейронных сетях, можно использовать методы регуляризации, такие как Dropout, которые помогают обобщить модель. Стратегии кросс-валидации усредняют ошибки модели на обучающей выборке и минимизируют возможности её переобучения.
В заключение, подход к прогнозированию временных рядов должен быть комплексным и учитывать все наблюдаемые явления в данных. Гибридизация моделей, использование спектральных методов, и лекгацистские алгоритмы могут предложить значительные улучшения в точности и надежности долгосрочных прогнозов. Главное, учесть характер данных и их уникальные особенности, выбрать подходящий инструмент и адаптировать модели под специфические требования вашей задачи.