LSTM для временных рядов с дополнительными регрессорами

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

У меня есть набор данных, состоящий из еженедельных продаж 3000 магазинов за последние 5 лет, и я построил LSTM для прогнозирования продаж на следующий год, исходя из продаж за предыдущий год. На каждом временном шаге $t$ признаками являются предыдущие 52 наблюдения.

$$X_{t-52:t} \rightarrow LSTM \rightarrow \hat{X}_{t:t+52}$$

LSTM обучается с использованием скользящего окна по временным рядам, начиная с входа $X_{0:52}$ и выхода $X_{52:104}$ и заканчивая входом $X_{T-52:T}$ и выходом $\hat{X}_{T:T+52}$, так что состояние ячейки строится на протяжении всей серии, чтобы в конечном итоге предсказать $\hat{X}_{T:T+52}$.

Однако у меня также есть набор данных $E$ событий, для которых мне известны даты как в прошлом, так и в будущем. Это события, которые могут влиять на продажи, такие как Рождество или Пасха. Он закодирован как бинарный вектор длиной n_events=30 для каждой недели $t$. Я задаюсь вопросом, как лучше всего включить эти данные в мой прогноз. В идеале я хочу, чтобы нейронная сеть могла изучить увеличение или снижение, связанные с каждым событием, и использовать эту информацию в своем прогнозе. Это более сложно, чем сезонность, поскольку некоторые события, такие как Пасха, перемещаются таким образом, что нейронная сеть не может их изучить.

Тем не менее, события на следующий год в любой момент времени $t$ представляют собой тензор формы [n_events, forecasting_horizon] = [36, 52] с 1972 отдельными «признаками», и поэтому он слишком велик, чтобы его realistically включить во входные данные LSTM. Какие другие методы я мог бы использовать, чтобы ввести эти признаки в модель таким образом, чтобы это информировало ее прогноз на следующие 52 недели?

Вам может быть полезна эта ссылка

https://machinelearningmastery.com/time-series-prediction-lstm-recurrent-neural-networks-python-keras/

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

Введение в использование LSTM для прогнозирования временных рядов с дополнительными регрессорами

Ваша задача заключается в прогнозировании продаж для 3,000 магазинов на основе недельных данных за последние пять лет с использованием LSTM (долгосрочной краткосрочной памяти) и дополнительных регрессионных переменных, связанных с событиями, которые могут повлиять на продажи, такими как Рождество и Пасха. В данной статье мы рассматриваем, как интегрировать бинарные векторы событий в вашу LSTM-модель, чтобы она могла лучше адаптироваться к влиянию этих событий.

Применение LSTM для временных рядов

LSTM подходит для работы с временными рядами благодаря своей способности запоминать продолжительные зависимости и обрабатывать последовательные данные. Вы уже установили структуру, где входные данные представляют собой последовательность предыдущих 52 недель, а выход — это прогноз на следующие 52 недели. Однако интеграция дополнительных данных требует определенных подходов.

Проблема большого объема данных

Ваша проблема заключается в том, что данные о событиях имеют слишком большой объем — матрица с 1972 признаками для каждого времени прогноза. Прямое добавление всех этих данных в LSTM может привести к ухудшению производительности из-за увеличения размерности входных данных. Вместо этого стоит рассмотреть несколько стратегий интеграции регрессоров.

Рекомендации по интеграции событий

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

  2. Сжатие данных с помощью PCA: Используйте метод главных компонент (PCA) для уменьшения размерности ваших событийных данных. Это позволит выявить наиболее информативные признаки, сокращая вычислительные затраты. Вы можете сохранить 95% вариации в данных, что позволит избежать перегрузки модели.

  3. Изменение структуры данных: Вместо подачи всех 36 событий в каждый момент времени, попробуйте сформировать сводные переменные. Например, можно создать одну переменную, отражающую общее количество событий в определенный период, или пересчитывать количество активных событий каждую неделю.

  4. Временные метки и фичи: Создайте дополнительные временные метки, отображающие существование каждого события в конкретные недели. Это поможет LSTM выучить, как каждое событие соотносится с продажами, и скорректировать прогноз на основе этой информации.

  5. Конкатенация на уровне слоев: Используйте отдельные слои для обработки временных рядов продаж и бинарных векторов событий. На выходе используйте слой объединения (concatenation), который соединяет выходы LSTM и событийные особенности. Эта архитектура позволит модели эффективно использовать и временные зависимости, и дополнительные признаки.

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

Заключение

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

Полезные ссылки

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

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

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