我想预测具有多个变量的时间序列。我正在使用 Keras 的 LSTM 类。
这是我的数据集描述:
我想预测 var1(t-1) 并且我的 X 变量是 var3(t-1) 、 var4(t-1) 、 var5(t-1) 、 var6(t-1) 和 var7(t-1)。
这就是我的模型配置的样子:
{
"data": {
"columns": [
"var1(t-1)",
"var3(t-1)",
"var4(t-1)",
"var5(t-1)",
"var6(t-1)",
"var7(t-1)"
],
"sequence_length": 5,
"train_test_split": 0.80,
"normalise": false
},
"training": {
"epochs": 100,
"batch_size":10
},
"model": {
"loss": "mse",
"optimizer": "nadam",
"save_dir": "saved_models_multi",
"layers": [
{
"type": "lstm",
"neurons": 200,
"input_timesteps": 5,
"input_dim": 5,
"return_seq": true
},
{
"type":"batch_norm"
},
{
"type": "dropout",
"rate": 0.4
},
{
"type": "lstm",
"neurons": 200,
"return_seq": true
},
{
"type":"batch_norm"
},
{
"type": "dropout",
"rate": 0.4
},
{
"type": "dense",
"neurons": 50,
"activation": "sigmoid"
},
{
"type":"batch_norm"
},
{
"type": "dropout",
"rate": 0.2
},
{
"type": "lstm",
"neurons": 200,
"return_seq": false
},
{
"type":"batch_norm"
},
{
"type": "dropout",
"rate": 0.4
},
{
"type": "dense",
"neurons": 25,
"activation": "sigmoid"
},
{
"type":"batch_norm"
},
{
"type": "dropout",
"rate": 0.2
},
{
"type": "dense",
"neurons": 1,
"activation": "linear"
}
]
}
}
这是每层中的参数数量和输出形状:
Layer (type) Output Shape Param #
=================================================================
lstm_1 (LSTM) (None, 5, 200) 164800
_________________________________________________________________
batch_normalization_1 (Batch (None, 5, 200) 800
_________________________________________________________________
dropout_1 (Dropout) (None, 5, 200) 0
_________________________________________________________________
lstm_2 (LSTM) (None, 5, 200) 320800
_________________________________________________________________
batch_normalization_2 (Batch (None, 5, 200) 800
_________________________________________________________________
dropout_2 (Dropout) (None, 5, 200) 0
_________________________________________________________________
dense_1 (Dense) (None, 5, 50) 10050
_________________________________________________________________
batch_normalization_3 (Batch (None, 5, 50) 200
_________________________________________________________________
dropout_3 (Dropout) (None, 5, 50) 0
_________________________________________________________________
lstm_3 (LSTM) (None, 200) 200800
_________________________________________________________________
batch_normalization_4 (Batch (None, 200) 800
_________________________________________________________________
dropout_4 (Dropout) (None, 200) 0
_________________________________________________________________
dense_2 (Dense) (None, 25) 5025
_________________________________________________________________
batch_normalization_5 (Batch (None, 25) 100
_________________________________________________________________
dropout_5 (Dropout) (None, 25) 0
_________________________________________________________________
dense_3 (Dense) (None, 1) 26
=================================================================
Total params: 704,201
Trainable params: 702,851
Non-trainable params: 1,350
_________________________________________________________________
Time taken: 0:00:01.914407
但是,我看到测试数据的 RMSE 值变得非常高。这是我的训练和验证损失图。
我在这里做错了什么?我的模型是否存在过度拟合问题?
请帮忙 。

