在处理时间序列预测时,我看到大多数人在使用LSTM模型时遵循以下步骤:
- 获取、清理和预处理数据
- 提取验证数据集,以便将来与模型预测进行比较
- 初始化并训练LSTM模型
- 使用验证数据集的副本,进行与训练数据完全相同的预处理
- 使用训练好的模型对转换后的验证数据进行预测
- 评估结果:预测与验证数据的对比
然而,如果模型准确无误,如何进行超出验证期的预测呢?
以下代码只接受与训练数据相同方式转换的数据,但对于超出验证期的预测,你没有可供模型使用的输入数据。那么,人们是如何做的呢?
# 预测与验证
predictions = model.predict(transformed_validation)
# 未来预测
future_predictions = model.predict(?)
回答:
为了预测第i个值,你的LSTM模型需要最近的N个值。因此,如果你想要进行预测,你应该使用每个预测来预测下一个值。
换句话说,你需要循环执行类似以下的操作:
prediction = model.predict(X[-N:])
X.append(prediction)
正如你所猜测的,你将输出添加到输入中,这就是为什么你的预测可能会发散并放大不确定性。
其他模型在预测远期未来时可能更稳定。