ROC曲线和AUC

以生物化验举例来说,ROC曲线横坐标就是假阳性率FPR= FP / (FP + TN),纵坐标是真阳性率TPR=TP/ (TPFN),曲线上每个点都对应一个阈值(预测阳性的概率P大于阈值就认为是阳性,小于则认为是阴性)。AUC则是ROC曲线以下的面积,面积越大证明分类器的效果越好。

详细说明如下:

针对一个二分类问题,将实例分成正类(postive)或者负类(negative)。但是实际中分类时,会出现四种情况.

(1)若一个实例是正类并且被预测为正类,即为真正类(True Postive TP)

(2)若一个实例是正类,但是被预测成为负类,即为假负类(False Negative FN)

(3)若一个实例是负类,但是被预测成为正类,即为假正类(False Postive FP)

(4)若一个实例是负类,但是被预测成为负类,即为真负类(True Negative TN)

TP:正确的肯定数目(真阳性)

FN:漏报,没有找到正确匹配的数目(假阴形)

FP:误报,没有的匹配不正确(假阳性)

TN:正确拒绝的非匹配数目(真阴性)

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

ROC曲线和AUC 
绘图过程很简单:给定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] 
绘制曲线结果如下:

ROC曲线和AUC

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