每次做完二值分类模型(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时,模型实际上相当于一个随机排序模型,也就是和说生成随机数评分没啥区别,因此无法对我们的模型使用场景提供支持。

作者:peiyang
链接:https://www.jianshu.com/p/b3d07879b75f
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

模型验证的常用“武器”—ROC和AUC peiyang相关推荐

  1. 模型验证的常用武器k-s

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

  2. 【Pytorch-从一团乱麻到入门】:3、模型效果评估指标:ROC、AUC、precision、recall

    在构建模型中,我们经常会用到AUC.ROC等指标来进行模型效果评估 ROC全称是"受试者工作特征"(Receiver Operating Characteristic).ROC曲线 ...

  3. 模型效果评估指标(ROC、AUC/KS、Lift、PSI)

    以二分类问题为例 混淆矩阵(Confusion Matrix) 对测试集数据进行预测,得到下列混淆矩阵中的数据 注:TP.FN.FP.TN以预测的结果是否准确来命名. 预测模型评估指标的本质是从模型预 ...

  4. 模型评估指标(Confusion Matrix、ROC、AUC)

    文章目录 1.选择合适的模型评估指标的依据 2.混淆矩阵(Confusion Matrix) 2.1 模型整体效果:准确率 2.2 捕捉少数类:精确率(Precision).召回率(Recall)和F ...

  5. 评分卡模型验证常用指标

    在模型训练及验证之前,需进行好坏用户的划分,可通过有贷后表现根据阈值进行划分,其中坏用户定义为1,好用户定义为0,基于此对模型验证指标进行说明. 混淆矩阵(confusion matrix) 实际表现 ...

  6. 推荐算法常用评价指标:NDCG、MAP、MRR、HR、ILS、ROC、AUC、F1等

    1 混淆矩阵 TP(true positive):表示样本的真实类别为正,最后预测得到的结果也为正: FP(false positive):表示样本的真实类别为负,最后预测得到的结果却为正: FN(f ...

  7. 精确率、召回率、F1 值、ROC、AUC等分类模型评价指标含义与作用详解

    文章目录 摘要 一.精确率.召回率.F函数.准确率和错误率 1.定义 2.区别与应用 二.ROC曲线.P-R曲线.AUC 1.P-R曲线 2.ROC曲线 3.AUC 摘要 在涉及机器学习领域的分类问题 ...

  8. R语言glm拟合logistic回归模型:模型评估(模型预测概率的分组密度图、混淆矩阵、准确率、精确度、召回率、ROC、AUC)、PRTPlot函数获取logistic模型最优阈值(改变阈值以优化)

    R语言glm拟合logistic回归模型:模型评估(模型预测概率的分组密度图.混淆矩阵.Accuray.Precision.Recall.ROC.AUC).PRTPlot函数可视化获取logistic ...

  9. python可视化多个机器学习模型在训练集(train set)上交叉验证(cross validation)的AUC值、可视化模型效能

    python可视化多个机器学习模型在训练集(train set)上交叉验证(cross validation)的AUC值.可视化模型效能 # 所有的模型中填写的参数都是通过randomsearchcv ...

最新文章

  1. php可以打印一个页面,利用html实现分页打印功能的实例详解
  2. 用命令行方式获取打包签名文件的SHA1和MD5
  3. Django的视图层简介
  4. 都在抢论文第一作者,如何处理?
  5. 这是个将近3万人点赞,涉及9大模块,专为程序员准备的面试宝典
  6. 聊聊JVM(一)相对全面的GC总结
  7. docker 安装与常用命令与常用容器(containers)环境
  8. IDEA和Webstorm主题配色
  9. 术语-MOSS-微软协作工具:MOSS(微软协作工具)
  10. 【面经】2018金山WPS前端笔试题 面试题
  11. edge浏览器突然不能播放视频解决办法
  12. linux 编译器制作,Linux交叉編譯器的制作(一)
  13. 增长黑客,创业公司的用户与收入增长秘籍
  14. LabVIEW如何减少下一代测试系统中的硬件过时6
  15. websphere使用_使用WebSphere sMash为Google小工具提供动力
  16. [微信聊天]--一个人有多成熟,就看他如何聊微信
  17. I219-V 14代 win7x64驱动程序
  18. P1719 最大加权矩形
  19. VS2017出现许可证过期解决方法
  20. 银河帝国----我,机器人

热门文章

  1. Qt中另一种创建线程的方式
  2. C程序背后的故事--头文件、库文件的查找
  3. oracle if 嵌套语句吗,Lua嵌套if语句
  4. php编译减少大小,C++_减小VC6编译生成的exe文件的大小的方法,1、减小VC6编译生成的exe文件的 - phpStudy...
  5. not in the sudoers file. This incident will be reported.
  6. vue init webpack缺少标识符_vue 如何从单页应用改造成多页应用_vue.js
  7. Leetcode 91. 解码方法 (每日一题 20211013)
  8. 机器学习笔记:线性判别分析(Fisher)
  9. pandas 知识点补充:绘图plot
  10. MATLAB实战系列(二十九)-头脑风暴优化(BSO)算法求解旅行商问题(TSP)-交叉算子