文章目录
  1. 1. 概述
  2. 2. ROC
    1. 2.1. 二元分类模型
    2. 2.2. ROC空间
    3. 2.3. ROC曲线
  3. 3. AUC
    1. 3.1. AUC的意义
    2. 3.2. 样本均衡的敏感性
    3. 3.3. 计算AUC
      1. 3.3.1. 面积计算法
      2. 3.3.2. 直接计算法
      3. 3.3.3. 交叉计算法
  4. 4. 对比精确率、召回率和F值
  5. 5. 总结
  6. 6. 参考资料

概述

ROC(Receiver Operating Characteristic) 曲线和 AUC(Area Under Curve) 常被用来评价一个二值分类器(binary classifier)的优劣。

ROC

二元分类模型

ROC曲线首先是由二战中的电子工程师和雷达工程师发明的,用来侦测战场上的敌军载具(飞机、船舰),也就是信号检测理论。ROC曲线是一种坐标图式的分析工具,在机器学习和数据挖掘领域,用于评价二元分类模型。

分类模型,是将一个实例映射到一个特定类的过程,而二元分类模型是输出结果只有两种类别的模型,例如:(正类/负类)、(有病/没病)、(垃圾邮件/非垃圾邮件)和(敌军/非敌军)等。二元分类模型对实例预测类别,有四种结果

  • 真阳性(True Positive):预测为正类,实际上是正类;
  • 假阳性(False Positive):预测为正类,实际上是负类;
  • 真阴性(True Negative):预测为负类,实际上是负类;
  • 假阴性(False Negative):预测为负类,实际上是正类

这四种结果可以画成 $2\times 2$ 的矩阵如下

ROC空间

ROC空间将 假阳性率(FPR) 定义为 $X$ 轴,真阳性率(TPR) 定义为 $Y$ 轴。如下图

其中,FPR 和 TPR 定义如下

  • TPR,在所有实际为正类的样本中,被正确地预测为正类之比率,$TPR = \frac{TP}{TP+FN}$;
  • FPR,在所有实际为负类的样本中,被错误地预测为正类之比率,$FPR = \frac{FP}{FP+TN}$。

如上图,接下来考虑ROC空间中的4个坐标点和对角线

  • 坐标点 $(0, 1)$,即 $FPR=0, TPR=1$,这意味着 $FP=0$,且 $FN=0$,这是一个完美的分类模型,不存在将负样本预测为正样本,并且将所有的正样本都预测为正样本;
  • 坐标点 $(1, 0)$,即 $FPR=1, TPR=0$,这意味着 $TN=0$,且 $TP=0$,没有比这个更糟糕的分类模型,将所有的负样本识别为正样本,并将所有正样本识别为负样本;
  • 坐标点 $(0, 0)$,即 $FPR=0, TPR=0$,这意味着 $FP=TP=0$,分类模型将所有的样本都预测为负样本;
  • 坐标点 $(1, 1)$,即 $FPR=1, TPR=1$,分类模型将所有的样本都预测为正样本;
  • 虚线 $y=x$,这条对角线上的点表示的是一个采用随机猜测策略的分类模型的结果,例如 $(0.5,0.5)$,表示该分类模型随机对于一半的样本预测为正样本,另外一半的样本为负样本。

ROC曲线

对于一个特定的二元分类模型和测试数据集,要得到一个曲线,需要一系列FPR和TPR的值。在 Wikipedia 上对ROC曲线定义如下

In statistics, a receiver operating characteristic curve, or ROC curve, is a graphical plot that illustrates the performance of a binary classifier system as its discrimination threshold is varied. The curve is created by plotting the true positive rate (TPR) against the false positive rate (FPR) at various threshold settings.

即二元分类模型会对测试数据集中的每个样本一个预测为正样本(或负样本)的概率,随着 阈值 变化,会得到多组 $(FPR, TPR)$ 值,如下图

假设我们已经得到所有样本的概率输出(属于正样本的概率),我们根据每个测试样本属于正样本的概率值从大到小排序。下图是一个示例,图中共有20个测试样本,Class 一栏表示每个测试样本真正的标签($p$ 表示正样本,$n$ 表示负样本),Score 表示每个测试样本属于正样本的概率。

20个测试样本中,正样本的个数,即 Classp 的共有 $10$ 个,则 $TP+FN=10$;负样本的个数,即 Classn 的共有 $10$ 个,则 $FP+TN=10$。

