Я пытался спрогнозировать временной ряд с экзогенными переменными и добился успеха в прогнозировании с помощью моделей SARIMAX, я пытался сделать то же самое, используя модели RNN (в частности, модель LSTM), но не смог найти способ реализовать экзогенную переменную ( у меня есть полная история), но эта переменная влияет на временной ряд и, следовательно, ее необходимо учитывать. Очень признателен за вашу помощь Спасибо
Есть ли способ использовать LSTM для прогнозирования временного ряда с экзогенной переменной, как при использовании моделей SARIMAX?
- Не забудьте подробнее рассказать о том, как вы успешно включаете экзогенные переменные в свои модели SARIMAX и как / где вам кажется, что вы сталкиваетесь с трудностями при включении их аналогичным образом в свои модели RNN? 12.06.2020
- Привет, @rigsby. Я использовал атрибут exog в функции SARIMAX: model = SARIMAX (train_data, exog = exogenous_train, order = .., season_order = ...), а затем, чтобы предсказать, я использовал прогноз, который дал мне возможность определить экзогенную переменную для прогноз явно: fc = model.forecast (steps, exog = exogenous_test). Однако я не могу понять, как сделать то же самое в моделях LSTM. 12.06.2020
Ответы:
Проверьте cond-rnn. Это библиотека, которая реализует то, что вы ищете.
Полезно, если у вас есть данные временных рядов с другими входными данными, которые не зависят от времени. Например, данные о погоде из двух разных городов: Парижа и Сан-Франциско. Вы хотите спрогнозировать следующую температуру на основе исторических данных. Но в то же время вы ожидаете, что погода будет меняться в зависимости от города. Вы также можете:
Совместите вспомогательные функции с данными временных рядов (некрасиво!).
Объедините вспомогательные функции с выходными данными слоя RNN. Это своего рода корректировка после RNN, поскольку слой RNN не увидит эту вспомогательную информацию.
Или просто воспользуйтесь этой библиотекой! Короче говоря, инициализируйте состояния RNN с помощью изученного представления условия (например, Париж или Сан-Франциско). Таким образом вы элегантно моделируете P (x_ {t + 1} | x_ {0: t}, cond).
И им действительно легко пользоваться
outputs = cond_rnn.ConditionalRNN(units=NUM_CELLS, cell='LSTM')([inputs, cond])