AUC原理介绍及求解方法总结

 

前面的一个帖子中谈到了在决策树模型下计算AUC的问题,主要是讨论如何用决策树得到test samples的更为合理的rank。但是,关于怎么计算AUC却没有详细说明。本文试图总结和理清楚AUC计算这个问题,这么做,除了因为AUC本身比较常用和重要以外,还有以下两个方面的原因: 

a. 有些做machine learning的同行,没有仔细的搞清楚AUC到底是怎么回事。就写文章(竟然发表在KDD上……)告诉读者他们是多么麻烦的计算AUC! 

b. 我们实验室在研究过程中,也实际的需要计算AUC。一开始的时候,我在这个问题的认识上也经历了一段模糊期。所以,我想写这篇帖子还是会有些价值的。 

让我们从头说起,首先AUC是一种用来度量分类模型好坏的一个标准。这样的标准其实有很多,例如:大约10年前在 machine learning文献中一统天下的标准:分类精度;在信息检索(IR)领域中常用的recall和precision,等等。其实,度量反应了人们对” 好”的分类结果的追求,同一时期的不同的度量反映了人们对什么是”好”这个最根本问题的不同认识,而不同时期流行的度量则反映了人们认识事物的深度的变 化。近年来,随着machine learning的相关技术从实验室走向实际应用,一些实际的问题对度量标准提出了新的需求。特别的,现实中样本在不同类别上的不均衡分布(class distribution imbalance problem)。使得accuracy这样的传统的度量标准不能恰当的反应分类器的performance。举个例子:测试样本中有A类样本90个,B 类样本10个。分类器C1把所有的测试样本都分成了A类,分类器C2把A类的90个样本分对了70个,B类的10个样本分对了5个。则C1的分类精度为 90%,C2的分类精度为75%。但是,显然C2更有用些。另外,在一些分类问题中犯不同的错误代价是不同的(cost sensitive learning)。这样,默认0.5为分类阈值的传统做法也显得不恰当了。 

为了解决上述问题,人们从医疗分析领域引入了一种新的分类模型performance评判方法——ROC分析。ROC分析本身就是一个很丰富的内容,有兴趣的读者可以自行Google。由于我自己对ROC分析的内容了解还不深刻,所以这里只做些简单的概念性的介绍。 

ROC的全名叫做Receiver Operating Characteristic,其主要分析工具是一个画在二维平面上的曲线——ROC curve。 平面的横坐标是false positive rate(FPR)虚惊概率,纵坐标是true positive rate(TPR)集中概率。对某个分类器而言,我们可以根据其在测试样本上的表现得到一个TPR和FPR点对。这样,此分类器就可以映射成ROC平面上的一个 点。调整这个分类器分类时候使用的阈值,我们就可以得到一个经过(0, 0),(1, 1)的曲线,这就是此分类器的ROC曲线。一般情况下,这个曲线都应该处于(0, 0)和(1, 1)连线的上方。因为(0, 0)和(1, 1)连线形成的ROC曲线实际上代表的是一个随机分类器。如果很不幸,你得到一个位于此直线下方的分类器的话,一个直观的补救办法就是把所有的预测结果反 向,即:分类器输出结果为正类,则最终分类的结果为负类,反之,则为正类。虽然,用ROC curve来表示分类器的performance很直观好用。可是,人们总是希望能有一个数值来标志分类器的好坏。于是Area Under roc Curve(AUC)就出现了。顾名思义,AUC的值就是处于ROC curve下方的那部分面积的大小。通常,AUC的值介于0.5到1.0之间,较大的AUC代表了较好的performance。好了,到此为止,所有的 前续介绍部分结束,下面进入本篇帖子的主题: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相加,再减去正类样本的score为最 小的那M个值的情况。得到的就是所有的样本中有多少对正类样本的score大于负类样本的score。然后再除以M×N。即 


 


      另外,特别需要注意的是,再存在score相等的情况时,对相等score的样本,需要 赋予相同的rank(无论这个相等的score是出现在同类样本还是不同类的样本之间,都需要这样处理)。具体操作就是再把所有这些score相等的样本 的rank取平均。然后再使用上述公式。 

------------------------------------------------------------------------ 
ROC(Receiver Operating Characteristic)曲线,用于二分类判别效果的分析与评价.一般自变量为连续变量,因变量为二分类变量. 
基 本原理是:通过判断点(cutoff point/cutoff value)的移动,获得多对灵敏度(sensitivity)和误判率(1-Specificity(特异度)),以灵敏度为纵轴,以误判率为横轴,连 接各点绘制曲线,然后计算曲线下的面积,面积越大,判断价值越高. 
灵敏度:就是把实际为真值的判断为真值的概率. 
特异度:就是把实际为假值的判断为假值的概率. 
将绘成的曲线与斜45度的直线对比,若差不多重合,说明自变量对因变量的判断价值很差,若越远离斜45度的直线即曲线下的面积越大,说明自变量对因变量的判断价值越好,即根据自变量可以较为正确的判断因变量. 
使用SPSS的操作过程如下: 
Graphs/ROC Curve:Test variable选自变量(连续型变量),state varibale选因变量(二分类变量)display的选项一般全选. 
运行结果:1.ROC曲线,可直观地看到曲线形状. 
2.Area under the curve:曲线下方的面积,包括面积值,显著性分析,置信区间. 
3.Coordinates of the curve:ROC曲线各点对应的灵敏度和误判率.


