目录标题
- 1、准确率的局限性
- 广告投放问题:
- 2、精确率与召回率的权衡
- 2.1 案例
- 2.2 P-R曲线
- 3、平方根误差
- 4、ROC曲线
- 5、如何绘制ROC
- 6、如何计算AUC
- 7、ROC曲线相比P-R曲线有什么特点?
模型评估主要分为离线评估和在线评估两个阶段。
针对分类、排序、回归、序列预测等不同类型的机器学习问题,评估指标的选择也有所不同。
1、准确率的局限性
广告投放问题:
Hulu的奢侈品广告主们希望把广告定向投放给奢侈品用户。Hulu拿到了一部分奢侈品用户的数据,并以此为训练集和测试集,训练和测试奢侈品用户的分类模型。该模型的分类准确率超过了95%,但在实际广告投放过程中,该模型还是把大部分广告投给了非奢侈品用户,这可能是什么原因造成的?
解答:
定义:
准确率是指分类正确的样本占总样本个数的比例,即
其中ncorrect为被正确分类的样本个数,ntotal为总样本的个数。
准确率是分类问题中最简单也是最直观的评价指标,但存在明显的缺陷。比如,当负样本占99%时,分类器把所有样本都预测为负样本也可以获得99%的准确率。所以,当不同类别的样本比例非常不均衡时,占比大的类别往往成为影响准确率的最主要因素。
此问题中,当奢侈品用户的占比大,将所有用户都预测为奢侈品用户也有很高的准确率。这时把“非奢侈品用户”也预测成了奢侈品用户进行了投放。
解决方法:
可以使用更为有效的平均准确率(每个类别下的样本准确率的算术平均)作为模型评估的指标。
造成该问题的原因不限于评价指标的选择,即使评价指标选择对了,也可能因为模型过拟合或欠拟合、测试集样本集划分不均匀、线下评估与线上测试的样本分布差异等一系列问题,但评估指标的选择是最容易发现,也是最可能影响评估结果的因素。
2、精确率与召回率的权衡
2.1 案例
问题
Hulu提供视频的模糊搜索功能,搜索排序模型返回的Top 5的精确率非常高,但在实际使用过程中,用户还是经常找不到想要的视频,特别是一些比较冷门的剧集,这可能是哪个环节出了问题呢?
定义
精确率是指分类正确的正样本个数占分类器判定为正样本的样本个数的比例。
召回率是指分类正确的正样本个数占真正的正样本个数的比例。
本题中,如果相关搜索结果有100个,即使Precision@5达到了100%,Recall@5也仅仅是5%。
所以需要同时关注Precision值和Recall值。或者选取更高阶的评估指标来更全面地反映
2.2 P-R曲线
P-R曲线的横轴是召回率,纵轴是精确率。
对于一个排序模型来说,其P-R曲线上的一个点代表着,在某一阈值下,模型将大于该阈值的结果判定为正样本,小于该阈值的结果判定为负样本,此时返回结果对应的召回率和精确率。
整条P-R曲线是通过将阈值从高到低移动而生成的。下图是P-R曲线样例图,其中实线代表模型A的P-R曲线,虚线代表模型B的P-R曲线。原点附近代表当阈值最大时模型的精确率和召回率。
除此之外,F1 score和ROC曲线也能综合地反映一个排序模型的性能。F1
score是精准率和召回率的调和平均值,它定义为
3、平方根误差
问题:
希望构建一个回归模型来预测某部美剧的流量趋势,但无论采用哪种回归模型,得到的RMSE指标都非常高。然而事实是,模型在95%的时间区间内的预测误差都小于1%,取得了相当不错的预测结果。那么,造成RMSE指标居高不下的最可能的原因是什么?
解答:
一般情况下,RMSE能够很好地反映回归模型预测值与真实值的偏离程度。但在实际问题中,如果存在个别偏离程度非常大的离群点(Outlier)时,即使离群点数量非常少,也会让RMSE指标变得很差。
解决方法:
第一,如果我们认定这些离群点是“噪声点”的话,就需要在数据预处理的阶段把这些噪声点过滤掉。
第二,如果不认为这些离群点是“噪声点”的话,就需要进一步提高模型的
预测能力,将离群点产生的机制建模进去。
第三,可以找一个更合适的指标来评估该模型。关于评估指标,其实
是存在比RMSE的鲁棒性更好的指标,比如平均绝对百分比误差(Mean AbsolutePercent Error,MAPE),它定义为
相比RMSE,MAPE相当于把每个点的误差进行了归一化,降低了个别离群点带来的绝对误差的影响。
4、ROC曲线
二值分类器(Binary Classifier)是机器学习领域中最常见也是应用最广泛的分类器。评价二值分类器的指标很多,比如precision、recall、F1 score、P-R曲线等。
但也发现这些指标或多或少只能反映模型在某一方面的性能。相比而言,ROC曲线则有很多优点,经常作为评估二值分类器最重要的指标之一
定义:
ROC曲线的横坐标为假阳性率(False Positive Rate,FPR);纵坐标为真阳性率(True Positive Rate,TPR)。FPR和TPR的计算方法分别为
上式中,P是真实的正样本的数量,N是真实的负样本的数量,TP是P个正样本中被分类器预测为正样本的个数,FP是N个负样本中被分类器预测为正样本的个数。
举例:
我们举一个医院诊断病人的例子。假设有10位疑似癌症患者,其中有3位很不幸确实患了癌症(P=3),另外7位不是癌症患者(N=7)。医院对这10位疑似患者做了诊断,诊断出3位癌症患者,其中有2位确实是真正的患者(TP=2)。那么真阳性率TPR=TP/P=2/3。对于7位非癌症患者来说,有一位很不幸被误诊为癌症患者(FP=1),那么假阳性率FPR=FP/N=1/7。对于“该医院”这个分类器来说,这组分类结果就对应ROC曲线上的一个点(1/7,2/3)。
5、如何绘制ROC
首先,根据样本标签统计出正负样本的数量,假设正样本数量为P,负样本数量为N;
接下来,把横轴的刻度间隔设置为1/N,纵轴的刻度间隔设置为1/P;再根据模型输出的预测概率对样本进行排序(从高到低);
依次遍历样本,同时从零点开始绘制ROC曲线,每遇到一个正样本就沿纵轴方向绘制一个刻度间隔的曲线,每遇到一个负样本就沿横轴方向绘制一个刻度间隔的曲线,直到遍历完所有样本,曲线最终停在(1,1)这个
点,整个ROC曲线绘制完成。
6、如何计算AUC
AUC指的是ROC曲线下的面积大小,该值能够量化地反映基于ROC曲线衡量出的模型性能。
计算AUC值只需要沿着ROC横轴做积分就可以了。
由于ROC曲线一般都处于y=x这条直线的上方(如果不是的话,只要把模型预测的概率反转成1−p就可以得到一个更好的分类器),所以AUC的取值一般在0.5~1之间。
AUC越大,说明分类器越可能把真正的正样本排在前面,分类性能越好。
7、ROC曲线相比P-R曲线有什么特点?
相比P-R曲线,ROC曲线有一个特点,当正负样本的分布发生变化时,ROC曲线的形状能够基本保持不变,而P-R曲线的形状一般会发生较剧烈的变化。
举例:图2.3是ROC曲线和P-R曲线的对比图,其中图2.3(a)和图
2.3(c)是ROC曲线,图2.3(b)和图2.3(d)是P-R曲线,图2.3(c)和图2.3(d)则是将测试集中的负样本数量增加10倍后的曲线图。
可以看出,P-R曲线发生了明显的变化,而ROC曲线形状基本不变。这个特点让ROC曲线能够尽量降低不同测试集带来的干扰,更加客观地衡量模型本身的性能。
这有什么实际意义呢?在很多实际问题中,正负样本数量往往很不均衡。比如,计算广告领域经常涉及转化率模型,正样本的数量往往是负样本数量的1/1000甚至1/10000。若选择不同的测试集,P-R曲线的变化就会非常大,而ROC曲线则能够更加稳定地反映模型本身的好坏。所以,ROC曲线的适用场景更多,被广泛用于排序、推荐、广告等领域。
但需要注意的是,选择P-R曲线还是ROC曲线是因实际问题而异的,如果研究者希望更多地看到模型在特定数据集上的表现,P-R曲线则能够更直观地反映其性能。