Data Mining | 二分类模型评估-ROC/AUC/K-S/GINI

摘要:
目录1混淆矩阵衍生指标1.1ROC1.2AUC1.3K-S1.4GINI1.5小结1混淆矩阵衍生指标上面提到的ACC、PPV、TPR、FPR等指标,都是对某一给定分类结果的评估,而绝大多数模型都能产生好多份分类结果,所以它们的评估是单一的、片面的,并不能全面地评估模型的效果。而ISO精度线和ROC曲线相切时,直线的截距取得最大,因为截距大小和ACC成正比,所以此时ACC取得最大,此时对应的预测概率就是最优阈值。
目录

1 混淆矩阵衍生指标

上面提到的ACC、PPV、TPR、FPR等指标,都是对某一给定分类结果的评估,而绝大多数模型都能产生好多份分类结果(通过调整阈值),所以它们的评估是单一的、片面的,并不能全面地评估模型的效果。因此,需要引入新的评估指标,来综合全面地评估模型,它们就是如下所述,由混淆矩阵衍生的一系列评估指标。

1.1 ROC

ROC(Receiver Operating Characteristic)曲线,又称受试者工作特征曲线,常用于二分类模型性能的度量,其最大优点是「无视样本不平衡」,即对正负样例占比不敏感。

ROC曲线由两个指标构建而成: TPR(真正例率)与 FPR(假正例率),其中,纵坐标为TPR,横坐标为FPR,下面就是一个标准的ROC曲线图。

Data Mining | 二分类模型评估-ROC/AUC/K-S/GINI第1张

与P-R曲线的绘制类似,ROC曲线也是通过遍历所有阈值来绘制整条曲线的,即ROC曲线上的每一个点,都对应着特定预测阈值下的一对FPR和TPR。以逻辑回归为例,分类器最后会在测试集中输出预测概率P(预测y=1的概率),与测试集中原有真实的y一起,这样就构成了两列数据(如下图)。其中,Cls表示真实的分类,P代表1、N代表0;Score表示对应样本为1的预测概率。

Data Mining | 二分类模型评估-ROC/AUC/K-S/GINI第2张

ROC曲线的绘制

  • 从上面两列数据出发,对预测概率Score进行降序排列
  • 以排序后的预测概率Score为阈值(>=阈值就预测为P),则从上到下每个阈值都对应一列预测的y,根据真实的y和预测的y就能得到一个混淆矩阵,进而能计算出相应的TPR与FPR。所以,每一个阈值,都对应一列预测的y,对应一个混淆矩阵,对应一对TPR与FPR
  • 以TPR为纵轴、FPR为横轴,把不同阈值对应的(FPR,TPR)在坐标轴中画出来并连接成曲线,这条曲线就是ROC曲线

经过如上过程就能绘制出ROC曲线。并且,如果我们不断的遍历所有阈值,预测的正样本和负样本会不断变化,ROC曲线会越来越平滑。

Data Mining | 二分类模型评估-ROC/AUC/K-S/GINI第3张

找最优阈值

在上面的ROC曲线中,黄色斜线叫基线,对应的是随机预测,阈值为0.5。因为二分类器最后输出的,是一个0到1之间的概率数字,我们想要根据这个概率判断用户好坏的话,就必须定义一个阈值:>=阈值预测为1,反之预测为0。而在众多阈值中,肯定存在一个最优阈值,使得模型性能最佳。与上面计算TPR思路一样,我们从两列数据出发,每一个阈值对应一列预测的y,对应一个混淆矩阵,就能计算出对应的ACC。

首先进行一个简单的推导:

缩写含义
P正例的个数
N负例的个数
A所有观察的个数,A=P+N
pos正例占总数的占比,pos=P/A
neg负例占总数的占比,neg=N/A

则有:
ISO精度线.png


在阈值确定后,正例和负例的比值就确定了,即斜率就确定了,改变ACC大小就能得到一系列斜率相同的平行直线,区别在于截距的大小不同。而ISO精度线和ROC曲线相切时,直线的截距取得最大,因为截距大小和ACC成正比,所以此时ACC取得最大,此时对应的预测概率就是最优阈值。引入反斜线TPR=1−FPR,与直线TPR=a∗FPR+b联立求解可得:TPR=ACC,即最大值ACC是ISO精度线与ROC曲线相切时,ISO精度线与反斜线交点对应的TPR。

Data Mining | 二分类模型评估-ROC/AUC/K-S/GINI第5张

综上,ROC曲线找最优阈值的逻辑是:ISO精度线与ROC曲线相切时,ACC取得最大;ACC取得最大时,对应的就是最优阈值。所以如下图,前面计算ROC曲线时用的数据集,在第14个样例处ISO精度线与ROC曲线相切,取得的ACC最大值为17/20,最优阈值为0.72。

