优化 MAPE 的最佳方法

机器算法验证 机器学习 数据转换 毫秒 马佩
2022-02-27 19:25:24

MAPE是可用于回归问题的度量

MAPE=1nt=1n|AtFtAt|

其中代表实际值,代表预测值。AF

我必须针对这个指标优化我的模型。但是,我不确定最好的方法。我可以重写模型的目标函数(但大多数常用库不支持自定义目标函数),但这需要付出很多努力。

或者,我可以使用目标的转换,在图像上运行学习并返回预测ff(target)f1(predicted)

我注意到训练模型,保持平方和度量,在上并返回导致了显着的改进。log(target)exp(predicted)

有没有办法知道要使用的最佳转换?或者我应该交叉验证目标的各种转换?

2个回答

我注意到训练模型,保持平方和度量,在 log(target) 上并返回 exp(predicted) 导致了显着的改进。

这并不让我感到惊讶。以概率的方式看待事物。您的样本外目标遵循某种未知分布。您正在计算一个点预测,它是这个未知分布的一个点汇总,使用预期 MAPE 作为损失函数。

一个关键问题如下:未知未来分布的哪个函数最小化预期 MAPE?最小化 MAPE 会自动将您的预测绘制到这个函数上。事实证明,预期的 MAPE 被一个有点奇异的函数最小化,即未来分布的 (-1)-中值(Gneiting,2011,JASA,第 752 页,)。β=1

但是,这是第二个关键问题,我强烈怀疑您的估计程序并非针对此功能,而是使用了通过残差的期望值最小化的损失函数。模型估计算法使用的损失函数与用于评估预测的损失函数之间的这种差异会导致奇怪的结果。

MAPE 标签 wiki 包含指向文献的指针。

这是一个例子。假设您有对数正态分布的数据,对数尺度上的均值为 0,方差为 1,并且您没有有用的预测变量。如果没有预测变量,所有观测值的拟合应该相同。

  • 最小化样本内平方误差将导致拟合,这只是数据的平均值,或模拟告诉我们,这种拟合产生了大约 197% 的预期 MAPE 和大约 4.70 的预期 MSE。e1.65
  • 但是,最小化 MAPE 将导致数据的 (-1)-中位数,对于对数正态分布,它的模式在处。最小预期 MAPE 为 68%,而此拟合的预期 MSE 为 6.34。1e0.37

MSE 最优拟合是 MAPE 最优拟合的 5 倍,因为 MAPE 的不对称性 - 太大的拟合会导致 APE 大于 100%,而 APE 以 100% 为界太小。这将 MAPE 最佳拟合拉向零。

  • 如果您对数据取对数,然后估计记录数据的 MSE 最小化拟合,我们当然会得到记录数据的平均值,即为零。对此进行反向变换会产生拟合 1,这对于原始数据的 MAPE 和 MSE 都不是最优的,但比原始 MSE 最优拟合更接近 MAPE 最优值。它产生 113% 的 MAPE 和 5.12 的 MSE。

您可能有不对称分布的数据。在这种情况下,我将对MAPE 是否真的是一种有用的错误度量进行非常严格的研究。如果您确实决定最小化 MAPE,那么最好的解决方案很可能确实是更改目标函数。如果这是不可能的,交叉验证和检查各种参数(比如)Box-Cox 转换可能是你最好的选择。(但它仍然感觉像是用螺丝刀而不是锤子将钉子钉在板上。)此外,我非常建议您查看您的拟合和预测偏差,并考虑是否存在较大偏差关注。

这是模拟的R代码:

set.seed(1)
xx <- rlnorm(1e7)
yy <- sqrt(exp(1))
yy
mean(abs(xx-yy)/xx)
mean((xx-yy)^2)

yy <- 1/exp(1)
yy
mean(abs(xx-yy)/xx)
mean((xx-yy)^2)

yy <- 1
mean(abs(xx-yy)/xx)
mean((xx-yy)^2)

不建议根据拟合优度、预测性能、分类性能和其他拟合相关量来估计或选择模型,因为这种策略往往会过度拟合。基于这些标准的最佳模型将始终是具有更多参数的模型,因为它们总是更灵活,因此可以提供更好的拟合和更好的(如果在许多情况下很少)预测性能。付出的代价:使用比你需要的更多的参数,获得更多的分散置信区间,以及过度拟合的所有不愉快的后果。