我正在研究回归模型并评估模型的性能,我的老板认为我们应该使用此指标:
总绝对误差均值=均值(y_predicted)/均值(y_true)-1
其中平均值(y_predicted)是所有预测的平均值,而平均值(y_true)是所有真实值的平均值。
我之前从未见过该指标用于机器学习,我说服他添加了平均绝对百分比误差作为替代,但是即使我的模型在MAPE方面表现更好,但当我们查看总绝对误差时,某些领域的表现仍然不佳卑鄙的。
我的直觉是,该指标在显示真实准确性方面是错误的,但我似乎无法理解为什么。
总绝对误差是否表示有效的性能指标?如果没有,那为什么呢?如果是这样,为什么回归模型的准确度会根据MAPE而不是总绝对误差均值而增加?
提前谢谢!
答案 0 :(得分:2)
我谨建议告知您的老板,当一个人希望引入一项新指标时,他/她必须证明自己为什么在现有指标之上有用,而不是 其他方式(即,我们说明为什么不这样);顺便说一句,当某人确实在研究论文中提出新的拟议指标时,这正是标准程序,例如Maximal Information Coefficient (MIC)的最新建议。
也就是说,在实践中不难证明这一提议的指标是一个差的指标,其中包含一些虚拟数据:
import numpy as np
from sklearn.metrics import mean_squared_error
# your proposed metric:
def taem(y_true, y_pred):
return np.mean(y_true)/np.mean(y_pred)-1
# dummy true data:
y_true = np.array([0,1,2,3,4,5,6])
现在,假设我们有一个非常出色的模型,它可以完美预测,即y_pred1 = y_true
;在这种情况下,MSE和您建议的TAEM均将为0:
y_pred1 = y_true # PERFECT predictions
mean_squared_error(y_true, y_pred1)
# 0.0
taem(y_true, y_pred1)
# 0.0
到目前为止,一切都很好。但是,现在让我们考虑一个非常糟糕模型的输出,该模型在应该预测低值的情况下预测高值,反之亦然;换句话说,请考虑另一组预测:
y_pred2 = np.array([6,5,4,3,2,1,0])
实际上是y_pred1
的相反顺序。现在,很容易看到,在这里我们还将获得完美的TAEM分数:
taem(y_true, y_pred2)
# 0.0
当然,MSE会警告我们,我们确实离完美的预测还很遥远:
mean_squared_error(y_true, y_pred2)
# 16.0
底线:任何度量标准忽略了元素间的差异而只求平均值,这具有类似的局限性,即对预测的任何排列取相同的值,特性,对于有用的性能指标来说是非常不希望的。