在分类问题里,有几个重要的指标可以用来衡量算法的能力,比如Recall(召回率),Precision(精确率),F1值等。P-R曲线,ROC曲线,AUC曲线等。之前已经对前三个进行过介绍,本次只介绍后三个。
【1】背景知识
还是以二分类为例,混淆矩阵如下:
在二分类的前提下,所有的case,它的真实情况(label)只有两种情况(1/0),预测结果也只有两种情况(1/0),所有的排列组合就有四种情况,如上图所示1-4个区域。
其中recall(召回率),也叫查全率;precision(精确率),也叫查准率
以上为背景知识。
【2】P-R曲线
同一个模型,在不同阈值(threadhold)条件下,对应的recall和precision是不一样的,一般随着一个的升高另一个会降低,正所谓鱼和熊掌不能兼得。那么遍历所有的阈值,就会有若干的准召率数据对。把这些数据对分别设置成横坐标与纵坐标,画出的曲线就是P-R曲线,如下
如果一个学习器的P-R曲线被另一个学习器的P-R曲线完全包住,则可断言后者的性能优于前者,例如上面的A和B优于学习器C。但是A和B的性能无法直接判断,我们可以根据曲线下方的面积大小来进行比较,但更常用的是平衡点或者是F1值。
平衡点(BEP)是P=R时的取值,如果这个值较大,则说明学习器的性能较好。
F1 = 2 * P * R /( P + R ),同样,F1值越大,我们可以认为该学习器的性能较好。
另外可以通过实际的需求来确定A和B的选择,如需要一个高精确的自动处理模型(可以少召回但是需要避免误伤),那就需要使用A模型并采用比较高的阈值;
而如果需要一个高召回模型保证召回率,不太关心误伤,那可以使用模型B并采用比较低的阈值。
【3】ROC曲线
ROC曲线的横纵坐标分别是召回率和误杀率(1-精确率) 上面混淆矩阵图中的3/(2+3),以及1/(1+4),纵坐标可以理解为抓住
坏人的比例;横坐标可以理解为误伤好人的比例。
而ROC曲线的两个极端[0,0]点表示(用抓坏人来举例)不管好人坏人全放过,也就是抓住坏人0%,误伤好人0%,不抓坏人也不误伤好人。[1,1]点表示不管好人坏人全抓住,也就是抓住坏人100%,误伤好人100%
【4】AUC曲线
AUC曲线是ROC曲线下的面积,介于0和1之间,作为数值可以直观的评价分类器的好坏,值越大越好。
AUC = 1,是完美分类器,采用这个预测模型时,存在至少一个阈值能得出完美预测。绝大多数预测的场合,不存在完美分类器。
0.5 < AUC < 1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值。
AUC = 0.5,跟随机猜测一样(例:丢铜板),模型没有预测价值