基于多元时间序列的分类/预测

数据挖掘 机器学习 时间序列 数据科学模型
2021-10-12 00:08:20

因此,我有一个包含许多自变量(X)和结果变量 Y 的时间序列(我想预测,考虑一个 2 类逻辑回归,其中输出为 1 或 0)。请看下面的示例:

Timestamp       X1      X2      X3          X4          Y
1:00            1       0.5     23.5        0           0
1:01            1       0.8     18.7        0           0
1:02            0       0.9     4.5         1           0
….
1:30            1       1.9     5.5         1           1
1:31            0       1.7     4.3         0           1
…
…

现在我想预测或者更确切地说将 Y 分类为 0(稳定)或 1(不稳定)(请注意,当 Y 变为 1 时,它在一定的时间间隔内保持 1,当它为 0 时相同)

所以 Y 将取决于序列变量(请注意,它是一个时间序列,而不是标准回归问题,其中每一行都可以输入算法进行分类,这里的输出取决于一系列输入/行),例如,当 X2 开始增加而 X3 开始减少等等时,Y 可能变为 1(有许多自变量 X1…XN)。

为了解决这个问题,我想的方法是在 Y 变为 1 之前提取 m 小时的数据并对 X 进行一些描述性统计以得出新特征(如 X1 的平均值、X2 的标准差、 X4 等用于提取的数据集)将 X 转换为单行特征向量。这个单行特征向量的结果“Y”是 1,因为我们刚刚在 Y 变为 1 之前提取了数据。所以这样我就可以将时间序列转换为标准的分类/预测问题。同样,我可以参加其他课程,即 Y=0 并遵循相同的过程。

我想到的另一种方法是合并一个序列模型,比如隐马尔可夫模型,其中隐藏状态可能是稳定的(比如 Y=0)和不稳定的(Y=1),然后我会讨论发射和转移概率. 但是考虑到 Y 依赖于许多 X,这个 HMM 将是多变量的。这似乎有点复杂?

任何对上述问题建模的想法都将不胜感激。

1个回答

训练LSTM-RNN以执行直接序列分类。这实质上意味着它将有多个输入和 1 个输出,即标签(0 或 1)。在 Keras/Python 中,这很容易实现,只需确保最后有一个带有 sigmoid 激活的 Dense 层,以便输出介于 0 和 1 之间。根据标记的数据训练网络,然后输出自己贴标签。可以在此处找到有关如何执行此操作的有用教程。最重要的是它本质上处理输入之间的线性/非线性互相关,因此您不必自己探索它们。由于其固有的记忆,它还能够学习输入信号的动态

请记住,总的来说,这是一个非常方便的解决方案,因为它就像一个接受时间序列并“吐出”它们的标签的黑匣子。

这种方法对我来说成功地用于时间序列分类:)