Data Mining | 二分类模型评估-ROC/AUC/K-S/GINI第6张

用ROC曲线评估模型

模型性能更佳,就意味着真实为1且预测为1的越多越好,真实为0且预测为1的越少越好,即TPR越大越好,且FPR越小越好。反应在图像上就是TPR越靠上、FPR越靠左。所以,用ROC曲线评估分类模型性能遵循下面准则:

  • 单个模型评估:曲线越靠近左上,模型分类性能更好,如图1
  • 多个模型评估:要分两种情况讨论
    • 情况1:在ROC曲线上,模型1完全包裹模型2,则模型1性能更好,如图2
    • 情况2:在ROC曲线上,模型1不完全包裹模型2,则无法判断,需要借助AUC面积评估,如图3
Data Mining | 二分类模型评估-ROC/AUC/K-S/GINI第7张

1.2 AUC

如上所述,ROC曲线是一个定性的评估指标,并且很多时候并不能清晰的说明哪个分类器的效果更好,这时就需要引入一个可以量化的评估指标——AUC面积。ACU面积(Area Under Curve),又称ROC曲线下的面积,它描述的是分类器C随机抽取的一个正例的预测概率大于一个负例的预测概率的概率。简单地说,就是做随机抽样时,P(P) ≥ P(N)中 ≥ 成立的概率

Data Mining | 二分类模型评估-ROC/AUC/K-S/GINI第8张

如上图紫色部分,ACU面积是指ROC曲线与下方坐标轴围成图形的面积,因为ROC曲线一般在斜线的上方,所以ACU面积的取值为[0.5,1],数值越大表示模型分类效果越好。同时,ACU面积和ROC曲线一样,不受正负样例分布的影响。其常用评估界值如下:

  • 0.5 - 0.7:效果较低
  • 0.7 - 0.85:效果一般
  • 0.85 - 0.95:效果很好
  • 0.95 - 1:效果非常好,但很可能过拟合,一般不太可能

1.3 K-S

K-S曲线的绘制

K-S曲线(Kolmogorov-Smirnov),绘图思路与ROC曲线类似,也是从真实y和预测概率(P(Y=1))两列数据出发,遍历每个阈值,计算出TPR、FPR、RPP等指标,最后完成绘图。不同的是,K-S曲线的绘图方法并不唯一,在横轴及纵轴的指标选取及使用上,可以有多种方式:

  • 横轴:阈值 或 RPP,其中RPP=(TP+FP)/(P+N) ,表示预测为正例的比例,其实就是排序后的序号
  • 纵轴:TPR与FPR作为纵轴

所以,K-S曲线实质上是由两条曲线构成,组合过程如下:

Data Mining | 二分类模型评估-ROC/AUC/K-S/GINI第9张

因为TPR与FPR是一对相互矛盾的指标,不可能同时取得最大或最小,所以中间一定存在一个临界值,使得TPR尽可能大的同时FPR尽可能的小,即两者差异最大。这个差异值反映在K-S曲线上就是两条曲线的间隔,众多差异值中最大的就叫做K-S值K-S = MAX(TPR-FPR)它描述了模型对正负样例的区分能力即模型对风险的区分能力。所以,对分类模型而言K-S值越大越好,KS值范围在[0,1],常见的评判标准如下:

  • < 0.2:差
  • 0.2-0.4:一般
  • 0.41-0.5:不错
  • 0.51-0.6:很好
  • 0.61-0.75:非常好
  • > 0.75:过高,模型很可能异常

需要特别说明的是,K-S曲线的画法并不唯一:有的资料横轴用阈值代替RPP,有的资料纵轴是用FPR-TPR,但都不影响最后结果,因为我们重点关注的是「TPR与FPR间的最大差异」

K-S值的计算

以评分卡为例,K-S的计算步骤如下:

  1. 计算每个评分区间的好坏账户数

  2. 计算每个评分区间的累计好账户数占总好账户数比率、累计坏账户数占总坏账户数比率

  3. 计算每个评分区间累计坏账户占比 与 累计好账户占比差的绝对值,然后对这些绝对值取最大值即得此评分卡的K-S值。

Data Mining | 二分类模型评估-ROC/AUC/K-S/GINI第10张

由上表可知,在风险评分 572 至 594 分的区间内好与坏累积分布之间的距离最大,评分为594分以下的所有账户中,累计坏账户占总坏账户比例为70.75%,累计好账户占总好账户的比例为25.13%。K-S指标为45.62%。

Data Mining | 二分类模型评估-ROC/AUC/K-S/GINI第11张

找最优阈值