一、roc曲线

1、roc曲线:接收者操作特征(receiveroperating characteristic),roc曲线上每个点反映着对同一信号刺激的感受性。

横轴:负正类率(false postive rate FPR)特异度,划分实例中所有负例占所有负例的比例;(1-Specificity)

纵轴:真正类率(true postive rate TPR)灵敏度,Sensitivity(正类覆盖率)

2针对一个二分类问题,将实例分成正类(postive)或者负类(negative)。但是实际中分类时,会出现四种情况.

(1)若一个实例是正类并且被预测为正类,即为真正类(True Postive TP)

(2)若一个实例是正类,但是被预测成为负类,即为假负类(False Negative FN)

(3)若一个实例是负类,但是被预测成为正类,即为假正类(False Postive FP)

(4)若一个实例是负类,但是被预测成为负类,即为真负类(True Negative TN)

TP:正确的肯定数目

FN:漏报,没有找到正确匹配的数目

FP:误报,没有的匹配不正确

TN:正确拒绝的非匹配数目

列联表如下,1代表正类,0代表负类:

由上表可得出横,纵轴的计算公式:

(1)真正类率(True Postive Rate)TPR: TP/(TP+FN),代表分类器预测的正类中实际正实例占所有正实例的比例。Sensitivity

(2)负正类率(False Postive Rate)FPR: FP/(FP+TN),代表分类器预测的正类中实际负实例占所有负实例的比例。1-Specificity

(3)真负类率(True Negative Rate)TNR: TN/(FP+TN),代表分类器预测的负类中实际负实例占所有负实例的比例,TNR=1-FPR。Specificity

假设采用逻辑回归分类器,其给出针对每个实例为正类的概率,那么通过设定一个阈值如0.6,概率大于等于0.6的为正类,小于0.6的为负类。对应的就可以算出一组(FPR,TPR),在平面中得到对应坐标点。随着阈值的逐渐减小,越来越多的实例被划分为正类,但是这些正类中同样也掺杂着真正的负实例,即TPR和FPR会同时增大。阈值最大时,对应坐标点为(0,0),阈值最小时,对应坐标点(1,1)。

如下面这幅图,(a)图中实线为ROC曲线,线上每个点对应一个阈值。

 

横轴FPR:1-TNR,1-Specificity,FPR越大,预测正类中实际负类越多。

纵轴TPR:Sensitivity(正类覆盖率),TPR越大,预测正类中实际正类越多。

理想目标:TPR=1,FPR=0,即图中(0,1)点,故ROC曲线越靠拢(0,1)点,越偏离45度对角线越好,Sensitivity、Specificity越大效果越好。

二 如何画roc曲线

假设已经得出一系列样本被划分为正类的概率,然后按照大小排序,下图是一个示例,图中共有20个测试样本,“Class”一栏表示每个测试样本真正的标签(p表示正样本,n表示负样本),“Score”表示每个测试样本属于正样本的概率。

 

接下来,我们从高到低,依次将“Score”值作为阈值threshold,当测试样本属于正样本的概率大于或等于这个threshold时,我们认为它为正样本,否则为负样本。举例来说,对于图中的第4个样本,其“Score”值为0.6,那么样本1,2,3,4都被认为是正样本,因为它们的“Score”值都大于等于0.6,而其他样本则都认为是负样本。每次选取一个不同的threshold,我们就可以得到一组FPR和TPR,即ROC曲线上的一点。这样一来,我们一共得到了20组FPR和TPR的值,将它们画在ROC曲线的结果如下图:

  

AUC(Area under Curve):Roc曲线下的面积,介于0.1和1之间。Auc作为数值可以直观的评价分类器的好坏,值越大越好。

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




  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
AUC(Area Under the Curve)是通过绘制接收者操作特征曲线(ROC曲线)评估分类器性能的一种指标。逻辑回归作为一种常用的分类算法,也可以使用AUC进行性能评估。 逻辑回归的分析方法首先要根据所需分类任务准备好相应的数据集。接着,利用逻辑回归模型对数据进行建模。逻辑回归是一种基于概率的分类算法,通过将线性回归的输出结果通过sigmoid函数映射到[0,1]之间的概率值,进而将其作为预测样本属于某一类别的概率。 在进行AUC分析之前,需要将数据集分为训练集和测试集。训练集用于建立逻辑回归模型,测试集则用于评估模型的性能。接下来,利用模型对测试集样本进行分类预测,并计算出每个样本属于阳性类别的概率。这些预测概率将用于构建ROC曲线。 为了计算AUC,首先需要计算ROC曲线。ROC曲线是以假阳性率(False Positive Rate)作为横轴,真阳性率(True Positive Rate)作为纵轴进行绘制的。真阳性率即为所预测为阳性类别且实际为阳性类别的样本占正阳性类别样本总数的比例,假阳性率则为所预测为阳性类别但实际为阴性类别的样本占负阴性类别样本总数的比例。 得到ROC曲线后,通过计算曲线下的面积,即AUC,来评估模型的性能。AUC的取值范围在0到1之间,数值越大表示分类器性能越好。 总之,逻辑回归的分析方法涉及到数据准备、模型训练、样本预测和AUC分析。通过AUC评估分类器模型的性能,能够帮助我们了解逻辑回归在分类任务中的有效性和准确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值