ROC曲线及AUC计算

上传人:壹****1 文档编号:502865961 上传时间:2024-02-18 格式:DOC 页数:36 大小:196KB
返回 下载 相关 举报
ROC曲线及AUC计算_第1页
第1页 / 共36页
ROC曲线及AUC计算_第2页
第2页 / 共36页
ROC曲线及AUC计算_第3页
第3页 / 共36页
ROC曲线及AUC计算_第4页
第4页 / 共36页
ROC曲线及AUC计算_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《ROC曲线及AUC计算》由会员分享,可在线阅读,更多相关《ROC曲线及AUC计算(36页珍藏版)》请在金锄头文库上搜索。

1、-ROC曲线及AUC计算转帖)(2012-03-23 10:04:31)ref 让我们从头说起,首先AUC是一种用来度量分类模型好坏的一个标准。这样的标准其实有很多,例如:大约10年前在machine learning文献中一统天下的标准:分类精度;在信息检索(IR)领域中常用的recall和precision,等等。其实,度量反响了人们对 好的分类结果的追求,同一时期的不同的度量反映了人们对什么是好这个最根本问题的不同认识,而不同时期流行的度量则反映了人们认识事物的深度的变化。近年来,随着machine learning的相关技术从实验室走向实际应用,一些实际的问题对度量标准提出了新的需求。

