一个案例教会你AUC和ROC--非常容易理解!

AUC ROC简介

AUC是Area Under Curve的简写,这里的Curve其实是指ROC曲线。
AUC:一个正例,一个负例,预测为正的概率值比预测为负的概率值还要大的可能性。
所以根据定义:我们最直观的有两种计算AUC的方法:
1:绘制ROC曲线,ROC曲线下面的面积就是AUC的值;
2:假设总共有(m+n)个样本,其中正样本m个,负样本n个,总共有mn个样本对,计数,正样本预测为正样本的概率值大于负样本预测为正样本的概率值记为1,累加计数,然后除以(mn)就是AUC的值.

ROC曲线又是什么鬼?ROC全称receiver operating characteristic curve,翻译为受试者工作特性曲线。而ROC的计算又需要借助混淆矩阵,因此,我们先从混淆矩阵开始谈起

混淆矩阵

假设,我们有一个任务:给定一些患者的样本,构建一个模型来预测肿瘤是不是恶性的。在这里,肿瘤要么良性,要么恶性,所以这是一个典型的二分类问题。

假设我们用y=1表示肿瘤是良性,y=0表示肿瘤是恶性。则我们可以制作如下图的表格:
在这里插入图片描述
如上图,
TP表示预测为良性,而实际也是良性的样例数;
FN表示预测为恶性,而实际是良性的样例数;
FP表示预测为良性,而实际是恶性的样例数;
TN表示预测为恶性,而实际也是恶性的样例数;

所以,上面这四个数就形成了一个矩阵,称为混淆矩阵。

那么接下来,我们如何利用混淆矩阵来计算ROC呢?
首先我们需要定义下面两个变量:
在这里插入图片描述
FPR表示,在所有的恶性肿瘤中,被预测成良性的比例。称为假阳性率。伪阳性率告诉我们,随机拿一个恶性的肿瘤样本,有多大概率会将其预测成良性肿瘤。显然我们会希望FPR越小越好。
在这里插入图片描述
TPR表示,在所有良性肿瘤中,被预测为良性的比例。称为真阳性率。真阳性率告诉我们,随机拿一个良性的肿瘤样本时,有多大的概率会将其预测为良性肿瘤。显然我们会希望TPR越大越好。

如果以FPR(假阳性率)为横坐标,TPR(真阳性率)为纵坐标,就可以得到下面的ROC曲线坐标系:
在这里插入图片描述
可能看到这里,你会觉得有点奇怪,用FPR和TPR分别作横纵坐标有什么用呢?我们先来考察几个特殊的点。

点(0,1),即FPR=0,TPR=1。FPR=0说明FP=0,也就是说,没有假正例。TPR=1说明,FN=0,也就是说没有假反例。这不就是最完美的情况吗?所有的预测都正确了。良性的肿瘤都预测为良性,恶性肿瘤都预测为恶性,分类百分之百正确。这也体现了FPR 与TPR的意义。就像前面说的我们本来就希望FPR越小越好,TPR越大越好。

点(1,0),即FPR=1,TPR=0。这个点与上面那个点形成对比,刚好相反。所以这是最糟糕的情况。所有的预测都预测错了。

点(0,0),即FPR=0,TPR=0。也就是FP=0,TP=0。所以这个点的意义是所有的样本都预测为恶性肿瘤。也就是说,无论给什么样本给我,我都无脑预测成恶性肿瘤就是了。

点(1,1),即FPR=1,TPR=1。显然,这个点跟点(0,0)是相反的,这个点的意义是将所有的样本都预测为良性肿瘤。

考察完这四个点,我们可以知道,如果一个点越接近左上角,那么说明模型的预测效果越好。如果能达到左上角(点(0,1)),那就是最完美的结果了。即真阳性率越大,假阳性率越小越好。所以表现为ROC曲线越上凸,算法的分类效果越优秀。

ROC曲线

好了,现在我们知道ROC横纵坐标代表什么了,那么ROC曲线是如何画出来的呢?
我们知道,在二分类(0,1)的模型中,一般我们最后的输出是一个概率值,表示结果是1的概率。那么我们最后怎么决定输入的x是属于0或1呢?我们需要一个阈值,超过这个阈值则归类为1,低于这个阈值就归类为0。所以,不同的阈值会导致分类的结果不同,也就是混淆矩阵不一样了,FPR和TPR也就不一样了。所以当阈值从0开始慢慢移动到1的过程,就会形成很多对(FPR, TPR)的值,将它们画在坐标系上,就是所谓的ROC曲线了。

我们来举一个例子。比如我们有5个样本:
真实的类别(label)为y = c(1,1,0,0,1).
一个分类器预测样本为1的概率为p=c(0.5, 0.6, 0.55, 0.4, 0.7).

