Предсказать произвольное количество временных шагов с помощью модели LSTM

Я слежу за серией уроков по прогнозированию временных рядов с использованием моделей LSTM Джейсона Браунли ( 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/).,

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

0 ответов

Другие вопросы по тегам