Чтобы уточнить, я тренирую 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 и подготовить входные и выходные данные, только этот вопрос остается.
В данный момент я рассматриваю «скользящий» прогноз, при котором во время теста каждое значение прогноза каждого временного шага добавляется к входным данным. Таким образом, внешние переменные также могут быть установлены для этого скользящего ввода.
Надеюсь, я ясно дал понять. спасибо!