AUC详解

本着尊重原作者(或者转载者)的目的,先把引用链接发上来

https://blog.youkuaiyun.com/Stephen_shijun/article/details/83059863 这篇文章前面讲的很好,重点提到了样本不均衡的情况,但是后面介绍AUC的时候不够详细

https://blog.youkuaiyun.com/lieyingkub99/article/details/81266664 这篇则是讲解AUC讲的比较透彻明了的,但是前提内容没有介绍清楚,所以我拼接了这两篇博文,记录下让我彻底搞懂AUC的表述

遗憾的是,我想copy组合下,结果发现图片和flash搞不过来,需要的朋友移步去原博文吧,讲的很不错!

机器学习:ROC/AUC作为机器学习的评估指标非常重要,也是面试中经常出现的问题(80%都会问到)。其实,理解它并不是非常难,但是好多朋友都遇到了一个相同的问题,那就是:每次看书的时候都很明白,但回过头就忘了,经常容易将概念弄混。还有的朋友面试之前背下来了,但是一紧张大脑一片空白全忘了,导致回答的很差。

我在之前的面试过程中也遇到过类似的问题,我的面试经验是:一般笔试题遇到选择题基本都会考这个率,那个率,或者给一个场景让你选用哪个。面试过程中也被问过很多次,比如什么是AUC/ROC?横轴纵轴都代表什么?有什么优点?为什么要使用它?

我记得在我第一次回答的时候,我将准确率,精准率,召回率等概念混淆了,最后一团乱。回去以后我从头到尾梳理了一遍所有相关概念,后面的面试基本都回答地很好。现在想将自己的一些理解分享给大家,希望读完本篇可以彻底记住ROC/AUC的概念。

▌什么是性能度量?

我们都知道机器学习要建模,但是对于模型性能的好坏(即模型的泛化能力),我们并不知道是怎样的,很可能这个模型就是一个差的模型,泛化能力弱,对测试集不能很好的预测或分类。那么如何知道这个模型是好是坏呢?我们必须有个评判的标准。为了了解模型的泛化能力,我们需要用某个指标来衡量,这就是性能度量的意义。有了一个指标,我们就可以对比不同模型了,从而知道哪个模型相对好,那个模型相对差,并通过这个指标来进一步调参逐步优化我们的模型。

当然,对于分类和回归两类监督学习,分别有各自的评判标准。本篇我们主要讨论与分类相关的一些指标,因为AUC/ROC就是用于分类的性能度量标准。

▌混淆矩阵,准确率,精准率,召回率

1. 混淆矩阵
在介绍各个率之前,先来介绍一下混淆矩阵。如果我们用的是个二分类的模型,那么把预测情况与实际情况的所有结果两两混合,结果就会出现以下4种情况,就组成了混淆矩阵。

Python资料提升群519970686

由于1和0是数字,阅读性不好,所以我们分别用P和N表示1和0两种结果。变换之后为PP,PN,NP,NN,阅读性也很差,我并不能轻易地看出来预测的正确性与否。因此,为了能够更清楚地分辨各种预测情况是否正确,我们将其中一个符号修改为T和F,以便于分辨出结果。

P(Positive):代表1

N(Negative):代表0

T(True):代表预测正确

F(False):代表错误

按照上面的字符表示重新分配矩阵,混淆矩阵就变成了下面这样:

 

将这种表示方法总结如下,可分为两部分:

 

因此对于这种表示方法可以这么简单的理解:先看 ①预测结果(P/N),再根据②实际表现对比预测结果,给出判断结果(T/F)。按这个顺序理解,这四种情况就很好记住了。

TP:预测为1,预测正确,即实际1

FP:预测为1,预测错误,即实际0

FN:预测为0,预测错确,即实际1

TN:预测为0,预测正确即,实际0

2. 准确率
既然是个分类指标,我们可以很自然的想到准确率,准确率的定义是预测正确的结果占总样本的百分比,其公式如下:

