我正在开发一个回归模型,为了评估模型性能,我的上司认为我们应该使用以下指标:
总绝对误差均值 = mean(y_predicted) / mean(y_true) – 1
其中mean(y_predicted)是所有预测值的平均值,而mean(y_true)是所有真实值的平均值。
我之前从未在机器学习中见过使用这个指标,我说服了他增加平均绝对百分比误差(MAPE)作为替代方案,但尽管我的模型在MAPE方面表现得更好,但在查看总绝对误差均值时,一些区域表现不佳。
我的直觉告诉我,这个指标在展示真实准确性方面有问题,但我似乎无法理解为什么会这样。
总绝对误差均值是一个有效的性能指标吗?如果不是,为什么?如果是,为什么回归模型的准确性在MAPE方面提高了,但在总绝对误差均值方面没有提高?
提前感谢!
回答:
我建议您友善地告诉您的上司,当有人想引入一个新指标时,证明它在现有指标之上有用的责任在他/她身上,而不是反过来(即我们证明它为什么没用);顺便说一下,这正是当某人真正在一篇研究论文中提出一个新的建议指标时的标准程序,就像最近提出的最大信息系数(MIC)一样。
话虽如此,用一些虚拟数据在实践中证明这个建议的指标是糟糕的并不难:
现在,假设我们有一个非常棒的模型,它完美地预测,即y_pred1 = y_true
;在这种情况下,均方误差(MSE)和你提出的TAEM确实都会是0:
y_pred1 = y_true # 完美预测mean_squared_error(y_true, y_pred1)# 0.0taem(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
结论:任何忽略逐元素差异而只关注平均值的指标都会有类似的局限性,即对预测的任何排列取相同的值,这对于一个有用的性能指标来说是一个非常不希望的特征。