机器学习中的PR曲线和ROC曲线

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mingtian715/article/details/53488094

主要是我对周志华《机器学习》第二章模型估计与选择中一些内容的总结

1.查准率、查全率和F1

对于二分类问题,可将样例根据其真实类别与学习器预测类别的组合划分为真正例(TP),假反例(FN),假正例(FP),真反例(TN),具体分类结果如下
这里写图片描述
查准率P和查全率R分别定义为:

这里写图片描述

查准率关心的是”预测出正例的正确率”即从正反例子中挑选出正例的问题。
查全率关心的是”预测出正例的保证性”即从正例中挑选出正例的问题。

这两者是一对矛盾的度量,查准率可以认为是”宁缺毋滥”,适合对准确率要求高的应用,例如商品推荐,网页检索等。查全率可以认为是”宁错杀一百,不放过1个”,适合类似于检查走私、逃犯信息等。

下图为查准率-查全率曲线(P-R图)

查准率-查全率曲线

若一个学习器的P-R曲线被另一个学习器完全”包住”,则后者的性能优于前者。当存在交叉时,可以计算曲线围住面积,但比较麻烦,平衡点(查准率=查全率,BEP)是一种度量方式。

但BEP还是过于简化了些,更常用的是F1和Fp度量,它们分别是查准率和查全率的调和平均和加权调和平均。定义如下
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
显然,当学习器A的F1值比学习器高,那么A的BEP值也比B高(将P=R代入F1公式即可)

2.ROC和AUC

很多学习器是为测试样本产生一个实值或概率预测,然后将这个预测值与一个分类阈值进行比较,若大于阈值分为正类,否则为反类,因此分类过程可以看作选取一个截断点。

不同任务中,可以选择不同截断点,若更注重”查准率”,应选择排序中靠前位置进行截断,反之若注重”查全率”,则选择靠后位置截断。因此排序本身质量的好坏,可以直接导致学习器不同泛化性能好坏,ROC曲线则是从这个角度出发来研究学习器的工具。

曲线的坐标分别为真正例率(TPR)和假正例率(FPR),定义如下

这里写图片描述
下图为ROC曲线示意图,因现实任务中通常利用有限个测试样例来绘制ROC图,因此应为无法产生光滑曲线,如右图所示。

这里写图片描述
绘图过程很简单:给定m个正例子,n个反例子,根据学习器预测结果进行排序,先把分类阈值设为最大,使得所有例子均预测为反例,此时TPR和FPR均为0,在(0,0)处标记一个点,再将分类阈值依次设为每个样例的预测值,即依次将每个例子划分为正例。设前一个坐标为(x,y),若当前为真正例,对应标记点为(x,y+1/m),若当前为假正例,则标记点为(x+1/n,y),然后依次连接各点。

下面举个绘图例子:
有10个样例子,5个正例子,5个反例子。有两个学习器A,B,分别对10个例子进行预测,按照预测的值(这里就不具体列了)从高到低排序结果如下:
A:[反正正正反反正正反反]
B : [反正反反反正正正正反]
按照绘图过程,可以得到学习器对应的ROC曲线点
A:y:[0,0,0.2,0.4,0.6,0.6,0.6,0.8,1,1,1]
x:[0,0.2,0.2,0.2,0.2,0.4,0.6,0.6,0.6,0.8,1]
B:y:[0,0,0.2,0.2,0.2,0.2,0.4,0.6,0.8,1,1]
x:[0,0.2,0.2,0.4,0.6,0.8,0.8,0.8,0.8,0.8,1]
绘制曲线结果如下:

这里写图片描述

蓝色为学习器A的ROC曲线,其包含了B的曲线,说明它性能更优秀,这点从A,B对10个例子的排序结果显然是能看出来的,A中正例排序高的数目多于B。此外,如果两个曲线有交叉,则需要计算曲线围住的面积(AUC)来评价性能优劣。

3.偏差和方差

泛化误差可以分解为偏差、方差与噪声之和

偏差度量了学习算法的期望预测和真实结果偏离程度。

方差度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响。

噪声可以认为数据自身的波动性,表达了目前任何学习算法所能达到泛化误差的下限。

偏差大说明欠拟合,方差大说明过拟合。

这里写图片描述

阅读更多

没有更多推荐了,返回首页