模型验证的常用“武器”—ROC和AUC

      每次做完二值分类模型(eg: Logistic Regression, Decision Tree, Neural Network etc.),我们经常会面对一连串的模型验证指标,最常用的有ROC&AUC、Gini、PS、K-S等等。那我们不禁会问:

1. 这个指标怎么定义?

2. 怎么实现指标计算?

3. 为什么用这个指标?

4. 怎么用它评价模型?

 事实上,如果不明白这些评估指标的背后的直觉,就很可能陷入一种机械的解释中,不敢多说一句,就怕哪里说错。在这里就通过这篇文章,针对上述4个问题,介绍一下ROC&AUC。

问题1: ROC&AUC的定义分别是什么?

ROC曲线全称为受试者工作特征曲线 (receiver operating characteristic curve),它是根据一系列不同的二分类方式(分界值或决定阈),以真阳性率(敏感性)为纵坐标,假阳性率(1-特异性)为横坐标绘制的曲线

     AUC(Area Under Curve)被定义为ROC曲线下的面积。我们往往使用AUC值作为模型的评价标准是因为很多时候ROC曲线并不能清晰的说明哪个分类器的效果更好,而作为一个数值,对应AUC更大的分类器效果更好。

注意:ROC是一条曲线是一条曲线啊,并不是一个值啊!真正通过计量手段比较模型功效的是AUC!!

问题2: AUC是如何计算得到的?

      既然我们已经了解到AUC其实就是ROC曲线下的面积,那我们首先要理解ROC曲线从何而来,这其中必定蕴含了ROC&AUC蕴含的价值。

作为理解ROC曲线的铺垫,我们还要先了解一下混淆矩阵(Confusion Matrix)。显然,一个完美的二分类模型就是,如果一个客户实际上属于类别good,也预测成good(True Positive类),处于类别bad,也就预测成bad(True Negative类),也就是完全预测准确。但从实际模型情况来看,往往会有一些实际上是good的客户,经过我们的模型,被预测为bad(False Negative类),对一些bad的客户,却预测他为good(False Positive类)。事实上,我们需要知道所建的模型到底预测对了多少,预测错了多少,然而混淆矩阵就把所有这些信息,都归到这样一个表里。

实际数据中,客户只有good/bad两种可能,模型预测结果同样也只有这两种可能,可能匹配可能不匹配。匹配的好说,Negative预测为Negative,或者 Positive预测为Positive,这就是True Negative(其中Negative是指预测成Negative)和True Positive(其中Positive是指预测成Positive)的情况。

       同样,犯错也只有两种情况。实际是Positive,预测成Negative ,这就是False Negative;实际是Negative,预测成Positive,这就是False Positive;

明白这些概念后,不难理解以下几组常用的评估指标:

(事实上ROC曲线只用到其中的3和4)

1. 准确率accuracy: 针对整个预测情况。预测正确的/总实例数 = (TP+TN)/(P+N)

2. 误分类率error rate: 针对整个情况。预测错误的/总实例数 = (FP+FN)/(P+N)

3. 召回率recall/敏感性sensitivity: 针对good的正确覆盖了。预测对的good实例/实际good的实例 = TP/P

4. 特异性specificity: 针对bad的预测正确率。预测对的bad实例/实际的bad实例数 = TN/N

5. 命中率precision: 针对good的预测正确率。预测对的good实例/预测的good实例数 = TP/(TP+FP)

6. Type I error: False Discovery Rate(FDR, false alarm) = 1- precision

7. Type II error: miss rate = 1- sensitivity

      理解了混淆矩阵后,ROC曲线就不难理解了。事实上,ROC曲线就是不同的阈值下,敏感性(Sensitivity)和1-特异性(Specificity)的关系曲线。其中ROC曲线的横轴为(1-特异性),即1-预测对的bad实例/实际的bad实例数;纵轴为敏感性,即预测对的good实例/实际good的实例,易知ROC曲线的横轴纵轴的值域均为[0,1]。


下面我们从ROC曲线横轴值从0到1取三个点进行展示,以计算对应的纵轴值:

1. 1-特异性=0

 1-特异性=0 意味着预测对的bad实例/实际的bad实例数=1,也就是说所有bad都被预测为bad,如上图所示。此时,对应的纵轴值敏感性=TP/P=0.45。因此对应ROC曲线上的点(0,0.45)。

2. 0<1-特异性<1

      随着横轴值从0到1的增加,通过上图可以表达为分割线的左移,如下图。

 可以看到,随着分割线的左移,也就是特异性逐渐减小,敏感性则逐渐增加。此时1-特异性=0.2,对应的敏感性=0.85。因此对应ROC曲线上的点(0.2,0.85)。

3. 1-特异性—>1

 随着分界线的继续左移,达到样本分数最小值时,所有样本都被预测为good,此时1-特异性=0.98,对应的纵轴值敏感性=,1。对应ROC曲线上的点(0.98,1)。

      好了,每个点都能画了,那ROC曲线也就不在话下了,AUC的计算也就顺其自然的进行了。

      实际应用中,对于最常用的Logistic regression,SAS的PROC LOGISTIC可以轻松解决ROC图像绘制以及AUC计算的问题。

代码如下

proc logistic data=dataname plots(only)=roc;

model y=x1 x2 x3... xn;

run;

运行程序即可得到ROC曲线以及相应AUC=0.8005。

问题3: AUC值和模型功效有何关系?

 我们不妨先固定某一横轴值,也就是说固定了分割线相对bad样本的位置关系,根据敏感性的定义(敏感性=预测对的good实例/实际good的实例 ),不难发现在有相等横轴值的情况下,纵轴值(敏感度)越大,模型功效越好。

      下图中,对于相同的横轴值(固定坏样本分布和分割线),若模型的好样本结果的分布情况为Distribution2,其相应的纵轴值显然大于Distribution1的情况,也就是y2>y1。 同样,任意移动分割线(也就是对任意横轴值),都可以得到Distribution2的纵轴值大于等于Distribution1。那也很显然情况2的模型比情况1具备更强的区分能力。这是最简单的比较情况,如果两个模型并不是对于任意横轴值都存在一致的纵轴值大小区分,我们该怎么比较呢?


这里我们再来回顾一下AUC是什么。AUC事实上是ROC曲线下的面积,事实上也是敏感性在x属于[0,1]区间内的积分!既然对于每个固定横轴值,都存在纵轴值越大模型功效越好这个说法,那么通过计量面积来比较模型的功效依旧成立,同时AUC还简化了指标的维度,将2维的ROC图转化为1维数值,简化的同时还提供了模型与模型之间比较的契机,这也就很容易理解我们为什么要使用AUC值来展示模型的区分能力了!

问题4: 如何使用AUC值评价模型?

      ROC曲线下的面积值(AUC)正常情况下在0.5和1之间。应用中通常使用以下标准评价模型功效。

AUC 评价

       0.9-1            高准确性

     0.7-0.9        有一定准确性

     0.5-0.7        有较低准确性

       0-0.5      不符合真实情况

       事实上,当模型的ROC=1时,模型将所有好坏样本完全分离,也就是说低分区全是bad样本,高分区全是good样本,两组样本在得分上没有交集,这也被成为“完美模型”。当然,在实际建模中,“完美模型”显然是不存在的。

       当模型的ROC=0.5时,模型实际上相当于一个随机排序模型,也就是和说生成随机数评分没啥区别,因此无法对我们的模型使用场景提供支持。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容