模型预测精度(数值regression)评价指标 - RMSE, MAE, MAPE & Bias哪个指标更好?

在销量/需求预测时常用的一些模型评价指标,尤其是在supplychain销量预测等领域,哪些指标好,哪些不好?什么时候用什么指标。

Error
对于每一个数据,error等于预测减去实际值(这里是销量预测,所以为实际需求)
Error = forecast (f) - demand (d)
在这里插入图片描述
Bias
测试数据的Error的平均值为Bias,表示模型总体的偏差或者误差。缺点是,由于error有正负,加起来的时候就抵消掉了,有可能不准确。
在这里插入图片描述

MAPE mean absolute percentage error
在这里插入图片描述

不是一个很好的评价指标,因为如果有一个实际值(demand)很低的时候,这时的百分比会很大,会对最后平均之后的百分比影响较大,如果根据MAPE值进行模型优化,会导致整体预测值小于实际值。最好不要用MAPE。

MAE mean absolute error
在这里插入图片描述

预测值与实际值的差值的绝对值,MAE反而是比较好的平均指标。
但有个缺点,就是因为不是正规化后的值,不好比较。比如MAE是10,我们不知道它到底是算好还是不好。如果实际值的平均是1000,那误差很低,但如果实际平均是1,误差则非常大。所以比较的时候,往往除以实际值的平均,做个正规化,这样变成百分比就好比较了,也有人把这个指标也叫MAPE,但是是不一样的。不管它叫什么,一定要解释好指标是怎么算出来的。


RMSE root mean square error
在这里插入图片描述
同样可以正规化成百分比如下
在这里插入图片描述
很多算法用MSE为标准进行优化,因为容易计算,而且比RMSE容易操控。但是由于它把数值平方了,导致我们不容易理解它和原来数值的关系。所以我们不考虑MSE。

error的权重问题
和MAE相比,RMSE给每个错误的权重是不同的,error越大的数据给的权重越大,这导致只要你有一个非常不好的预测结果,整个RMSE都会很差。
举个例子。下面两个预测,只有最后一个period结果不同,一个是8,一个是9。
在这里插入图片描述
来看一下算出的RMSE和MAE,发现RMSE比之前降了6.9%,但MAE相比之下之下降了3.6%。说明RMSE对于某个异常大的错误给与的权重很大,而MAE就相对平均一些。
在这里插入图片描述
MAE优化中位数(median) 而RMSE优化平均值(average)
有这样一个数据,
forcast1是一个远低于需求的预测值
forcast2是中位数
forcast3是平均值

你觉得哪个的MAE最好?哪个RMSE最好?哪个MAPE最好?
在这里插入图片描述
计算结果如下,
在这里插入图片描述
我们发现
forcast1是一个远低于需求的预测值 > MAPE值最好
forcast2是中位数 > MAE值最好
forcast3是平均值 > RMSE值最好

所以其实
MAE优化的是中位数,而RMSE优化的平均值。
MAE是error绝对值,最小化时候看正负两拨预测值如何靠近实际值,即中位数
RMSE最小化时候,看预测值总和如何靠近实际值总和,即平均
(数学公式省略)

MAE 和 RMSE选哪个?
所以究竟选哪个呢?当然你也可以两个都用。但哪个更好不能一概而论,我们先来看下这两个指标分别对偏差bias,异常值(outliers)敏感度,间歇性需求的不同影响。

1. bias
大多数supply chain的数据demand都是skewed。一般demand会不时有一些peak(peak可能由于promotion活动或者客户批量订货),其他时段则很低,总体会成一个skewed 分布。平均值会大于中位数。所以最小化MAE可能会造成偏差,这是MAE的主要弱点。
在这里插入图片描述
2. 异常值敏感度
我们提到RMSE对与很大的error给与更多的权重,这使得RMSE对与异常值非常敏感,而注重优化中位数的MAE则对于异常值没那么敏感。(这里举了例子,省略)

但对于异常值敏感一定是坏事么?

3. 间歇性需求
对于间歇性需求的产品,对于异常值敏感可能反而是好事。
举例:我们买一种产品给一个客户,客户喜欢批量购买,三周买一次,一次100件。
那么每周平均需求是33左右,中位数是0。
如果用平均(33件)来预测它每周的销量,由下表可以计算出RMSE为47,MAE为44
在这里插入图片描述
如果用中位数(0)来预测,RMSE为58,MAE为33
在这里插入图片描述
显然第一个预测每周33的更好一些,但是它的MAE误差反而更高,如果按照MAE指标来选模型,那么就所有预测值都是0了。对于间歇性需求的产品,MAE显然不是一个好指标。

结论
所以MAE,RMSE究竟用哪个是没有一个定论的。如果用MAE导致很高的bias,那就试试RMSE。如果数据里面有很多异常值,导致预测skewed预测结果,那就试试MAE。
报告和模型优化可以用不同的指标来做。如果你的数据每个数据需求量太低,可以aggregate转换成更长期间的数据,比如月次等。如果必须日次预测,可以预测完月次再平均分配回去。这可以让你用MAE作为指标并同时平滑那些peaks。

【参考文献】
https://towardsdatascience.com/forecast-kpi-rmse-mae-mape-bias-cdc5703d242d

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