使用(?) LSTM 进行多变量时间序列分类

Posted

技术标签:

【中文标题】使用(?) LSTM 进行多变量时间序列分类【英文标题】:Multiple multivariate time series classification with(?) LSTM 【发布时间】:2021-05-03 17:23:11 【问题描述】:

我对时间序列分类比较陌生,正在寻求帮助:

我有一个包含 5000 个多元时间序列的数据集,每个时间序列由 21 个变量组成,时间段为 3 年,类别信息为 1 或 0。我想做的是对包含 21 的新输入进行分类3 年内的变量。

就目前而言,经过几天的研究,我还没有找到(或显然不理解)将多个多元时间序列输入 LSTM 的方法。有没有可能的解决方案?

我目前的想法是将 5000 个时间序列“合并”为一个,并为每个时间序列添加另一个单独的变量,以明确区分每个部分......我完全不确定这是否有效或完全愚蠢......

我很高兴得到任何帮助或提示!!!如果我需要进一步澄清任何事情,请询问,我会立即这样做!

【问题讨论】:

您能否澄清这 5000 个时间序列中的每一个是否涵盖相同的时间段并具有相同的 21 个变量?它们之间有什么区别是它们不同的产品、位置、机器等。了解差异和问题背景将有助于回答。 【参考方案1】:

我正在构建一个类似的模型,但用于图像。 在您的情况下,假设您的数据结构如下:

0000: x1, x2, x3....x21
0001: x1, x2, x3....x21
0002: x1, x2, x3....x21
.
.
.
5000: x1, x2, x3....x21

如果您想仅使用一个观察值(即时间步长为 1)来预测结果,请构建数据集,使时间序列的下一步是当前步长的输出。这里箭头标记后的变量是你的目标变量。

0000: x1, x2, x3 ....x21 ->> 0001: x1, x2, x3 .... x21
0001: x1, x2, x3 ....x21 ->> 0002: x1, x2, x3 .... x21
0002: x1, x2, x3 ....x21 ->> 0003: x1, x2, x3 .... x21
.
.
.
4999: x1, x2, x3 ....x21 ->> 5000: x1, x2, x3 .... x21

如果您想有多个时间步长作为输入,例如 3,那么第 4 个时间步长将是您的第一个时间步长的目标变量,依此类推:

[0000: x1, x2, x3....x21
0001: x1, x2, x3....x21
0002: x1, x2, x3....x21] ->> [0003: x1,x2,x3 .... x21]
[0001: x1, x2, x3....x21
0002: x1, x2, x3....x21
0003: x1, x2, x3....x21] ->> [0004: x1,x2,x3 .... x21]
.
.
.
[4997: x1, x2, x3....x21
4998: x1, x2, x3....x21
4999: x1, x2, x3....x21] ->> [5000: x1,x2,x3 .... x21]

所以重要的部分是正确定义数据集,LSTM 可以很好地处理这些数据。

【讨论】:

以上是关于使用(?) LSTM 进行多变量时间序列分类的主要内容,如果未能解决你的问题,请参考以下文章

基于LSTM+FCN处理多变量时间序列问题记录

如何在 keras 中使用 Conv1D 和双向 LSTM 对每个时间步进行多类分类?

使用 LSTM Keras 的序列数据进行多类分类不起作用

如何为 LSTM 重塑数据 - 时间序列多类分类

在 TensorFlow 中使用多对多 LSTM 进行视频分类

保姆级教程使用 LSTM 进行多变量时间序列预测