文章目录
ROC (Receiver Operating Characteristic),受试者工作特征曲线;它源于“二战”中用于敌机检测的雷达信号分析技术,上世纪 60-70 年代开始被用于一些心理学、医学检测应用中,此后被引入机器学习领域。
1. ROC曲线的设计思路
ROC最初用于二分类任务,现在也可以推广到多分类任务中。在二分类任务中,模型的输出并非简单的 0/1,而是一个 [ 0 , 1 ] [0,1] [0,1]之间的预测值。然后预测值与一个分类阈值 (threshold) 进行比较:若大于阈值则分为正类,否则为反类。最常见的操作 t h r e s h o l d = 0.5 threshold=0.5 threshold=0.5
该阈值和概率预测结果直接决定了学习器的泛化能力。根据阈值和概率预测结果,我们可将测试样本进行排序:可能是正例的排在前面,不可能是正例的排在后面。这样,分类过程就相当于在这个排序中以某个“截断点”将样本分为两部分;前一部分判作正例,后一部分则判作反例。
在不同的应用任务中,我们可根据任务需求来采用不同的截断点。如果我们更重视“查准率”,则可选择排序中靠前的位置进行截断;如果更重视“查全率”,则可选择靠后的位置进行截断。 因此,排序本身的质量好坏,体现了综合考虑学习器在不同任务下的“期望泛化性能”。ROC 曲线就是从这个角度出发来研究学习器泛化性能的有力工具。
本节参考:周志华《机器学习 - 西瓜书》 2.3.3 节
2. 真正例率 TPR 和假正例率 FPR
对于二分类问题可将样例根据其真实类别与学习器预测类别的组合划分为真正例 (true positive)、假正例(false positive)、真反例(true negative)、假反例(false negative)四种情形,令TP、FP、TN、FN 分别表示其对应的样例数,则显然有 TP+FP+TN +FN 样例总数。分类结果的混淆矩阵如下:

根据混淆矩阵我们可以得到 “真正例率”(True Positive Rate, TPR)和 “假正例率”(False PositiveRate, FPR):
- 真正例率 TPR:将正例预测为正例(真正例)的数量 占 所有真实情况为正例 的比例
T P R = T P T P + F N TPR=\frac{TP}{TP+FN} TPR=TP+FNTP - 假正例率 FPR:将反例预测为正例(假反例)的数量 占 所有真实情况为反例 的比例
F P R = F P F P + T N FPR=\frac{FP}{FP+TN} FPR=FP+TNFP
3. ROC 曲线
ROC 曲线的横轴是假正例率 FPR,纵轴是真正例率 TPR
事实上,机器学习模型的一个特点是:在模型性能固定的前提下,如果模型将更多的正例预测为正例,那么也必然会将更多的反例预测为正例。即 TPR 越大,则 FPR 也会越大。 这就像邓小平同志在指导改革开放工作中说的那样,“改革开放以后,好的东西会进来,苍蝇蚊子也会进来。”
一般的ROC曲线如下:

3.1 ROC 曲线怎么画
ROC 曲线的作图步骤:
- (1)给定 m + m^+ m+ 个正例和 m − m^- m− 个反例,通过分类器得到每个样本的预测概率,对其从高到低进行排序
- (2)将分类阈值设为最大,即把所有样例均预测为反例。此时真正例率和假正例率均为0,则 ROC 曲线的起点为 ( 0 , 0 ) (0,0) (0,0)
- (3)将分类阈值依次设为每个样例的预测值,即依次将每个样例划分为正例。通过该阈值计算 ( F P R , T P R ) (FPR,TPR) (FPR,TPR)坐标,并使用线段连接这些坐标。
- (4)将分类阈值设为最小,即把所有样例均预测为正例。此时真正例率和假正例率均为1,则 ROC 曲线的终点为 ( 1 , 1 ) (1,1) (1,1)
根据 ROC 曲线的作图步骤,我们可以理解其物理意义和 AUC 的计算方法,后面会讲。
3.2 如何根据 ROC 曲线选择模型
在实际情况中,不同模型的 ROC 曲线会相交,此时将难以比较不同模型的性能优劣。此时需要采用一些指标来进行评估:
- FPR 为 0 时的点:在人脸识别任务中,将反例(数据库中不存在的人脸)预测为正例(数据库中存在的人脸)是很危险的,因此往往要选择 F P R = 0 FPR=0 FPR=0 时,TPR 更大 ROC 曲线对应的模型。具体分析可以参考视频 roc曲线详解
- 等错误率(Equal Error Rate, EER)表示 F P R = T P R FPR=TPR FPR=TPR 时的错误率,即点 ( 0 , 1 ) (0,1) (0,1)和 ( 1 , 0 ) (1,0) (1,0) 的连线与 ROC 曲线交点。如下图中 A 和 B 均为等错误率点,模型 A 的性能更好。

- AUC(Area Under Curve):ROC曲线坐标轴围成的面积。AUC 越大,说明模型性能越好。
在这些指标中,AUC是最常用的。但具体用什么指标来评估模型性能,需要根据具体任务来确定。
4. AUC 的计算方法
进行学习器的比较时,与 P-R 图相似,若一个学习器的 ROC 曲线被另一个学习器的曲线完全“包住”,则可断言后者的性能优于前者; 若两个学习器的 ROC 曲线发生交叉,则难以一般性地断言两者孰优孰劣此时如果一定要进行比较,则较为合理的判据是比较 ROC 曲线下的面积即 AUC (Area Under ROC Curve)
4.1 通过曲线积分的定义计算
从定义可知,AUC 可通过对 ROC 曲线下各部分的面积求和而得。假定ROC 曲线是由坐标为 { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) } \{ (x_1,y_1),(x_2,y_2),...,(x_m,y_m)\} {(x1,y1),(x2,y2</