1

我正在玩时间序列和 Keras LSTM 1)双向和 2)多并行模型。我正在根据“mean_squared_error”指标保存最佳模型。我的数据集使用 MinMaxScaler(默认范围从 0 到 1)进行了标准化。数据集测试部分的均方误差为 0.02。这是否意味着我的模型的平均误差为 14% - 即 0.02^0.5。这是对模型精度的一个很好的实际解释吗?

假设我想预测这个序列中的第四个值:

[10, 20, 30, 40, 50, 60, 70, 80, 90]

所以我的 x_test 和 y_test 看起来像这样:

[10 20 30] 40
[20 30 40] 50
[30 40 50] 60
[40 50 60] 70
[50 60 70] 80
[60 70 80] 90

和代码:

cp = [ModelCheckpoint(filepath=path+"/epochBi.h5", monitor='mean_squared_error', verbose=1, save_best_only=True)]
model.compile(optimizer='adam', loss='mse', metrics= ['mean_squared_error'])
history_callback = model.fit(X_train, y_train, epochs=200, verbose=1, callbacks=cp)
model.load_weights(path+"/epochBi.h5")
score = model.evaluate(X_test, y_test, verbose=1)

假设我在原始数据集上进行评估,我将如何解释 MSE=0.02?

4

2 回答 2

2

更新问题已更新,因此有新评论

同样,你的 0.2 的 MSE 并不意味着任何东西的 14%,它只是一个标量,你不能把它当作你的基本事实的百分比。

这是对模型精度的一个很好的实际解释吗?

我会以不同的方式问这个问题,what does it mean to me?

好吧,看看你的目标值在 40 到 90 之间,你可以说平均而言,你的错误是 0.14。现在,如果您需要更多详细信息,这意味着当您预测 40 时,您猜到了 39.86,当 50 --> 50.14、60--> 59.86 时,等等。但这是平均水平。

希望你现在明白了


让我们看一下均方误差(MSE)的公式:

在此处输入图像描述

所以它只是预测数据点和实际数据点之间的平方差的平均值。在您的情况下,MSE (RMSE) 的平方根是 0.02^0.5 或大约 0.14(四舍五入)。

这是否意味着我的模型平均误差为 14%

不,当你得到 0.14 的损失时,你不能说你的错误是 14%。0.14 只是错误的值,您的每个单独的错误可能是负数或正数,使它们的和为零,但不是它们的平方和。

对模型精度有很好的实际解释吗?

取决于你的目标。您通常根据一些其他指标来衡量准确性,例如 MAE、R sqaured 等。假设您没有将数据重新调整到其原始大小,那么就无法知道这在绝对意义上是好是坏。因此,我建议您根据重新调整的数据测量 MSE,然后再决定,如果还没有这样做的话。

于 2019-09-17T09:12:45.337 回答
1

您正在使用 MSE 来测量模型答案与实际答案之间的距离。也许你的模型永远不会准确地猜到你的目标,但它的猜测足够接近目标。因此,您无法在此处计算百分比或准确度。有关更多信息,您可以阅读回归模型和分类模型之间的差异。

于 2019-09-17T06:49:08.997 回答