一、ROC曲线
ROC全称为接收者操作特性曲线(Receiver Operating Characteristics Curve,ROC Curve),在机器学习领域,它是指在不同阈值的情况下,将得到的真阳性率和假阳性率分别作为x,y坐标值,在图上绘点,然后以点连线,这样所绘制出来的曲线称为ROC曲线。
1. 真阳性率与假阳性率的定义
现有混淆矩阵如下所示:
实际类别 | 预测类别 | |||
是 | 否 | 总计 | ||
是 | TP | FN | P(实际上为该类的) | |
否 | FP | TN | N(实际上不是该类的) |
表中各指标如下所示:
(1)True positives(TP): 被正确地划分为正例的个数,即实际为正例且被分类器划分为正例的实例数(样本数);
(2)False positives(FP): 被错误地划分为正例的个数,即实际为负例但被分类器划分为正例的实例数;
(3)False negatives(FN):被错误地划分为负例的个数,即实际为正例但被分类器划分为负例的实例数;
(4)True negatives(TN): 被正确地划分为负例的个数,即实际为负例且被分类器划分为负例的实例数。
根据以上指标,我们可以计算真阳性率(TPR)和假阳性率(FPR):
T
P
R
=
T
P
T
P
+
F
N
=
T
P
P
TPR = \dfrac{TP}{TP+FN} = \dfrac{TP}{P}
TPR=TP+FNTP=PTP
F
P
R
=
F
P
F
P
+
T
N
=
F
P
N
FPR = \dfrac{FP}{FP+TN} = \dfrac{FP}{N}
FPR=FP+TNFP=NFP
2. ROC曲线的绘制
ROC曲线上的每一个点代表在某个特定阈值下所计算得到的真阳性率和假阳性率。
举例说明,先我们有六个番茄样本,其编号分别为1,2,…6。现有一个模型用于预测这些番茄是好的还是坏的,番茄的编号和真实情况分别如下(我们将其按预测为好番茄的概率从上至下排列)。
编号 | 真实类别 | 预测值 |
---|---|---|
1 | 好番茄 | 0.95 |
2 | 烂番茄 | 0.80 |
3 | 好番茄 | 0.73 |
4 | 好番茄 | 0.59 |
5 | 烂番茄 | 0.47 |
6 | 好番茄 | 0.40 |
(1)假设我们设定的阈值为0.96,那么所有番茄都被预测为烂番茄,此时TPR=0,FRP=0
(2)假设我们设定的阈值为0.9,也就是只要番茄1被预测为好番茄,其他由于低于阈值被判定为烂番茄,这时我们可计算得到TPR=1/4=0.25, FPR=0
(3)一次类推,通过设定不同的阈值可以得到一组TPR和FPR,即
[0, 0.25, 0.25, 0.5, 0.75, 0.75, 1]和[0, 0, 0.5, 0.5, 0.5, 1, 1]
因此可得ROC曲线为:
二. AUC 评价指标
AUC(Area Under Curve),指的是ROC曲线下的面积。同时它表示随机选出由一个正例和一个负例组成的样本对,正例的预测值大于负例预测值的概率。因此它可以用来评价分类器的分类效果。
这里有一个比较容易疑惑的点,也就是为什么AUC可以表示正例预测值大于负例预测值的概率?下面我们将结合具体例子解释。
首先按照一般的概率统计方法,为了获取随机选出由一个正例和一个负例组成的样本对,正例的预测值大于负例预测值的概率,我们要统计每一个正例-负例对,以得到正例预测值大于负例预测值的频率,以频率估计概率。比如,在下表中,我们有4个好番茄,2个烂番茄,所以共有8个正例-负例对,而这8个正例-负例对当中,正例概率值大于负例概率值的有4对,所以正例预测值大于负例预测值的概率被估计为4/8=0.5
编号 | 真实类别 | 预测概率 |
---|---|---|
1 | 好番茄 | 0.95 |
2 | 烂番茄 | 0.80 |
3 | 好番茄 | 0.73 |
4 | 好番茄 | 0.59 |
5 | 烂番茄 | 0.47 |
6 | 好番茄 | 0.40 |
下面我们看AUC的定义是否跟上述所要求的概率等价。
我们不妨将上述的ROC曲线稍加变换,即将TPR和FPR分别替换为TP和FP的数量,记为TPN和FPN,则ROC曲线变换为下图:
在上图点2所代表的阈值处,我们统计番茄2及其之前的正例预测值大于负例预测值的正例-负例对,可以看到番茄2为负例,番茄1为正例,满足条件的正例-负例对为1,正好等于点2所对应的x坐标与y坐标的乘积(黄色区域面积),这里黄色区域面积的意义就是增加了一个烂番茄,看之前一共有几个好番茄(y轴坐标),那么此时就可知正例-负例对有几对。
再看到点5,此时又增加了一个烂番茄,蓝色区域面积代表前面一共有几个好番茄(即多少个正例-负例对)。
因此,可以看到,在样例按预测值从大到小排列后得到的ROC曲线面积正好代表了正例预测值大于负例预测值的正例-负例对的个数。
当我们从由FPN和TPN构建的ROC曲线回到由FPR和TPR构建的ROC曲线时,其实就是做一个归一化,此时ROC曲线下面积等价于(正例-负例对的个数/(P*N)),这恰恰是一开始所提到的随机选出由一个正例和一个负例组成的样本对,正例的预测值大于负例预测值的概率。
因此AUC(Area Under Curve),既指的是ROC曲线下的面积,又可以表示随机选出由一个正例和一个负例组成的样本对,正例的预测值大于负例预测值的概率。
三. 为什么要使用AUC 评价指标
因为ROC曲线有一个很好的特征:在实际的数据集中经常会出现类别不平衡现象,即负样本比正样本多很多(或者相反),而且测试数据中的正负样本的分布也可能随着时间而变化。而在这种情况下,ROC曲线能够保持不变(ROC曲线的x,y坐标可以看成是正例和(1-负例的召回率),PR曲线的x,y则是precision-recall,当负样本明显增加时,随着阈值取值不断降低,被判为正例的样本越来越多,此时正例准确率大幅下降,recall略微增加,也就是x基本不变,y大幅下降。而对于ROC曲线,在x,y都很小时与未增加负样本时一致,到后期则是x增加,y基本不变(后期FP会明显增多,但是由于增加了负样本N本身也很大,所以FP/N在添加负样本前和负样本后变化不大)。下图是ROC曲线和Precison-Recall曲线的对比:
在上图中,a和c为ROC曲线,b和d为Precison和Recall曲线。a和b展示的是在原始测试集(正负样本平衡)的结果,c和d是将测试集中负样本的数量变为原来的10倍后分类器的结果。可以看出,曲线基本保持不变,而Precison和Recall变化较大。
四、参考资料
【1】https://blog.youkuaiyun.com/yinyu19950811/article/details/81288287
【2】https://blog.youkuaiyun.com/qq_40765537/article/details/105344798
【3】https://zhuanlan.zhihu.com/p/384494429