使用 LSTM 进行持续学习和预测

数据挖掘 喀拉斯 时间序列 lstm
2022-02-28 14:32:22

我正在尝试开发一个模型来根据之前的观察预测商品价格的走势。该模型应该学习常见的技术分析模式,例如头肩顶。所以,我认为我应该使用有状态的 LSTM,以便它保持长期状态来跟踪技术分析模式。

另一方面,随着数据集每天更新,即添加新的观察值,我需要模型每天不断学习和预测。所以,为了更新每个新观察的模型参数,我认为我应该使用batch_size=1.

如果我使用最后 N 个观测值来预测接下来的 M 个步骤,则模型的输入张量将具有以下形状(1, N, num_features)

X1,X2,...,XNY1,Y2,...,YM

问题:

  • 为什么我们应该reset_states在训练集训练之后和测试集预测之前?我认为我们不应该因为 TA 模式可能一半在训练集中,一半在测试集中。如果我们重置状态,模型就无法识别这种模式。

  • 我可以输入reset_states不同商品的数据吗?因为我只需要模型来学习 TA 模式而不是商品的特定特征。如果是这样,我怎样才能恢复states对第一个商品的预测?

1个回答

按顺序回答您的问题:

  1. LSTM(或任何时间序列模型)的重点是预测以前看不见的值。如果状态没有被重置——那么就有数据泄露的风险——来自训练集的预测将进入测试集。这意味着您的模型将在现有数据集上表现良好 - 但在新/未见数据上表现不佳。这违背了实现时间序列模型的目的。

  2. 根据模式的相似程度,它可能是一种选择。然而,这只是我个人的经验,LSTM 在预测商品价格方面并不是特别有效——主要原因是这些模型往往会在预测中延续过多的波动性,这往往会干扰数据的整体趋势。以下是使用 LSTM 预测油价的示例,您可能会感兴趣:LSTM 在时间序列分析中总是有效吗?油价案例研究