Мы используем LSTM
для изучения последовательностей на данных временных рядов. Задача состоит в том, чтобы делать многоэтапные прогнозы, используя обученные модели. Мы используем стандартную многослойную модель Sequential
.
Модель хорошо изучает шаблон и может тщательно воспроизводить все обученные данные. Тем не менее, когда дело доходит до многоэтапного прогнозирования, оно, похоже, попадает в некую повторяющуюся модель. (см. второй график в записной книжке Colab)
Идея для многоэтапного прогнозирования заключается в следующем:
Взять timestep_count
существующую последовательность, запустить predict()
на нем и получите y_dimension
выходы:
X т-9 , Х т-8 , Х т-7, Х т-6 , Х т-5 , Х т-4 , Х т-3 , Х т -2 , X т-1 , Х т ==> Модель ==> P т + 1 , P т + 2 , ... P t + m
Возьмите y_dimension
предсказанные значения (P
) и pu sh их в конце X
.
Х т-7 , Х т-6 , Х т-5 , Х т-4 , Х т-3 , Х т-2 , Х т-1 , Х т , П т + 1 , P t + 2 ==> Модель ==> P t + 3 , P t + 4 , ... P t + 2 + m
Запустите этот новый X
через тот же цикл, пока мы не получим требуемые future_steps
прогнозы.
Проблема заключается в том, что этот метод генерирует повторяющийся шаблон, как видно на втором графике в записной книжке Colab.
Это правильный подход для многоэтапного прогнозирования ?
Другое решение состоит в том, чтобы обучить модель давать большее число future_predictions
. Но наше требование состоит в том, чтобы предсказывать много временных шагов в будущем, и мы не уверены, является ли это правильным подходом.
Ссылка Colab на рабочий образец: https://colab.research.google.com/drive/1ImLBSmM875OouCLoCwh6JeFKFCmwLbby
Обратите внимание: ноутбук Colab имеет ограниченный набор для обучения. В реальном производстве мы обучаем от 10000 до 50000 образцов и все еще видим проблему.