LSTM 多变量,结构化数据

数据挖掘 时间序列 lstm
2022-03-11 17:15:43

我会直接跳到数据的结构,然后我会问问题:

对于从 200 到 500 单位的质量 X,我有 100 秒的 3 个输出值。因此,数据集的前几行如下所示:

t =   1, m = 200, out_1 = a, out_2 = b, out_3 = c
t =   2, m = 200, out_1 = d, out_2 = e, out_3 = f
...
t = 100, m = 200, out_1 = h, out_2 = i, out_3 = j
t =   1, m = 201, out_1 = m, out_2 = n, out_3 = o
etc.

这是质量 = x 100 秒的输出分布:

在此处输入图像描述

现在,我的目标是测试 LTSM 是否可以预测每个质量 100 秒的输出 =

x, x + 1, ..., x + 100 

看过之后

x - 300, x - 299, ..., x - 1

就我而言,我是否也应该将时间用作 input_variable?

我无法完全找到一种方法来构建我的数据,但来自https://machinelearningmastery.com/how-to-develop-lstm-models-for-time-series-forecasting的“多并行输入和多步输出” /似乎是对的但我不知道如何防止它处理以下情况:

...
input from second 98, m = 200
input from second 99, m = 200

output from second 1, m = 201
output from second 2, m = 201
...

没有相关性,不应被视为示例。

你会如何处理这个问题?

我很高兴获得类似问题的链接。我今天尝试了各种方法,但结果并不令人满意。

谢谢你们!安德烈亚斯

更新(我尝试过的)以查看质量的前 50 秒是否可以预测接下来的 50 秒:

使用这个笔记本作为骨架: https ://www.kaggle.com/anshuljdhingra/time-series-data-analysis-using-lstm-tutorial/data

  1. 将数据传递给 series_to_supervised(df.values, 50, 50) 50 输入秒,50 秒输出

    (30100 x 4之前的数据大小,30001 x 400之后的数据大小)

  2. n_train_time = 150 * 100(前 150 个示例,每次 100 秒)

    train_X 的大小 = (15000, 200) train_y 的大小 = (15000, 200)

    test_X 的大小 = (15001, 200) test_y 的大小 = (15001, 200)

    重塑后的 train_X: (15000, 50, 4) 重塑后的 test_X: (15000, 50, 4)

  3. 相同的简单 LSTM 模型,具有:

    model.add(LSTM(100, input_shape=(train_X.shape 1 , train_X.shape[2])))

    和 batch_size=100

batch_size pe 是否应该等于我正在训练的时间窗口?我的逻辑看起来如何?

再次感谢!安德烈亚斯

0个回答
没有发现任何回复~