正如上面说的,我们需要有阈值,才能将概率转换为类别,才能得到FPR和TPR。而选定不同的阈值会得到不同的FPR和TPR。假设我们现在选定的阈值为0.1,那么5个样本都被归类为1。如果选定0.3,结果仍然一样。如果选了0.45作为阈值,那么只有样本4被分进0,其余都进入1类。当我们不断改变阈值,就会得到不同的FPR和TPR。然后我们将得到的(FPR , TPR)连接起来,就得到了ROC曲线了。

注意:设定一个函数的阈值,超过该阈值就预测这两个记录是匹配的。如果阈值设置过高,匹配的记录将被错误地标记为不匹配,这种情况称为假阴性率(false-negative rate);而如果阈值设置过低,不匹配的记录将被错误地标记为匹配,这种情况称为假阳性率(false-positive rate)。
在这里插入图片描述
看到这里,也许我们还有一点难理解。这里要注意:
1 阈值的范围是[0,1],当阈值从1到0慢慢移动时,FPR会越来越大。因为FP(假正例)会越来越多。

2 如果在给定的样本中,我都随机预测,也就是0.5概率预测为良性肿瘤,0.5概率预测为恶性肿瘤。那么这条曲线会是怎样的呢?可以想象,如果数据是均匀,那么这条曲线就是y=x。

3 注意曲线一定是从(0,0)开始最终到达(1,1)的。理解了上面四个点的意义就知道了。

4 事实上,ROC曲线不是光滑的,而是阶梯型的。为什么呢?因为样本的数量是有限的,而FPR和TPR的变化需要至少有一个样本变化了,在没有变化的间隙里,就不会有变化。也就是说,步进是1/样本数。

ROC曲线的绘制

我们在使用一个二分类算法做预测时,一般的是会给出样本属于正样本的概率Pi。
然后,我们会选定一个阈值P0,当Pi>=P0时,预测为正样本;

至此,选定一个算法A,每选定一个阈值P0,都可以算出FP/TP,也就对应了ROC曲线上的一个点。

那具体绘制ROC曲线时,这些阈值如何选取,FP/TP组合成的所有点又该如何排列呢?

具体流程是这样:

1)将所有测试样本的预测概率Pi按照从大到小排列

2)从大到小,依次取各个Pi的值作为阈值。

3)考虑P0=P1的情况,这时只有一个样本被预测为1,其余所有样本都被预测为0。这里FP和TP都会很小,所以这个点会接近左下角。

4)随着阈值P0不断变小(条件放宽),预测为1的样本越来越多,FP和TP都应该越来越大。表现为ROC曲线由左下角向右上角不断蔓延。

5)考虑P0=Pn的情况,这时所有样本都被预测为1。这时FP=TP=1.0,这时ROC曲线达到右上角。

所以,ROC曲线其实有三个要素:算法A,测试数据D,阈值集合P。它评价了一个算法A,在测试数据D上,选取不同的阈值P时,假阳性率和真阳性率的表现。

当然,真阳性率越大,假阳性率越小越好。所以表现为ROC曲线越上凸,算法的分类效果越优秀。

计算AUC

AUC 值就是一个用来评价二分类模型优劣的常用指标, AUC 值越高通常表明模型的效果越好.
AUC表示的是正例排在负例前面的概率
下面通过一个案例来计算AUC:
在这里插入图片描述
如上图所示,我们有8个测试样本,模型的预测值(按大小排序)和样本的真实标签如右表所示,绘制ROC曲线的整个过程如下所示:

1)令阈值等于第一个预测值0.91,所有大于等于0.91的预测值都被判定为阳性,
此时TPR=1/4,FPR=0/4,所有我们有了第一个点(0.0,0.25)
2)令阈值等于第二个预测值0.85,所有大于等于0.85的预测值都被判定为阳性,
这种情况下第二个样本属于被错误预测为阳性的阴性样本,也就是FP,
所以TPR=1/4,FPR=1/4,所以我们有了第二个点(0.25,0.25)
3)按照这种方法依次取第三、四...个预测值作为阈值,就能依次得到ROC曲线
上的坐标点(0.25,0.5)、(0.25,0.75)...(1.0,1.0)
4)将各个点依次连接起来,就得到了如图所示的ROC曲线,计算ROC曲线下方的
面积为0.75,即AUC=0.75

AUC(ROC曲线下的面积),就可以用来评价ROC曲线的上凸程度。从这里也可以看出,AUC只能用于二分类模型的评估。

优势:

我们知道阈值可以取不同,也就是说,分类的结果会受到阈值的影响。如果使用AUC的话,因为阈值变动考虑到了,所以评估的效果更好。
另一个好处是,ROC曲线有一个很好的特性:当测试集中的正负样本分布发生变化了,ROC曲线可以保持不变。在实际的数据集中经常会出现类不平衡(class imbalance)现象,即负样本比正样本多很多(或者相反),而且测试数据中的正负样本的分布也可能随着时间变化。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值