LSTM评估指标MAE解释

时间:2020-04-04 06:31:11

标签: performance lstm

在总结模型如下时,我很难理解LSTM模型的性能:

X_train.shape
(120, 7, 11)
y_train.shape
(120,)
X_test.shape
(16, 7, 11)
y_test.shape
 (16,)

model = keras.Sequential()
model.add(keras.layers.LSTM(100, input_shape=(X_train.shape[1], X_train.shape[2]), return_sequences = True))
model.add(keras.layers.Dropout(rate = 0.2))
model.add(keras.layers.LSTM(20))
model.add(keras.layers.Dropout(rate = 0.2))          
model.add(keras.layers.Dense(1))
model.compile(loss='mean_squared_error', optimizer=keras.optimizers.Adam(0.001), metrics = ['mae'])

history = model.fit(
X_train, y_train, 
epochs=60,
batch_size=5,
verbose= 0,
validation_split = 0.1,
shuffle=False
)

根据下面的图,训练过程中MSE和MAE均下降,并且它们的对应值都接近零。

mse mae

但是我所知道的预测不够精确

y_pred = model.predict(X_test)
model.evaluate(X_test,y_test)
[0.04673878103494644, 0.15574690699577332]

prediction

所以我的问题是,我的模型实际上如何执行?我的意思是,由于MSE和MAE都较低,但是预测值并不令人信服,因此该如何解释其性能。

1 个答案:

答案 0 :(得分:2)

您看到的MSE约为0.03,对应于0.17的平均误差(取平方根,因为MSE是均方误差)。您在时间序列中看到的是0.0到0.4之间的误差,这似乎是合理的。

我会训练更长的时间,看看您是否可以进一步降低MSE(MSE对较大的异常值更为敏感)。我认为60个纪元不是一个很高的数字。

我还注意到您似乎只有120个数据点-训练多层LSTM模型可能有点低,这些模型在处理大量数据时表现最佳。您需要多少数据? -没有固定的规则,但是您的LSTM大约有4000个权重,据我所知,有一个经验法则是使用3 *的权重-因此有12,000个数据点-来源:https://www.researchgate.net/post/What_is_the_minimum_sample_size_required_to_train_a_Deep_Learning_model-CNN