【发布时间】:2018-07-24 07:47:43
【问题描述】:
当损失函数为均方误差时,准确度如何定义?是mean absolute percentage error吗?
我使用的模型具有输出激活线性,并使用loss= mean_squared_error编译
model.add(Dense(1))
model.add(Activation('linear')) # number
model.compile(loss='mean_squared_error', optimizer='adam', metrics=['accuracy'])
输出如下所示:
Epoch 99/100
1000/1000 [==============================] - 687s 687ms/step - loss: 0.0463 - acc: 0.9689 - val_loss: 3.7303 - val_acc: 0.3250
Epoch 100/100
1000/1000 [==============================] - 688s 688ms/step - loss: 0.0424 - acc: 0.9740 - val_loss: 3.4221 - val_acc: 0.3701
那么,例如val_acc: 0.3250 是什么意思? Mean_squared_error 应该是一个标量而不是一个百分比 - 不应该吗?那么 val_acc - 均方误差,或平均百分比误差或其他函数?
来自维基百科上 MSE 的定义:https://en.wikipedia.org/wiki/Mean_squared_error
MSE 是衡量估算器质量的指标——它始终是 非负数,接近零的值更好。
这是否意味着val_acc: 0.0 的值优于val_acc: 0.325?
编辑:我训练时准确度指标输出的更多示例 - 当我训练更多时,准确度会增加。而损失函数 - mse 应该减少。是否为 mse 定义了准确度 - 在 Keras 中是如何定义的?
lAllocator: After 14014 get requests, put_count=14032 evicted_count=1000 eviction_rate=0.0712657 and unsatisfied allocation rate=0.071714
1000/1000 [==============================] - 453s 453ms/step - loss: 17.4875 - acc: 0.1443 - val_loss: 98.0973 - val_acc: 0.0333
Epoch 2/100
1000/1000 [==============================] - 443s 443ms/step - loss: 6.6793 - acc: 0.1973 - val_loss: 11.9101 - val_acc: 0.1500
Epoch 3/100
1000/1000 [==============================] - 444s 444ms/step - loss: 6.3867 - acc: 0.1980 - val_loss: 6.8647 - val_acc: 0.1667
Epoch 4/100
1000/1000 [==============================] - 445s 445ms/step - loss: 5.4062 - acc: 0.2255 - val_loss: 5.6029 - val_acc: 0.1600
Epoch 5/100
783/1000 [======================>.......] - ETA: 1:36 - loss: 5.0148 - acc: 0.2306
【问题讨论】:
-
我认为你很困惑。回归问题没有定义精度,你看到的均方误差不是百分比,而是你得到的实际值,它可能小于 1。
-
是的,Matias,我很困惑。因为我的回归问题的准确性 - 表现得像一个百分比。它从训练的第一个时期开始为 acc: 0.0 - 并增加到 acc: 0.99。如果 acc 实际上是 mse - 那么在开始第一个 epoch 时我会得到最好的结果,对吧? 0.0 的 Mse 比 0.99 好 - 这就是为什么我不认为 acc 是 mse 而是百分比。但是这个百分比是如何定义的呢?是平均绝对百分比误差吗?
-
准确率只是正确分类示例的分数,它始终是标签 == 预测为真的分数。对于回归来说,这是没有意义的,因为预测值与标签完全相同的可能性非常小,但您的模型似乎可以非常准确地做到这一点。 Keras 中的准确性绝不意味着绝对错误,但正如我之前提到的那样。
-
同样,答案是一样的,Keras 的准确率不会改变,如果它的回归或分类,它总是标签 == 预测的分数。它的行为是正确的,你对它的解释是错误的。
-
不,不是,这就是为什么准确性对回归没有意义。
标签: machine-learning keras regression loss-function mean-square-error