接下来,我们从高到低,依次将 Score 值作为阈值,当测试样本属于正样本的概率大于或等于这个阈值时,识别它为正样本,否则为负样本。

  • 当阈值 $t > 0.9$ 时,实际正样本识别为正样本的个数为 $0$ 个,则 $TP=0$;实际负样本被识别为正样本的个数为 $0$ 个,则 $FP=0$;此时 $TPR=0$,且 $FPR=0$,坐标点为 $(0, 0)$;
  • 当阈值 $t >= 0.9$ 时,实际正样本识别为正样本的个数为 $1$ 个,即 $Inst#$ 为1的样本,则 $TP=1$;实际负样本被识别为正样本的个数为 $0$ 个,则 $FP=0$;此时 $TPR=0$,且 $FPR=0$,坐标点为 $(0.1, 0)$;
  • 当阈值 $t >= 0.8$ 时,实际正样本识别为正样本的个数为 $2$ 个,即 $Inst#$ 为1和2的样本,则 $TP=2$;实际负样本被识别为正样本的个数为 $0$ 个,则 $FP=0$;此时 $TPR=0.2$,且 $FPR=0$,坐标点为 $(0.2, 0)$;
  • 当阈值 $t >= 0.7$ 时,实际正样本识别为正样本的个数为 $2$ 个,即 $Inst#$ 为1和2的样本,则 $TP=2$;实际负样本被识别为正样本的个数为 $1$ 个,即 $Inst#$ 为3的样本,则 $FP=1$;此时 $TPR=0.2$,且 $FPR=0.1$,坐标点为 $(0.2, 0.1)$;
  • 当阈值 $t >= 0.6$ 时,实际正样本识别为正样本的个数为 $3$ 个,即 $Inst#$ 为1、2和4的样本,则 $TP=3$;实际负样本被识别为正样本的个数为 $1$ 个,即 $Inst#$ 为3的样本,则 $FP=1$;此时 $TPR=0.3$,且 $FPR=0.1$,坐标点为 $(0.3, 0.1)$;
    $\cdots$
  • 当阈值 $t >= 0.1$ 时,实际正样本识别为正样本的个数为 $10$ 个,则 $TP=10$;实际负样本被识别为正样本的个数为 $10$ 个,则 $FP=10$;此时 $TPR=1.0$,且 $FPR=1.0$,坐标点为 $(1.0, 1.0)$;

不断变化阈值,将得到一组FPR和TPR对值,在ROC空间描点并用虚线连接起来,得到ROC曲线如下图

AUC

AUC(Area Under Curve)被定义为ROC曲线下的面积,显然这个面积的数值不会大于1。又由于ROC曲线一般都处于 $y=x$ 这条直线的上方,所以AUC的取值范围在$[0.5, 1]$之间。使用AUC值作为评价标准是因为很多时候ROC曲线并不能清晰的说明哪个分类器的效果更好,而作为一个数值,对应AUC更大的分类器效果更好。

AUC的意义

在论文 An introduction to ROC analysis 中对AUC值如下表述

The AUC value is equivalent to the probability that a randomly chosen positive example is ranked higher than a randomly chosen negative example.

AUC值是一个概率值,当你随机挑选一个正样本以及一个负样本,当前的分类算法根据计算得到的Score值将这个正样本排在负样本前面的概率就是AUC值。当然,AUC值越大,当前的分类算法越有可能将正样本排在负样本前面,即能够更好的分类。

或者说,AUC就是从所有正样本中随机选取一个样本,从所有负样本中随机选取一个样本,然后根据分类模型对两个随机样本进行类别预测,把正样本预测为正样本的概率为 $p_{1}$,把负样本预测为正样本的概率为 $p_{0}$,则 $p_{1}>p_{0}$ 的概率就等于AUC。

所以,AUC反映的是分类器对样本的排序能力,可以分以下几种情况

  • $AUC = 1$,是完美分类器,采用这个预测模型时,不管设定什么阈值都能得出完美预测。绝大多数预测的场合,不存在完美分类器;
  • $0.5 < AUC < 1$,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值;
  • $AUC = 0.5$,跟随机猜测一样(例:丢硬币),模型没有预测价值;
  • $AUC < 0.5$,比随机猜测还差;但只要总是反预测而行,就优于随机猜测,因此不存在AUC < 0.5的情况。

AUC不同的取值,对应的ROC曲线的形状如下图

样本均衡的敏感性

AUC对样本类别是否均衡并不敏感,即当测试集中的正负样本的分布变化的时候,ROC曲线能够保持不变。在实际的数据集中经常会出现类不平衡现象,即负样本比正样本多很多(或者相反),而且测试数据中的正负样本的分布也可能随着时间变化。

这是因为ROC曲线上的点为 $(FPR, TPR)$,坐标点的两个值均为比例,受到正负样本数量变化影响不大。

如上图,$(a)$ 和 $(b)$ 都是ROC曲线,$(b)$ 是在将测试集中负样本的数量增加到原来的10倍后,分类模型的结果。可以明显的看出,ROC曲线基本保持原貌。

计算AUC

计算AUC,即计算ROC曲线下面的面积,下面介绍3中算法

面积计算法

在计算得到一系列的 $(FPR, TPR)$ ,如下

  • $(fpr_{1}, tpr_{1}), (fpr_{1}, tpr_{1}), \cdots, (fpr_{n}, tpr_{n}).$

