机器学习中AUC的计算方法总结 | 面积法与Wilcoxon-Mann-Witney Test公式法的等价证明

本文转载自 理解 ROC 和 AUC

AUC的三种计算方式

  1. 最直观的,根据AUC这个名称,我们知道,计算出ROC曲线下面的面积,就是AUC的值。事实上,这也是在早期 Machine Learning文献中常见的AUC计算方法。由于我们的测试样本是有限的。我们得到的AUC曲线必然是一个阶梯状的。因此,计算的AUC也就是这些阶梯 下面的面积之和。这样,我们先把score排序(假设score越大,此样本属于正类的概率越大),然后一边扫描就可以得到我们想要的AUC。但是,这么 做有个缺点,就是当多个测试样本的score相等的时候,我们调整一下阈值,得到的不是曲线一个阶梯往上或者往右的延展,而是斜着向上形成一个梯形。此 时,我们就需要计算这个梯形的面积。由此,我们可以看到,用这种方法计算AUC实际上是比较麻烦的。
  2. 一个关于AUC的很有趣的性质是,它和Wilcoxon-Mann-Witney Test是等价的。这个等价关系的证明在下面给出。而Wilcoxon-Mann-Witney Test就是测试任意给一个正类样本和一个负类样本,正类样本的score有多大的概率大于负类样本的score。有了这个定义,我们就得到了另外一中计 算AUC的办法:得到这个概率。我们知道,在有限样本中我们常用的得到概率的办法就是通过频率来估计之。这种估计随着样本规模的扩大而逐渐逼近真实值。这 和上面的方法中,样本数越多,计算的AUC越准确类似,也和计算积分的时候,小区间划分的越细,计算的越准确是同样的道理。具体来说就是统计一下所有的 M×N(M为正类样本的数目,N为负类样本的数目)个正负样本对中,有多少个组中的正样本的score大于负样本的score。当二元组中正负样本的 score相等的时候,按照0.5计算。然后除以MN。实现这个方法的复杂度为O(n^2)。n为样本数(即n=M+N)
  3. 第三种方法实际上和上述第二种方法是一样的,但是复杂度减小了。它也是首先对score从大到小排序,然后令最大score对应的sample 的rank为n,第二大score对应sample的rank为n-1,以此类推。然后把所有的正类样本的rank相加,再减去M-1种两个正样本组合的情况。得到的就是所有的样本中有多少对正类样本的score大于负类样本的score。然后再除以M×N。
    参考:AUC计算方法总结

1. 引言

ROC(Receiver Operating Characteristic)曲线和AUC(Area Under Curve)常被用来评价一个二值分类器(binary classifier)的优劣。相比准确率、召回率、F-score这样的评价指标,ROC曲线有这样一个很好的特性:当测试集中正负样本的分布变化的时候,ROC曲线能够保持不变。在实际的数据集中经常会出现类不平衡(class imbalance)现象,即负样本比正样本多很多(或者相反),而且测试数据中的正负样本的分布也可能随着时间变化。

论文[3]是篇很不错的文章,介绍了ROC和AUC的特点,如何作出ROC曲线图和计算AUC,AUC的含义,以及对多类别分类问题如何计算AUC。后来有篇博文[4]翻译了这篇文章的核心部分,浅显易懂,适合不喜欢读英文的读者。

img

图1摘自论文[3]。ROC曲线,是以一系列的(fp rate, tp rate)或者写成(FPR, TPR),为二维笛卡尔坐标系中的坐标点。应用到实际问题中,对一份训练集如何算出一系列的FPR和TPR,可以参考[3]或[4]。

在这里插入图片描述


AUC(确切的说,应该是AUROC)被定义为ROC曲线下的面积,显然这个面积的数值不会大于1。ROC曲线上的任意相邻两点与横轴都能形成梯形,把所有这样的梯形面积做加和即可得到AUC。一般而言,训练样本越多,在得到样本判别为正例的分数取值后不同分数也相对会越多,这样ROC曲线上的点也就越多,估算的AUC会更准些。这种思路很像微积分里常用的微分法。该方法正是在论文[3]中描述的方法,笔者在实际业务中实现了它,它并不难实现。

2. AUC的物理含义

那么AUC值的含义是什么呢?在论文[3],有这样一段话:”The AUC value is equivalent to the probability that a randomly chosen positive example is ranked higher than a randomly chosen negative example. This is equivalent to the Wilcoxon test of ranks (Hanley and McNeil, 1982). The AUC is also closely related to the Gini coefficient (Breiman et al., 1984), which is twice the area between the diagonal and the ROC curve. Hand and Till (2001) point out that Gini + 1 = 2 * AUC.”

