在包含每个时间步长的多个输入的时间序列上训练 LSTM

数据挖掘 时间序列 lstm 预处理 预测
2022-03-09 00:18:19

我正在尝试训练 LSTM 以便将其用于预测。该问题基本上是一个多元多步时间序列问题。

这只是一个实验,可以查看统计模型(ARIMA、Holts-Winters 等)和神经网络如何针对给定问题进行比较。

由于我的数据集非常适合统计模型,因此在尝试对其进行格式化以训练 LSTM 时遇到了麻烦,因为我在一个时间步长上有多个条目(对应于不同的实体)并且我真的不知道如何处理它因为序列不再受观察时间限制。假设我的数据集如下例所示:

time | ent | obs 

  1 ---   1 ------      5 

  2 ---   1 ------     6

  2 ---   5 ------     1

  3 ---   2 ------     7

  3 ---   5 ------     4 

如您所见,并非每个实体在任何给定时间都有一个条目,一个时间步长可以有多个条目。

我想为每个实体训练 LSTM,但对于大多数实体来说,我的数据太少了。一些线程给了我将每个实体分成批次的想法,但观察的数量不是恒定的,所以它对我不起作用。

你认为我应该如何解决这个问题?

1个回答

这个问题的答案很大程度上取决于您感兴趣的变量之间的关系。

  • 如果您对时间和观察值之间的关系感兴趣,那么将实体视为不同批次可能是有意义的,假设单个实体的角色对您来说并不重要。在这种情况下,例如,您可以将每个实体的平均值(或整体平均值)添加到具有缺失值的所有实体中,以获得每个实体的恒定观察数。但是您也可以简单地平均每个时间戳中的所有值,并包括其他功能作为最小值和最大值。这很可能会产生更好的结果。

  • 如果您对实体和观察值之间的关系感兴趣,这是时间序列中缺少数据的问题。有很多技术可以帮助您解决这个问题,从简单地估算平均值到更复杂的方法,如卡尔曼滤波器但是,最后,您将不得不问自己为什么缺少这些观察结果并选择适当的方法。但是,由于您在实验中使用时间相关模型,我假设您对此不感兴趣。

  • 如果您对所有三个变量的相互关系感兴趣,那么您正在处理面板数据。在这种情况下,我看不到用 LSTM 建模的合理可能性。也许另一种 RNN 架构可以工作,但是,我发现的唯一一篇论文是Mingyuan 等人的 Tensorial Recurrent Neural Networks for Longitudinal Data Analysis 。但最终,这并不重要,因为 ARIMA 模型也不适合面板数据。通常,您对此类数据使用差异中的差异方法。在这种情况下,我建议为您的实验更改数据集。