Модель машинного обучения для прогнозирования временных рядов.

Вопрос или проблема

Этот вопрос имеет три подчасти, ответ на каждую из которых, вероятно, не требует большого текста. Надеюсь, это нормально.

Я пытаюсь понять прогнозирование временных рядов с использованием машинного обучения. У меня есть целевая переменная $y_t$, и предположим, есть две другие переменные $x_t,z_t$ (например, если $y_t$ — это спрос на товар, $x_t$ может быть типом товара или его ценой и т. д.). Также, скажем, я использую модель случайного леса, потому что читал, что она в целом работает хорошо “из коробки”.

i) Насколько я понимаю, если я включу $y_{t-1}$ в качестве предиктора, модель может просто научиться предсказывать $y_t=y_{t-1}$, например, есть автокорреляция с лагом $1$. С учетом этого, плохо ли включать $y_{t-1}$ как признак?

ii) Каждый из предикторов $x_t,z_t$ может иметь одну или другую типичную характеристику временного ряда, такую как нестационарность, автокорреляцию или сезонность. Есть ли какой-то специальный метод, которому я должен следовать, или преобразование (для предиктора), которое я должен сделать, если у какого-либо из предикторов есть какая-либо специальная характеристика?

iii) Обычно какие существуют лучшие практики для такого прогнозирования? Моя текущая мысль: использовать $x_t,z_t$ как предикторы без преобразования. Использовать ARIMA с параметрами, подобранными с помощью поиска по сетке, для подгонки под обучающие данные и валидации. Использовать это как базу. Наконец, использовать случайный лес для предсказания разностного временного ряда $y_t-y_{t-1}$ с использованием $x_{t-1},z_{t-1}$ в качестве предикторов и сравнить с базой. Я что-то упускаю или мне следует рассмотреть что-то дополнительное?

Заранее спасибо!

i) Временные ряды учатся предсказывать значения на основе множества прошлых последовательностей. Как и другие модели машинного обучения, они используют тренировочные и валидационные наборы данных. Следовательно, $y(t)$ — это ваши целевые данные. Вы можете предсказать $t+1$ или несколько шагов вперед, но, как правило, чем дальше вы предсказываете, тем хуже прогноз.

ii) Это зависит от используемой вами модели. LSTM разработаны для прогнозирования многих различных динамических поведений. С другой стороны, ARIMA — это чисто статистическая модель прогнозирования и более ограничена по временным диапазонам, чем LSTM, и не всегда может выявлять сезонность (используйте SARIMA вместо этого). RNN хорошо подходят для небольших наборов данных. Многие модели прогнозирования чувствительны к шуму, его уменьшение может улучшить результаты. Я рекомендую изучить их публикации, они очень интересны. Например, LSTM использует около 10 различных алгоритмов обучения.
https://www.researchgate.net/publication/13853244_Long_Short-term_Memory

iii) Сначала используйте модели, которые легко реализовать, например, случайный лес. Затем увеличьте сложность, используя комбинированные модели, такие как SARIMA, GRU или LSTM. В зависимости от ваших данных некоторые модели будут работать лучше других, поэтому хорошей идеей будет провести тестовый стенд для мониторинга нескольких моделей прогнозирования.

Вот хороший блокнот, который объясняет временные ряды, используя RNN, LSTM и GRU:
https://github.com/ageron/handson-ml2/blob/master/15_processing_sequences_using_rnns_and_cnns.ipynb

Ответ или решение

Модели машинного обучения для прогнозирования временных рядов: всесторонний обзор

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

i) Включение $y_{t-1}$ в качестве предиктора

Вы правы в своем предположении о том, что использование $y_{t-1}$ в качестве предиктора может привести к тому, что модель будет просто предсказывать текущее значение $yt$ как предыдущее значение $y{t-1}$. Это связано с автокорреляцией, которая может присутствовать в данных временных рядов. Однако включение $y_{t-1}$ не всегда является плохой практикой:

  • Польза от использования лаговых значений: Временные ряды часто содержат последовательности и паттерны, которые полезны для прогнозирования. Включение лаговых значений может помочь захватить эти паттерны, особенно если существует выраженная автокорреляция.
  • Регуляризация и предотвращение переобучения: Если модель правильно настроена (например, с помощью регуляризации), она может использовать $y_{t-1}$ как дополнительный аспект, а не как единственный источник информации.

Рекомендуется провести анализ автокорреляции, чтобы определить, какие лаговые значения лучше всего подходят для вашей модели.

ii) Специальные методы и преобразования для предикторов

Как вы упомянули, предикторы $x_t$ и $z_t$ могут иметь различные временные характеристики, такие как нестационарность, автокорреляцию и сезонность. Вот несколько методов и преобразований, которые следует рассмотреть:

  • Стационаризация: Статистические модели, такие как ARIMA, работают лучше с стационарными данными. Примените разности (differencing) для устранения трендов и 시즌ности.
  • Преобразование Бокса-Кокса: Это помогает достичь нормальности распределения и устранить гетероскедастичность в предикторах.
  • Применение скользящих средних и экспоненциального сглаживания: Для сглаживания шумов и лучше выделения трендов.
  • Модели глубокого обучения: Как вы отметили, архитектуры LSTM могут быть полезны для выявления сложных закономерностей в данных с учетом различных паттернов.

Понимание характеристик ваших данных и преобразование предикторов – ключ к успешному прогнозированию.

iii) Лучшие практики для прогнозирования временных рядов

В вашей стратегии есть несколько важных аспектов, которые хорошо структурированы. Вот дополнительные рекомендации, которые помогут улучшить прогнозирование:

  1. Сравнение нескольких моделей: Используйте базовые модели, такие как ARIMA, и более сложные методы, такие как глубокие сети (LSTM, GRU), чтобы выявить, какая модель лучше работает на ваших данных.

  2. Кросс-валидация: Проведение временной кросс-валидации (например, walk-forward validation) позволяет лучше оценить обобщающую способность вашей модели, особенно в контексте временных рядов.

  3. Гиперпараметрическая настройка: Не забывайте о важности поиска гиперпараметров для models random forest и ARIMA, чтобы повысить эффективность предсказаний.

  4. Анализ остатков: Проверка остатков (residuals) модели на наличие автокорреляции и нормального распределения помогает убедиться в адекватности модели.

  5. Визуализация данных: Используйте графические методы для анализа исходных данных и остатков, чтобы лучше понять структуру и возможные паттерны.

Заключение

Ваша первоначальная идея использовать $x_t$ и $z_t$ как предикторы и сравнить результаты моделей является правильной. Объединение различных подходов с тестированием моделей даст вам представление о том, какая из применяемых моделей работает лучше всего. Управление сложностью моделей и тщательный анализ данных позволят достичь надежных результатов в прогнозировании временных рядов.


Если у вас возникнут дополнительные вопросы или потребуется более глубокий анализ определённых аспектов, не стесняйтесь обращаться.

Оцените материал
Добавить комментарий

Капча загружается...