LSTM用于在测试过程中使用外在变量进行多步(“分块”)时间序列预测

时间:2019-01-22 14:27:08

标签: deep-learning time-series lstm

为澄清起见,我正在针对多变量输入训练LSTM:数量时间序列和两个二进制外生变量。

series_scaled   exog1   exog2   target
0   0.000000    0.0     0.0     NaN
1   0.000000    1.0     0.0     NaN
2   0.084844    1.0     0.0     NaN
3   0.169688    1.0     0.0     NaN
4   0.254531    1.0     0.0     NaN
5   0.339375    1.0     0.0     0.000000
6   0.424219    1.0     0.0     0.000000
7   0.509063    0.0     0.0     0.084844
8   0.523664    0.0     0.0     0.169688
9   0.523437    0.0     0.0     0.254531
  • 我们想在训练时“回顾”一些时间步长(此处为5)
  • 我们要预测(“展望”)一些时间步长(此处也是5)
  • 输入数据具有多个特征(这里有一个数量和两个外生变量)

我编写了一个函数,该函数使用输入和目标来创建: 具有形状(238、5、3)的X_data(时间步数,look_back,要素数) Y_data,形状为(238,5)(时间步数,look_forward)

因此,基本上在这种情况下,对LSTM进行除最后5个输入数据之外的所有训练,然后在“测试”期间预测最后5个(为简单起见,通常需要大约50个时间步长)。

也就是说,将最后5个数量作为“块”而不是作为滚动预测来预测(其中,每个新的估计值将作为下一个时间步的输入数据输入模型中)。

有没有办法将外来数据用于这种区块预测?
也就是说,我想输入(在测试期间)外生变量的值,以便测试预测依赖于它们。

我花了一些时间了解如何为LSTM模型确定输入和输出的尺寸以及准备输入和输出数据,只是这个问题仍然存在。

目前,我正在考虑“滚动”预测,其中在测试期间,每个时间步长预测值都会附加到输入数据中。这样,也可以为此滚动输入设置外生变量。

我希望我已经说清楚了。谢谢!

0 个答案:

没有答案