由于K-S曲线能找出模型中差异最大的一个分段,因此可用于找最优阈值(cut_off),方法也很简单:取得K-S值时横轴对应的阈值就是最优阈值,若横轴是RPP,则最优阈值就是此RPP对应的阈值。

最后,可能大家会疑惑,已经有了AUC面积,为什么还要引入K-S指标呢?这就要明确两者的区别:

  • AUC面积:在样本不均衡的情况下也能准确评估模型的好坏,看的是总体的分类效果
  • K-S值:是通过找好坏客户累计分布的最大差异,评估模型对好坏客户的区分能力,看的是某个特定的分段

所以,一般情况下用AUC面积即可;如果业务更关注负样本,就会涉及到正负样例的区分度,用K-S值更好。但K-S值不能反映出所有分段的区分效果,评估时K-S值需要结合AUC面积、在哪个分段取得K-S值,三者结合才能更全面地评估模型。因为同样的K-S值,有的模型在高分段区分效果好,有的模型在低分段区分效果好,就会给模型应用带来差异,但通常而言,银行更关注的是坏客户(低分段客户)。

1.4 GINI

首先区分 基尼系数 基尼不纯度 两个概念,因为很多资料都把两者弄混了,而之后介绍的GINI是指基尼系数

  • 基尼系数:Gini Coefficient,最早用来衡量收入分配差异,后来也用作分类模型性能评估
  • 基尼不纯度:Gini Impurity,也被称为基尼指数(Gini Index),用来构造决策树中的CART分类树

社会学中的GINI系数

20世纪初意大利经济学家基尼(Gini),根据洛伦兹曲线(即累计频数分布曲线)找出了判断分配平等程度的指标,它就是GINI系数,详见下图。

Data Mining | 二分类模型评估-ROC/AUC/K-S/GINI第12张
图形含义
横轴人口百分比累计(按收入从低到高进行人口累计)
纵轴收入百分比累计(指部分人口的收入占社会总收入比例)
绿色斜线收入分配绝对平等线
红色曲线实际收入分配曲线(洛伦兹曲线,Lorenz Curve)
基尼系数GINI = A / A+B,表示不平等程度,也称洛伦兹系数

由上图可知,若A=0,则GINI=0,表示收入和分配完全平等;若B=0,则GINI=1,表示收入和分配绝对不平等,因此GINI系数的取值是在[0,1]。

机器学习中的GINI系数

把上面的分析思路迁移到金融风控领域,就可以用GINI系数评估分类模型对好坏客户的区分能力,尤其是在评分卡模型的评估中(A卡:申请评分卡;B卡:行为评分卡)。与K-S曲线的绘制类似,GINI曲线图的画法也不唯一,但也不会影响计算和最后结果,总的来说分为两种情况:

  • 样本中坏样本极少时:FP和FN很少,可以忽略不计,则RPP≈FPR,反映在图像上,就是图1变换到图3,此时洛伦兹曲线与ROC曲线近似重合,GINI系数的计算可以用GINI=2AUC - 1 或 GINI = A / A+B,推导如下。若把图3中的横轴坐标对调就得到图4,因此图3与图4都是正确的GINI系数曲线图

    RPP:Rate of positive predictions,所有预测中预测为正例的比例,反映在数据中就是序号,因为在构造洛伦兹曲线时,是先对样本安装风险评分升序过的
    
    因为,FP和FN很少,可以忽略不计,则:
    RPP = (TP+FP)/(TP+FP+TN+FN) = FP/(FP+TN) = FPR
    GINI = A/(A + B) = (AUC - C)/(A + B) = (AUC -0.5)/0.5 = 2*AUC - 1
    
    综上,GINI = 2AUC - 1
    
  • 当坏样本较多,或好坏样本接近1:1时:用GINI系数的定义计算GINI: GINI = A / A+B。此时图1与图2都是正确的GINI系数曲线图(图2是由图1坐标轴对调而得)

Data Mining | 二分类模型评估-ROC/AUC/K-S/GINI第13张

GINI系数的计算

先基于评分对客户进行升序排列,然后以累计坏账户占比作为横轴,累计好账户占比作为纵轴,就能得到如下GINI曲线图,实质就是上面的图4。

Data Mining | 二分类模型评估-ROC/AUC/K-S/GINI第14张

然后,就可以对GINI系数进行计算,步骤如下:

  1. 计算每个评分区间的好坏账户数

  2. 计算每个评分区间的累计好账户数占总好账户数比率和累计坏账户数占总坏账户数比率

  3. 按照累计好账户占比和累计坏账户占比得出上图所示曲线ADC

  4. 计算出图中阴影部分面积,阴影面积占直角三角形ABC面积的百分比,即为GINI系数

