Предсказать произвольное количество временных шагов с помощью модели LSTM - PullRequest
0 голосов
/ 27 мая 2019

Я слежу за серией учебных пособий по прогнозированию временных рядов с использованием LSTM Models от Джейсона Браунли (https://machinelearningmastery.com/how-to-develop-lstm-models-for-multi-step-time-series-forecasting-of-household-power-consumption/).

). Мои необработанные данные являются одномерными, поэтому используются только метки времени и целевые значения. Что-то вроде:

ds               y
01-01-2019 01:00 1.24
01-01-2019 02:00 1.32

, который в настоящее время я изменяю в формате [n_samples, n_timesteps, n_features], где features = 1 (потому что одномерный) и n_timesteps - это размер окна.

Реализация выполняется с тенорами потока кера. Таким образом, модель (в еепростейшая форма) выглядит примерно так:

model = Sequential()
model.add(LSTM(n_blocks, activation='relu', input_shape=(n_timesteps, n_features)))
model.add(Dense(n_outputs))
model.compile(loss='mse', optimizer='adam')
history = model.fit(
  X_train,
  y_train,
  epochs=num_epochs,
  batch_size=batch_size,
  validation_data=(X_val, y_val),
  shuffle=False,
  )

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

Но моя цель - разработать модель LSTM без подхода скользящего окна, способного прогнозировать произвольное количество временных шагов, аналогично тому, что можно сделать с библиотеками, такими как fbpropphet.(https://facebook.github.io/prophet/).

Так, как данные должны быть изменены (изменены?), И модель должна быть определена иустановлены и используются для прогнозирования.

...