总误差是指回归模型的适当性能指标吗?

问题描述 投票:2回答:1

我正在研究回归模型并评估模型性能,我的老板认为我们应该使用这个指标:

总绝对误差平均值=平均值(y_predicted)/平均值(y_true) - 1

其中mean(y_predicted)是所有预测的平均值,mean(y_true)是所有真实值的平均值。

我之前从未见过这个度量标准用于机器学习,我说服他添加平均绝对百分比误差作为替代,但即使我的模型在MAPE方面表现更好,当我们查看总绝对误差平均值时,某些区域表现不佳。

我的直觉是这个指标在显示真实的准确性方面是错误的,但我似乎无法理解为什么。

总绝对误差是指有效的性能指标吗?如果没有,那么为什么呢?如果是,为什么回归模型的准确度会在MAPE方面增加,而不是在总绝对误差平均值方面?

先感谢您!

machine-learning statistics regression metrics
1个回答
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

底线:忽略元素差异而仅支持平均值的任何度量都受到类似的限制,即对预测的任何排列采用相同的值,这对于有用的性能度量是非常不希望的。

© www.soinside.com 2019 - 2024. All rights reserved.