多元时间序列二元分类

数据挖掘 机器学习 Python 神经网络 深度学习 时间序列
2021-09-23 15:47:15

我有连续的(时间序列)数据。该数据是多变量的。每个特征都可以表示为时间序列(它们都是每天计算的)。这是一个例子。

Days    F1  F2  F3  F4  F5  Target
Day 1   10  1   0.1 100 -10 1
Day 2   20  2   0.2 200 -20 1
Day 3   30  3   0.3 300 -30 0
Day 4   40  4   0.4 400 -40 1
Day 5   50  5   0.5 500 -50 1
Day 6   60  6   0.6 600 -60 1
Day 7   70  7   0.7 700 -70 0
Day 8   80  8   0.8 800 -80 0

F1, F2, .. F5 是我的功能,Target 是我的二进制类。如果我使用 3 的窗口大小,我可以将我的特征转换为时间序列数据。然后,feat_1 将有 [10,20,30],feat_2 将有 [1,2,3] 等等。窗口大小为 3,我有 5 个特征 * 3 个窗口大小,如果写在同一个向量中,总共有 15 个特征。

这种方法的问题是把它们放在同一个向量中可能会导致一些问题,因为特征值不同

多元时间序列示例(1 个网络中的 15 个特征):

[10, 20, 30, 1, 2, 3, 0.1, 0.2, 0.3, 100, 200, 300, -10, -20, -30]
[20, 30, 40, 2, 3, 4, 0.2, 0.3, 0.4, 200, 300, 400, -20, -30, -40]
....
[60, 70, 80, 6, 7, 8, 0.6, 0.7, 0.8, 600, 700, 800, -60, -70, -80]

另一种选择是为具有相同目标的每个特征创建单独的时间序列网络(主要是 RNN、LSTM 或 CNN 或它们的组合),然后组合它们的结果。在这种情况下,我有 5 个不同的网络,它们都是单变量时间序列二进制预测。

具有单变量时间序列数据的不同网络示例(5 个网络中的 3 个特征):

[10, 20, 30]
...                            This is for network 1
[60, 70, 80]

[1, 2, 3]
...                            This is for network 2
[6, 7, 8]

...

[-10, -20, -30]
...                            This is for network 5
[-60, -70, -80] 

这个问题是,即使我将它们的结果放入另一个网络,我也可能会丢失特征相关性的信息。

我的问题是,在处理多变量时间序列问题时使用哪种方法最好?我想使用第一种方法,但价值差异让我担心。第二种方法更容易,但我担心我可能会丢失一些重要信息。

1个回答

您可以将所有特征作为输入添加到 RNN/LSTM (Day #, F1, F2, ... F5) 和二进制类作为输出。

本文有一个此类网络的示例。