准确率=(TP+TN)/(TP+TN+FP+FN)

Python资料提升群519970686

虽然准确率可以判断总的正确率,但是在样本不平衡的情况下,并不能作为很好的指标来衡量结果。举个简单的例子,比如在一个总样本中,正样本占90%,负样本占10%,样本是严重不平衡的。对于这种情况,我们只需要将全部样本预测为正样本即可得到90%的高准确率,但实际上我们并没有很用心的分类,只是随便无脑一分而已。这就说明了:由于样本不平衡的问题,导致了得到的高准确率结果含有很大的水分。即如果样本不平衡,准确率就会失效。

正因为如此,也就衍生出了其它两种指标:精准率和召回率。

3. 精准率
精准率(Precision)又叫查准率,它是针对****预测结果而言的,它的含义是在所有被预测为正的样本中实际为正的样本的概率,意思就是在预测为正样本的结果中,我们有多少把握可以预测正确,其公式如下:

精准率=TP/(TP+FP)

精准率和准确率看上去有些类似,但是完全不同的两个概念。精准率代表对正样本结果中的预测准确程度,而准确率则代表整体的预测准确程度,既包括正样本,也包括负样本。

4. 召回率
召回率(Recall)又叫查全率,它是针对原样本而言的,它的含义是在实际为正的样本中被预测为正样本的概率,其公式如下:

精准率=TP/(TP+FN)

召回率的应用场景:比如拿网贷违约率为例,相对好用户,我们更关心坏用户,不能错放过任何一个坏用户。因为如果我们过多的将坏用户当成好用户,这样后续可能发生的违约金额会远超过好用户偿还的借贷利息金额,造成严重偿失。召回率越高,代表实际坏用户被预测出来的概率越高,它的含义类似:宁可错杀一千,绝不放过一个。

5. 精准率和召回率的关系,F1分数
通过上面的公式,我们发现:精准率和召回率的分子是相同,都是TP,但分母是不同的,一个是(TP+FP),一个是(TP+FN)。两者的关系可以用一个P-R图来展示:

如何理解P-R(查准率-查全率)这条曲线?

有的朋友疑惑:这条曲线是根据什么变化的?为什么是这个形状的曲线?其实这要从排序型模型说起。拿逻辑回归举例,逻辑回归的输出是一个0到1之间的概率数字,因此,如果我们想要根据这个概率判断用户好坏的话,我们就必须定义一个阈值。通常来讲,逻辑回归的概率越大说明越接近1,也就可以说他是坏用户的可能性更大。比如,我们定义了阈值为0.5,即概率小于0.5的我们都认为是好用户,而大于0.5都认为是坏用户。因此,对于阈值为0.5的情况下,我们可以得到相应的一对查准率和查全率。

但问题是:这个阈值是我们随便定义的,****我们并不知道这个阈值是否符合我们的要求。因此,为了找到一个最合适的阈值满足我们的要求,我们就必须遍历0到1之间所有的阈值,而每个阈值下都对应着一对查准率和查全率,从而我们就得到了这条曲线。

有的朋友又问了:如何找到最好的阈值点呢?首先,需要说明的是我们对于这两个指标的要求:我们希望查准率和查全率同时都非常高。但实际上这两个指标是一对矛盾体,无法做到双高。图中明显看到,如果其中一个非常高,另一个肯定会非常低。选取合适的阈值点要根据实际需求,比如我们想要高的查全率,那么我们就会牺牲一些查准率,在保证查全率最高的情况下,查准率也不那么低。

F1分数

但通常,如果想要找到二者之间的一个平衡点,我们就需要一个新的指标:F1分数。F1分数同时考虑了查准率和查全率,让二者同时达到最高,取一个平衡。F1分数的公式为 = 2查准率查全率 / (查准率 + 查全率)。**我们在图中看到的平衡点就是F1分数得来的结果。

 

