分类评价指标之ROC

什么是ROC曲线

ROC(Receiver operating Characteristic Curve),中文名叫受试者工作特征曲线。ROC的横坐标表示假阳性率FPR,纵坐标表示正阳性率TPR。它们的计算公式如下

$$\begin{cases}TPR = \frac{TP}{TP+FN}\\FPR=\frac{FP}{FP+TN}\end{cases}$$

举一个简单的例子,现在有10名疑似肺炎的患者,使用模型预测得出,7名为肺炎患者,其余为正常。而经过医院检测得到,预测为肺炎患者的7人中6人确认患病,其余四人正常。由此,可以得出

$$\begin{cases} TPR=\frac{6}{6}=1 \\ FPR=\frac{1}{1+3}=\frac{1}{4}\end{cases}$$

如何绘制ROC曲线

对于一个二分类问题,通常模型会预测正类别的概率,但这个概率高于指定的阈值时,被认为是正类。通过不断的调整这个阈值得到不同的(FPR, TPR),连接这些点所得到的曲线就是ROC曲线。

下面还是举一个简单的例子,下表是某个二分类模型所得到的预测(已经按照概率排好序)

样本序号 真实标签 预测概率
1 p 0.9
2 p 0.8
3 n 0.7
4 p 0.6
5 p 0.55
6 p 0.54
7 n 0.53
8 n 0.52
9 p 0.51
10 n 0.505
11 p 0.4
12 n 0.39
13 p 0.38
14 n 0.37
15 n 0.36
16 n 0.35
17 p 0.34
18 n 0.33
19 p 0.30
20 n 0.1

首先从第一个点开始,即将阈值设定为无穷大,这时模型的所有预测均对应n,即TPR=0, FPR=0, 得到ROC曲线的第一个点(0, 0)。

将阈值降到0.9,这时模型预测出一个正类,其余全为负类,即$TPR=\frac{1}{10},FPR=0$,得到第二个点(0, 0.1)。

不断下调阈值,直到画出所有的关键点。
TIM图片20200329175553.png
实现过程如下

  1. 将预测概率降序排序;
  2. 得到所有的切分点/阈值(对概率取唯一值);
  3. 依次得到每个切分点对应的TPR和FPR;
  4. 绘制ROC曲线;

其实还有一种更简单的方法来绘制ROC曲线,过程如下:

  1. 统计样本中正负样本的数目,正样本的数目为P,负样本的数目为N;
  2. 将坐标横轴划分为N份,每一份$\frac{1}{N}$,将坐标纵轴划分为P份,每一份$\frac{1}{P}$;
  3. 将预测概率降序排序;
  4. 遍历所有预测,遇到正样本,往纵轴方向移动一格,遇到负样本,往横轴方向移动一格;
  5. 最终曲线将结束在(1, 1)位置;

这里展示的是二分类下的ROC曲线绘制过程。多分类的过程类似,只不过多分类任务中,模型的输出是每个类别的概率,取具有最大概率的类别作为预测类别。

什么叫AUC

AUC指的是ROC曲线与坐标轴围成的面积。需要注意的是,AUC是处于$(0.5, 1]$范围的。这里可能大家都会觉得有些疑惑,明明ROC曲线可以在$y=x$下方呀。这是因为当AUC小于0.5时,我们可以用$1-AUC$,所以AUC始终在$(0.5, 1]$。

AUC越大,说明分类器可以把真正的正样本排在前面, 分类性能更好。

ROC曲线的特点

  1. ROC曲线对样本的类别不均衡更加鲁棒

    这里也举一个例子。使用一个数据集,训练了2个模型。我们使用测试集来评估模型的性能,测试集中包含了100个正样本,2000个负样本。

    模型A预测了100个正样本,90个正确。

    模型A预测了500个正样本,90个正确。

模型 模型B
TPR 0.9 0.9
Recall 0.9 0.9
FPR 0.005 0.204
Precision 0.9 0.18

我们可以看出,在数据集类别严重不均衡时,两个模型的FPR差异为0.199, 而Precision的差异高达0.72。

可以得到,这两个模型的PR曲线相差极大(Precision相差接近1), 而ROC曲线则较为接近。

之所以会导致如此大的差异,主要原因是,PR曲线只针对正样本,而ROC曲线同时关注正负样本(可以从计算公式看出)。至于应该选ROC还是PR则需要根据具体的任务来定,比如疾病的检测,我们更关注正样本,这个时候可以选择PR。而ROC曲线在推荐领域应用广泛。

Refernce

《百面机器学习》
机器学习面试之AUC三问


mhxin
84 声望15 粉丝