Получение повторяющегося шаблона из многошагового прогнозирования данных временных рядов с использованием LSTM - PullRequest
1 голос
/ 04 марта 2020

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

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

Идея для многоэтапного прогнозирования заключается в следующем:

  1. Взять timestep_count существующую последовательность, запустить predict() на нем и получите y_dimension выходы:

    X т-9 , Х т-8 , Х т-7, Х т-6 , Х т-5 , Х т-4 , Х т-3 , Х т -2 , X т-1 , Х т ==> Модель ==> P т + 1 , P т + 2 , ... P t + m

  2. Возьмите 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

  3. Запустите этот новый X через тот же цикл, пока мы не получим требуемые future_steps прогнозы.

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

Это правильный подход для многоэтапного прогнозирования ?

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

Ссылка Colab на рабочий образец: https://colab.research.google.com/drive/1ImLBSmM875OouCLoCwh6JeFKFCmwLbby

Обратите внимание: ноутбук Colab имеет ограниченный набор для обучения. В реальном производстве мы обучаем от 10000 до 50000 образцов и все еще видим проблему.

1 Ответ

0 голосов
/ 04 марта 2020

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

Как еще одно наблюдение ... данные, которые вы пытаетесь предсказать, абсолютно случайны ... нет никакой связи между входами и выходами. Должен быть способ соотнести вход и выход (верно?). Иначе, что вы моделируете?

Я создал альтернативный набор данных и формулировку проблемы для вас. Это связано, и вы можете взглянуть на это здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...