具体计算如下表:

Data Mining | 二分类模型评估-ROC/AUC/K-S/GINI第15张

需要特别指出的是,GINI系数定义中的公式:GINI = A / A+B,虽然是一个极为简明的数学表达式,但它并不具有实际的可操作性,因此在计算GINI系数时都是采用近似估算的思路,这就衍生出好几种方法来计算GINI系数。如下面的公式,其中cp表示累计,X、Y分别表示好客户、坏客户,所以上图中数据GINI = 1-SUM(I*F)=59.07%

Data Mining | 二分类模型评估-ROC/AUC/K-S/GINI第16张

GINI系数的评估标准

根据一般经验,GINI系数评判标准如下:

  • 申请评分卡
    • < 30% : 差
    • 30%-40% : 一般
    • 41%-50% : 好
    • 51%-60% : 非常好
    • > 60% : 越高越有过拟的可能
  • 行为评分卡
  • Gini可能会超过80%
    • Gini<60%,可能模型有问题

虽然Gini指标与K-S一样也是金融评分模型界通用的核心指标,但是它的使用也是有一些需要注意的地方:

  1. 评估评分卡的区分能力时,如果坏客户的定义不是那么严格,Gini系数对应代表的区分能力可能被夸大效果

  2. Gini对目标变量类别的定义比较敏感,比如账户的好坏

所以要想Gini指标精确有效,那么目标变量Y的定义在评分卡开发初期是十分重要和严谨的步骤。

1.5 小结

最后,对上述介绍的混淆矩阵衍生评估指标,做一个简单的总结:

评估指标小结-1.png

免责声明:文章转载自《Data Mining | 二分类模型评估-ROC/AUC/K-S/GINI》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Arrays.asList()方法Spread for Windows Forms快速入门(11)数据筛选下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

概率图模型之:贝叶斯网络

1、贝叶斯定理 P(A∣B)=P(A)P(B∣A)P(B) P(A|B)是已知B发生后A的条件概率,也由于得自B的取值而被称作A的后验概率。P(B|A)是已知A发生后B的条件概率,也由于得自A的取值而被称作B的后验概率。P(A)是A的先验概率或边缘概率。之所以称为”先验”是因为它不考虑任何B方面的因素。P(B)是B的先验概率或边缘概率。贝叶斯定理可表述为:...

零基础入门深度学习(5)

无论即将到来的是大数据时代还是人工智能时代,亦或是传统行业使用人工智能在云上处理大数据的时代,作为一个有理想有追求的程序员,不懂深度学习(Deep Learning)这个超热的技术,会不会感觉马上就out了?现在救命稻草来了,《零基础入门深度学习》系列文章旨在讲帮助爱编程的你从零基础达到入门级水平。零基础意味着你不需要太多的数学知识,只要会写程序就行了,...

AUC指标之ROC曲线只有一个点的问题

在一般认知中,用模型对测试集进行分类预测,结果应该是X或者X'(也可以说是或者否)。根据混淆矩阵算出TP、FP、TN、FN,进一步算出TPR、FPR。一个测试集只会有一对TPR/FPR值,那么ROC曲线就只会有一个点,何谈曲线之说?难道是用多个测试集得到多对TPR/FPR值,来绘制ROC曲线吗?实则不然。 ROC曲线,一般适用于分类器输出一个“概率值”,...

R语言代写之文本分析:主题建模LDA

原文:http://tecdat.cn/?p=3897 文本分析:主题建模 library(tidyverse) theme_set( theme_bw()) 目标 定义主题建模 解释Latent Dirichlet分配以及此过程的工作原理 演示如何使用LDA从一组已知主题中恢复主题结构 演示如何使用LDA从一组未知主题中恢复主题结构 确定为k 选择适...

逻辑回归模型预测股票涨跌

http://www.cnblogs.com/lafengdatascientist/p/5567038.html 逻辑回归模型预测股票涨跌 逻辑回归是一个分类器,其基本思想可以概括为:对于一个二分类(0~1)问题,若P(Y=1/X)>0.5则归为1类,若P(Y=1/X)<0.5,则归为0类。 一、模型概述 1、Sigmoid函数 为了具象化...

拓端数据tecdat|R语言贝叶斯线性回归和多元线性回归构建工资预测模型

原文链接:http://tecdat.cn/?p=21641  工资模型 在劳动经济学领域,收入和工资的研究为从性别歧视到高等教育等问题提供了见解。在本文中,我们将分析横断面工资数据,以期在实践中使用贝叶斯方法,如BIC和贝叶斯模型来构建工资的预测模型。 加载包 在本实验中,我们将使用dplyr包探索数据,并使用ggplot2包进行数据可视化。我们也可...