AUC(Area under curve)是机器学习常用的二分类评测手段,直接含义是ROC曲线下的面积,如下图: 
 
要理解这张图的含义,得先理解下面这个表: 
 
表中列代表预测分类,行代表实际分类: 
实际1,预测1:真正类(tp) 
实际1,预测0:假负类(fn) 
实际0,预测1:假正类(fp) 
实际0,预测0:真负类(tn) 
真实负样本总数=n=fp+tn 
真实正样本总数=p=tp+fn

在第一张图中, 
横坐标false positive rate 代表假正类率,由fp/n计算得到, 
意为 在实际负样本中出现预测正样本的概率。 
纵坐标true positive rate 代表真正类率,由tp/p计算得到, 
意为 在实际正样本中出现预测正样本的概率。

为什么这样一个指标可以衡量分类效果?
先来看看如何得到这条曲线: 
1. 通过分类器得到每个样本的预测概率,对其从高到低进行排序 
2. 从高到低,分别以每一个预测概率作为阈值,大于该阈值的认定其为1,小于的为0,计算fp rate和tp rate。

对于一个有分类效果(效果比随机要好)的分类器,刚开始将高概率作为阈值时,阈值以上的真正样本占全部正样本的比例(tp rate)>阈值以上的假正样本占全部负样本的比例(fp rate)。

auc理解
auc就是:随机抽出一对样本(一个正样本,一个负样本),然后用训练得到的分类器来对这两个样本进行预测,预测得到正样本的概率大于负样本概率的概率。

AUC计算
方法一:
在有M个正样本,N个负样本的数据集里。一共有M*N对样本(一对样本即,一个正样本与一个负样本)。统计这M*N对样本里,正样本的预测概率大于负样本的预测概率的个数。 
 
举个例子: 
 
假设有4条样本。2个正样本,2个负样本,那么M*N=4。 
即总共有4个样本对。分别是: 
(D,B),(D,A),(C,B),(C,A)。 
在(D,B)样本对中,正样本D预测的概率大于负样本B预测的概率(也就是D的得分比B高),记为1 
同理,对于(C,B)。正样本C预测的概率小于负样本C预测的概率,记为0.

那么auc如下: 


假如出现得分一致的时候: 
 
同样本是4个样本对,对于样本对(C,B)其I值为0.5。 


方法二:
利公式: 
● 对预测概率从高到低排序 
● 对每一个概率值设一个rank值(最高的概率的rank为n,第二高的为n-1) 
● rank实际上代表了该score(预测概率)超过的样本的数目 
       为了求的组合中正样本的score值大于负样本,如果所有的正样本score值都是大于负样本的,那么第一位与任意的进行组合score值都要大,我们取它的rank值为n,但是n-1中有M-1是正样例和正样例的组合这种是不在统计范围内的(为计算方便我们取n组,相应的不符合的有M个),所以要减掉,那么同理排在第二位的n-1,会有M-1个是不满足的,依次类推,故得到后面的公式M*(M+1)/2,我们可以验证在正样本score都大于负样本的假设下,AUC的值为1 
● 除以M*N 
                   
举例说明: 
 
排序。按概率排序后得到: 
按照上面的公式,只把正样本的序号加起来也就是只把样本C,D的rank值加起来后减去一个常数项: 
 
得到: 
 
如果出现得分一样的情况: 
 
假如有4个取值概率为0.5,而且既有正样本也有负样本的情况。计算的时候,其实原则就是相等得分的rank取平均值。具体来说如下: 
先排序: 
 
这里需要注意的是:相等概率得分的样本,无论正负,谁在前,谁在后无所谓。 
由于只考虑正样本的rank值: 
对于正样本A,其rank值为7 
对于正样本B,其rank值为6 
对于正样本E,其rank值为(5+4+3+2)/4 
对于正样本F,其rank值为(5+4+3+2)/4 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值