2、特别的,现实中样本在不同类别上的不均衡分布(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为分类阈值的传统做法也显得不恰当了。为

3、了解决上述问题,人们从医疗分析领域引入了一种新的分类模型performance评判方法ROC分析。ROC分析本身就是一个很丰富的容,有兴趣的读者可以自行Google。由于我自己对ROC分析的容了解还不深刻,所以这里只做些简单的概念性的介绍。ROC的全名叫做Receiver Operating Characteristic,其主要分析工具是一个画在二维平面上的曲线ROC curve。平面的横坐标是false positive rate(FPR),纵坐标是true positive rate(TPR)。对*个分类器而言,我们可以根据其在测试样本上的表现得到一个TPR和FPR点对。这样,此分类器就可

4、以映射成ROC平面上的一个点。调整这个分类器分类时候使用的阈值,我们就可以得到一个经过(0, 0),(1, 1)的曲线,这就是此分类器的ROC曲线。一般情况下,这个曲线都应该处于(0, 0)和(1, 1)连线的上方。因为(0, 0)和(1, 1)连线形成的ROC曲线实际上代表的是一个随机分类器。如果很不幸,你得到一个位于此直线下方的分类器的话,一个直观的补救方法就是把所有的预测结果反向,即:分类器输出结果为正类,则最终分类的结果为负类,反之,则为正类。虽然,用ROC curve来表示分类器的performance很直观好用。可是,人们总是希望能有一个数值来标志分类器的好坏。于是Area Und

5、er roc Curve(AUC)就出现了。顾名思义,AUC的值就是处于ROC curve下方的那局部面积的大小。通常,AUC的值介于0.5到1.0之间,较大的AUC代表了较好的performance。好了,到此为止,所有的前续介绍局部完毕,下面进入本篇帖子的主题:AUC的计算方法总结。最直观的,根据AUC这个名称,我们知道,计算出ROC曲线下面的面积,就是AUC的值。事实上,这也是在早期Machine Learning文献中常见的AUC计算方法。由于我们的测试样本是有限的。我们得到的AUC曲线必然是一个阶梯状的。因此,计算的AUC也就是这些阶梯下面的面积之和。这样,我们先把score排序(假

6、设score越大,此样本属于正类的概率越大),然后一边扫描就可以得到我们想要的AUC。但是,这么做有个缺点,就是当多个测试样本的score相等的时候,我们调整一下阈值,得到的不是曲线一个阶梯往上或者往右的延展,而是斜着向上形成一个梯形。此时,我们就需要计算这个梯形的面积。由此,我们可以看到,用这种方法计算AUC实际上是比拟麻烦的。一个关于AUC的很有趣的性质是,它和Wilco*on-Mann-Witney Test是等价的。这个等价关系的证明留在下篇帖子中给出。而Wilco*on-Mann-Witney Test就是测试任意给一个正类样本和一个负类样本,正类样本的score有多大的概率大于负类

7、样本的score。有了这个定义,我们就得到了另外一中计算AUC的方法:得到这个概率。我们知道,在有限样本中我们常用的得到概率的方法就是通过频率来估计之。这种估计随着样本规模的扩大而逐渐逼近真实值。这和上面的方法中,样本数越多,计算的AUC越准确类似,也和计算积分的时候,小区间划分的越细,计算的越准确是同样的道理。具体来说就是统计一下所有的 MN(M为正类样本的数目,N为负类样本的数目)个正负样本对中,有多少个组中的正样本的score大于负样本的score。当二元组中正负样本的 score相等的时候,按照0.5计算。然后除以MN。实现这个方法的复杂度为O(n2)。n为样本数即n=M+N第三种方法

8、实际上和上述第二种方法是一样的,但是复杂度减小了。它也是首先对score从大到小排序,然后令最大score对应的sample 的rank为n,第二大score对应sample的rank为n-1,以此类推。然后把所有的正类样本的rank相加,再减去正类样本的score为最小的那M个值的情况。得到的就是所有的样本中有多少对正类样本的score大于负类样本的score。然后再除以MN。即AUC=(所有的正例位置相加)-M*(M+1)/(M*N)另外,特别需要注意的是,再存在score相等的情况时,对相等score的样本,需要赋予一样的rank(无论这个相等的score是出现在同类样本还是不同类的样本

9、之间,都需要这样处理)。具体操作就是再把所有这些score相等的样本的rank取平均。然后再使用上述公式。分类模型的性能评估以SAS Logistic回归为例(1): 混淆矩阵Posted on 2008/12/25by 胡江堂跑完分类模型Logistic回归、决策树、神经网络等,我们经常面对一大堆模型评估的报表和指标,如Confusion Matri*、ROC、Lift、Gini、K-S之类这个单子可以列很长,往往让很多在业务中需要解释它们的朋友头大:“这个模型的Lift是4,说明模型运作良好。啊,怎么还要解释ROC,ROC如何如何,说明模型表现良好如果不明白这些评估指标的背后的直觉,就很可

10、能陷入这样的机械解释中,不敢多说一句,就怕哪里说错。本文就试图用一个统一的例子SAS Logistic回归,从实际应用而不是理论研究的角度,对以上提到的各个评估指标逐一点评,并力图说明:1. 这些评估指标,都是可以用白话plain English, 普通话解释清楚的;2. 它们是可以手算出来的,看到各种软件包输出结果,并不是一个无法探究的“黑箱;3. 它们是相关的。你了解一个,就很容易了解另外一个。本文从混淆矩阵(Confusion Matri*,或分类矩阵,Classification Matri*)开场,它最简单,而且是大多数指标的根底。数据本文使用一个在信用评分领域非常有名的免费数据集,

11、German Credit Dataset,你可以在UCI Machine Learning Repository找到下载;数据描述。另外,你还可以在SAS系统的Enterprise Miner的演示数据集中找到该数据的一个版本dmagecr.sas7bdat。以下把这个数据分为两局部,训练数据train和验证数据valid,所有的评估指标都是在valid数据中计算纯粹为了演示评估指标,在train数据里计算也未尝不可,我们感兴趣的二分变量是good_bad,取值为good, bad:Train datagood_bad Frequency Percent-bad 154 25.67good

12、446 74.33Valid datagood_bad Frequency Percent-bad 146 36.50good 254 63.50信用评分指帮助贷款机构发放消费信贷的一整套决策模型及其支持技术。一般地,信用评分技术将客户分为好客户与坏客户两类,比方说,好客户(good)能够按期还本付息履约,违约的就是坏客户(bad)。具体做法是根据历史上每个类别履约、违约的假设干样本,从的数据中考察借款人的哪些特征对其拖欠或违约行为有影响,从而测量借款人的违约风险,为信贷决策提供依据。Logistic回归是信用评分领域运用最成熟最广泛的统计技术。约定在我们的例如数据中,要考察的二分变量是goo

13、d_bad,我们把感兴趣的那个取值bad我们想计算违约的概率,称作正例(Positive, 1),另外那个取值(good称作负例(Negative, 0)。在SAS的Logistic回归中,默认按二分类取值的升序排列取第一个为positive,所以默认的就是求bad的概率。假设需要求good的概率,需要特别指定。模型如果没有特别说明,以下所有的SAS代码都在SAS 9.1.3 SP4系统中调试并运行成功在生成ROC曲线时,我还会提到SAS9.2的新功能。proclogistic data=train;model good_bad=checking history duration saving

14、s property;run;这个数据很整齐,能做出很漂亮的模型,以下就直接贴出参数估计的结果:Analysis of Ma*imum Likelihood EstimatesStandard WaldParameter DF Estimate Error Chi-Square Pr ChiSqIntercept 1 0.6032 0.4466 1.8242 0.1768checking 1 -0.6536 0.0931 49.3333 .0001history 1 -0.4083 0.0980 17.3597 .0001duration 1 0.0248 0.00907 7.4820 0.0062savings 1 -0.2017 0.0745 7.3308 0.0068property 1 0.3157 0.1052 9.0163 0.0027回归方程就是:logitp(bad)=log(p/1-p) =0.6032-0.6536*checking-0.4083*history+0.0248*duration -0.2017*savings+0.3157*property用下面的公式就可以求出正例的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号