LSTM для многошагового («блочного») прогнозирования временных рядов с экзогенными переменными во время тестирования - PullRequest
0 голосов
/ 22 января 2019

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

series_scaled   exog1   exog2   target
0   0.000000    0.0     0.0     NaN
1   0.000000    1.0     0.0     NaN
2   0.084844    1.0     0.0     NaN
3   0.169688    1.0     0.0     NaN
4   0.254531    1.0     0.0     NaN
5   0.339375    1.0     0.0     0.000000
6   0.424219    1.0     0.0     0.000000
7   0.509063    0.0     0.0     0.084844
8   0.523664    0.0     0.0     0.169688
9   0.523437    0.0     0.0     0.254531
  • мы хотим «оглянуться назад» на некоторое количество временных шагов (здесь 5) при обучении
  • мы хотим прогнозировать («смотреть вперед») некоторое количество временных шагов (здесь также 5)
  • входные данные имеют несколько особенностей (здесь количество и две экзогенные переменные)

Я написал функцию, которая принимает входные данные и цели для создания: X_data, имеющий форму (238, 5, 3) (количество временных шагов, look_back, количество объектов) Y_data, имеющий форму (238, 5) (количество временных шагов, look_forward)

Таким образом, в основном в этом случае LSTM обучается на всех, кроме последних 5 входных данных, затем прогнозирует последние 5 в течение «тестового» периода (для простоты обычно тестирование выполняется примерно в 50 шагов).

То есть последние 5 величин прогнозируются как «блок», а не как скользящий прогноз (где каждая новая оценка вводится в модель в качестве входных данных для следующего временного шага).

Есть ли способ использовать экзогенные данные для такого типа прогноза блока?
То есть я хотел бы ввести (в течение тестового периода) значения экзогенных переменных, чтобы от них зависел прогноз теста.

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

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

Надеюсь, я ясно дал понять. спасибо!

...