LSTM在用于时间序列分析时,我仍然对回顾主题感到困惑。如果我有每小时数据并且我想用多个预测器预测接下来的 6 小时,我应该在准备训练集时回顾 6 小时吗?
或者
我是否应该回顾一小时(班次 1)然后预测下一小时并获取该预测值并将其反馈以预测下一个 6 小时之后的值?
这个概念对我来说还是有点模糊LSTM。任何想法将不胜感激。
LSTM在用于时间序列分析时,我仍然对回顾主题感到困惑。如果我有每小时数据并且我想用多个预测器预测接下来的 6 小时,我应该在准备训练集时回顾 6 小时吗?
或者
我是否应该回顾一小时(班次 1)然后预测下一小时并获取该预测值并将其反馈以预测下一个 6 小时之后的值?
这个概念对我来说还是有点模糊LSTM。任何想法将不胜感激。
第二个选项听起来很有趣,但最好不要这样做:错误会总结起来,而且更难追踪错误的来源。就像您在第一个小时有一些错误,将其反馈到网络中,预测第二个小时在那里会出现错误,并且无法真正判断其中有多少是由第一个小时的错误引起的。
除此之外,我还没有看到任何使用这种反馈机制的应用程序。
所以一时我们想预测值取决于正确的?你应该使用取决于作为输入并使用 6 个值作为目标/输出。然后当你得到新信息时,你添加并使用它来更新 LSTM 的单元状态和隐藏状态并获得新的输出。喂食预测的问题是错误会累积,尽管序列生成模型(如 seq2seq)确实会发生这种情况。然后你要做的是在训练期间使用两种类型的训练,一种使用当前预测,另一种使用已知训练数据,两者都只占一小部分时间。这被称为“教师强迫”。
如果我们使用我的第一个建议,这里将解释如何准备数据。要训练你的模型,你需要使用滞后来准备你的目标。假设我们有作为一维,我们试图预测接下来的 6 个值,你会得到和:
| t | x | y |
| 0 | 0 | [-1, 1, 2, 3, 2, 1] |
| 1 | -1 | [1, 2, 3, 2, 1, 0] |
| 2 | 1 | [2, 3, 2, 1, 0, -1] |
| 3 | 2 | [3, 2, 1, 0, -1, -2] |
| 4 | 3 | NaN |
| 5 | 2 | NaN |
| 6 | 1 | NaN |
| 7 | 0 | NaN |
| 8 | -1 | NaN |
| 9 | -2 | NaN |
最后六个步骤没有目标,因为它在我们的训练集中不可用。损失函数将是每个时间步长六个预测的(加权)均方误差。如果您真的不想丢弃数据,您可以创建一个自定义损失函数,该函数可以利用只有 4 个目标可用这一事实,因为我们已接近尾声,但这会使事情复杂化。
编辑:关于标题中的问题,你想尽可能地回顾过去,这基本上意味着你总是从.