【问题标题】:Why does my multivariate LSTM keeps predicting zeroes?为什么我的多元 LSTM 不断预测零?
【发布时间】:2020-05-08 09:44:33
【问题描述】:

我的时间序列数据有 2 个特点:

                 0         1
1/22/20      555.0      17.0
1/23/20      654.0      18.0
1/24/20      941.0      26.0
1/25/20     1434.0      42.0
1/26/20     2118.0      56.0
...            ...       ...
5/3/20   3506729.0  247470.0
5/4/20   3583055.0  251537.0
5/5/20   3662691.0  257239.0
5/6/20   3755341.0  263831.0
5/7/20   3845718.0  269567.0

[107 rows x 2 columns]

我正在尝试创建一个多元 LSTM 来对每一列进行预测。处理完数据后,训练和测试数组的形状如下:

Legend:  (samples, time steps, features)
x_train: (67, 4, 2)
y_train: (67, 2)
x_test:  (26, 4, 2)
y_test:  (26, 2)

这是模型定义:

forecast_horizon = 4
feature_n = 2
early_stopping = EarlyStopping(patience=50, restore_best_weights=True)

model = Sequential()
model.add(LSTM(5, input_shape=(forecast_horizon, feature_n)))
model.add(Activation("relu"))
model.add(Dropout(0.1))
model.add(Dense(feature_n))
model.add(Activation("relu"))
model.compile(loss="mean_squared_error", optimizer="adam")
history = model.fit(x_train, y_train, epochs=1000, batch_size=1, verbose=0,
                    callbacks=[early_stopping], validation_split=0.2)

预测全为零。 test_predictions = model.predict(x_test) 的输出为:

[[0.00839295 0.007538  ]
 [0.         0.        ]
 [0.00946797 0.00663883]
 [0.         0.        ]
 [0.         0.        ]
  ...        ...
 [0.0007435  0.        ]
 [0.00116019 0.00032421]
 [0.         0.        ]
 [0.         0.        ]
 [0.         0.        ]]

在查看训练损失时,模型似乎没有很好地学习。

这是简单地训练模型更长时间并调整其超参数的问题,还是有其他可能影响这一点的事情?如何实现合适的多元 LSTM?

【问题讨论】:

  • 训练前你的 y 缩放了吗?
  • @MarcoCerliani 是的,我取了数据的 ln,然后在将其提供给网络之前对其进行了 3 次差分。
  • 预测时不要忘记调整比例

标签: python tensorflow machine-learning keras lstm


【解决方案1】:

批量大小为 1 表示您的模型权重是根据 1 个观察结果调整的,而不是针对少数几个观察结果进行优化。常见的批量大小在 16 到 32 之间,但可以根据型号进行调整。

LSTM 模型也需要数千次观察,因此请尽可能获取更多训练数据

架构也可能有所不同,因此最好尝试多种不同的方法,看看哪种方法效果最好。你可以在这里找到更多信息:https://machinelearningmastery.com/how-to-develop-lstm-models-for-time-series-forecasting/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-30
    • 1970-01-01
    • 2020-05-15
    • 1970-01-01
    • 1970-01-01
    • 2018-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多