政府网站 建站“跨年”等关键词搜索达年内峰值
最近在做回归任务,有一点小小的思考。
回归任务经常用的评价指标,MAE(平均绝对误差)、MSE(均方误差),RMSE(均方根误差)等
比如要做一个气温预测,那么模型预测的值,即为温度,单位是摄氏度。而上述提到的评估指标,计算结果,与原数据具有相同的量纲(即摄氏度值)。
在实际业务场景中,领导往往更喜欢看准确率(百分比),这种显而易见的指标。但在回归任务中,预测值与真实值几乎不可能完全相等。
第一直觉,想到一种计算误差率的公式,abs(真实值-预测值)/真实值。首先计算真实值与预测值的绝对误差值,在除以真实值,进而获取单条样本的误差率,在用1-误差率方式,计算准确率。这种计算方式有利也有弊:
1、优势:直观,不受原始数据量纲(单位)的影响,高估与低估具备对称性,例子如下
对低估和高估的惩罚是对称的(在误差率层面),假定真实值a=7:
高估,预测值 b=15,绝对误差值8,误差率为8/7
低估,预测值 b=-1,绝对误差值8,误差率为8/7
2、缺点以及异常情况
上面例子很直观地说明了,误差率并不能控制在100%以内,有可能误差率还会高于100%,这样在用1-误差率作为准确率,负准确率不符合常识。
3、适用条件
- 一定要保证真实值不能为0,这是最致命的问题,真实值为0,意味着分母为0,这就会导致除0错误或无穷大(inf)的误差率。
- 当绝对误差值较大时,一般指超过真实值1倍以上,就会发生误差率大于100%的问题,一定要注意这种情况。
基于我目前在做的项目,预测值都是大于0的,而上述误差率大于100%的情况呢,只能发生在高估上,即预测值远大于真实值。因为高估无上限,低估有下限(大于0)。还是举一个例子说明:
假定真实值为a,预测值为b,且两值均大于0,分两种情况讨论:
- 真实值是大于预测值的,此时误差率 = a-b /a = 1 - b/a,由于a>b,所以b/a一定大于0且小于1的,所以最终的误差率范围一定在(0,1)。
- 真实值小于预测值,此时误差率 = b-a/a = b/a - 1 ,由于b>a,所以b/a一定大于1,但没有上限,假定b = 3a,此时误差率为2,所以此时的误差率范围在(0,+无穷)。
4、那有没有更好的方式呢?还是用到百分比这种形式去量化指标,目前我还没想到,欢迎大家补充新思路。