其中,$fpr_{1}=0, tpr_{1}=0, fpr_{n}=1, tpr_{n}=1$,即按照 Score 降序排列样本,不断降低阈值后计算出来的坐标值顺序组织上述坐标值。

$$auc=\sum_{i=1}^{n-1}\frac{(tpr_{i+1}+tpr_{i})\cdot (fpr_{i+1}-fpr_{i})}{2.0}.$$

根据坐标点的值,计算一个个矩阵的面积,然后累加得到曲线下的面积,即AUC的值。

直接计算法

按照 Score 降序排列样本,不断降低阈值后,计算 $(FP, TP)$,得到一系列对

  • $(fp_{1}, tp_{1}), (fp_{2}, tp_{2}), \cdots,(fp_{n}, tp_{n}).$

$$auc=\frac{\sum_{i=1}^{n-1}(tp_{i+1}+tp_{i})\cdot(fp_{i+1}-fp_{i})}{2.0\cdot count(n) \cdot count(p)}.$$

其中,$count(n)$是实际负样本的个数,$count(p)$ 是实际正样本的个数。

交叉计算法

假设正样本 $m$ 个,负样本 $n$ 个,做交叉,总共会产生 $m \cdot n$ 个样本对,统计一下在这些样本对中有多少正样本的score大于负样本的score,例如有 $k$ 对,那么AUC的值如下

$$auc = \frac{k}{m\cdot n}.$$

举例说明一下,正样本标记为 $1$,负样本标记为 $-1$,共 6 个样本为 $(1, 1, 1, -1, -1, -1)$

  • 模型1对6个样本预测正类的概率为 $(0.8, 0.7, 0.3, 0.5, 0.6, 0.9)$
  • 模型2对6个样本预测正类的概率为 $(0.1, 0.8, 0.9, 0.5, 0.85, 0.2)$

进行交叉配对后,结果如下

  • 模型1正样本score大于负样本的对 $(y1,y4), (y1,y5), (y2,y4), (y2,y5)$
  • 模型2正样本score大于负样本的对 $(y2,y4), (y2,y6), (y3,y4), (y3,y5), (y3,y6)$

模型1的 $AUC=\frac{4}{9}$,而模型2的 $AUC=\frac{5}{9}$,所以模型2比模型1要好。

对比精确率、召回率和F值

评价二元分类模型的指标还有精确率$Precision$,召回率$Recall$ 和 F值$F-Measure$。

精确率和召回率是广泛用于信息检索和统计学分类领域的两个度量值,用来评价结果的质量。在评价分类模型时,定义如下

  • 精确率定义为对于给定的测试数据集,分类器正确分类的样本数与判定为正类的数之比。

$$Precision = \frac{TP}{TP + FP}.$$

  • 召回率也称为True Positive Rate,反映了被正确判定的正类占总的正类样本的比例。

$$Recall=\frac{TP}{TP+FN}.$$

  • F值即为精确率和召回率的调和平均值

$$F-Measure=\frac{2\cdot Precision \cdot Recall}{Precision + Recall}=\frac{2\cdot TP}{2TP + FP + FN}.$$

在评价分类模型时,AUC比精确率和召回率更常用。因为很多机器学习的模型对分类问题的预测结果都是概率,如果要计算精确率和召回率,需要先把概率转化为类别,这就需要手动设置一个阈值,如果对一个样本的预测概率高于这个阈值,就把这个样本放到这个类别中,低于这个阈值,放进另一个类别里面。所以这个阈值很大程度影响了精确率和召回率的计算。而使用AUC可以避免把预测概率转换为类别。

总结

ROC和AUC常用于评价二元分类模型的优劣。二元分类模型输出样本被识别为正类(或负类)的概率,如果二元模型分类效果比较好,按照概率值排序的话,负样本排在正样本之后。通过计算ROC曲线下面的面积AUC,可以评价正样本是否排序在负样本前。

参考资料

  1. ROC曲线
  2. 机器学习和统计里面的auc怎么理解?
  3. ROC和AUC介绍以及如何计算AUC
  4. Tom Fawcett, An introduction to ROC analysis. Pattern Recognition Letters. 2006.
  5. AUC与ROC - 衡量分类器的好坏
  6. AUC的计算
文章目录
  1. 1. 概述
  2. 2. ROC
    1. 2.1. 二元分类模型
    2. 2.2. ROC空间
    3. 2.3. ROC曲线
  3. 3. AUC
    1. 3.1. AUC的意义
    2. 3.2. 样本均衡的敏感性
    3. 3.3. 计算AUC
      1. 3.3.1. 面积计算法
      2. 3.3.2. 直接计算法
      3. 3.3.3. 交叉计算法
  4. 4. 对比精确率、召回率和F值
  5. 5. 总结
  6. 6. 参考资料