简单翻译下:首先AUC值是一个概率值,当你随机挑选一个正样本以及一个负样本,当前的分类算法根据计算得到的Score值将这个正样本排在负样本前面的概率就是AUC值。AUC值越大,当前的分类算法越有可能将正样本排在负样本前面,即能够更好的分类。另外,AUC与Gini分数有联系,Gini + 1 = 2*AUC。

关于AUC表示的概率含义在ROC的维基百科词条[5]中也有说明。不过维基百科中还提到这样一个观点,机器学习领域中经常用ROC和AUC去做模型对比,最近学术界认为这种做法会引入一些错判,有些文章对此进行了讨论。笔者认为学术界值得认真讨论此问题,但在工业界,AUC指标一般与业务评价指标(比如点击率等)本身就不是一致的,所以在实际业务中,会综合考虑AUC指标以及其他指标来选择最终模型,这样做能降低选到不良模型的可能性。

既然了解了AUC表示的概率含义,那么就可以通过概率统计的方法来算AUC。做N次随机试验,每次实验中随机采样一个正样本和一个负样本,当模型预测正样本的分数大于模型预测负样本的分数,计数则加1。记计数最终为n(n肯定小于等于N),那么用n/N即得到AUC。Stackexchange中的一篇帖子[6]在”A concordance measure”一节中也提到了这种算AUC的方法,并通过实验说明此方法计算出的AUC与画出ROC曲线然后算AUC面积是一致的。不过应用这个物理含义来算AUC,除了走先随机采样后计数以得到概率的方案外,还可以用公式1来计算:

在这里插入图片描述

说明: P表示正样本集合,N表示负样本集合,|S|表示集合S的元素个数。ri表示元素i在全集(P+N)中按预测score从小到大排的rank位置(rank位置从1开始,比如:假设|P+N|=10,那么最高分的rank值为10,最低分的rank值为1)。举例子说明上式的计算过程:

假设|P+N|有5个元素,按系统预测score从小到大排如下:

样本情况样本1样本2样本3样本4样本5
正例 or 负例NPNPP
系统预测score0.20.30.40.50.6
rank值ri12345

对该例,|P|=3,|N|=2,分母为6,分子为(2+4+5)–(0.5×3×4)=5。那么AUC为5÷6=0.8333。

下面用两节分别证明这个式子与AUC的物理含义是一致,以及该式与第一种方法(基于ROC曲线计算AUROC的方法)是一致的。以此得到三种方法的相互一致。(为了描述直观,先忽略因系统预测score相同导致rank值相同,后面再对此做说明)

3. 与AUC的物理含义一致的证明

全集(P+N)中一个正样本与一个负样本组成pair的总数为 |P|×|N| ,也就是式子中的分母。那么接下来只需要证明对于{ri}序列来说,满足正样本的rank值大于负样本rank值的pair总数是分子表达的那个数。这个可以基于加法原理来计算,对每个正样本,统计出它的rank值能大于的负样本个数,做个累加求和即可。对某个i∈P,它的rank值能大于的负样本个数表示为(公式2和公式3是等价的,不过式子3便于做后面的累加求和):

在这里插入图片描述

基于式子3,对正样本做累加求和的结果为:

至此即证明了对于{ri}序列来说,满足正样本rank值大于负样本rank值的pair总数正是分子。所以得证公式1算的正是AUC。

既然可以对正样本走加法原理,自然也可以对负样本走加法原理。所以公式1的分子也会等价于:

在这里插入图片描述

说明:当pair中的正样本和负样本的预测score相等的时候,分子则加上0.5。

4. 与基于ROC曲线计算AUC的方法一致的证明

在这里插入图片描述

结合公式5的说明,即证明了公式1与 基于ROC曲线计算AUROC的方法 是一致的。

说明:当存在预测score相等的情况时,对相等score的样本,需要 赋予相同的rank(无论这个相等的score是出现在同类样本还是不同类的样本之间,都需要这样处理)。对这个rank是这样计算的:把所有这些预测score相等的样本的rank取平均,然后再使用上述公式。

虽然三种方法是等价的,但在计算量上去掉排序的因素(排序的计算复杂度为O(NlogN)),公式1的计算效率要高。

参考文献

[1] Hanley, J.A., McNeil, B.J., The meaning and use of the area under a receiver operating characteristic (ROC) curve. Radiology 143, 29–36. 1982.

[2] Breiman, L., Friedman, J., Olshen, R., Stone, C., Classification and Regression Trees. Wadsworth International Group. 1984.

[3] Tom Fawcett, An introduction to ROC analysis. Pattern Recognition Letters. 2006.

[4] Introduction to auc and roc

[5] ROC(Receiver operating characteristic) (From Wikipedia)

[6] How to calculate area under the curve auc or the c-statistic by hand

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值