[机器学习]模型评估:ROC,AUC,KS,GINI,Lift,Gain 总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zwqjoy/article/details/84859405

中文,英文,简称

在模型建立之后,必须对模型的效果进行评估,因为数据挖掘是一个探索的过程,评估-优化是一个永恒的过程。在分类模型评估中,最常用的两种评估标准就是KS值和GINI, AUC值.

可能有人会问了,为什么不直接看正确率呢?你可以这么想,如果一批样本中,正样本占到90%,负样本只占10%,那么我即使模型什么也不做,把样本全部判定为正,也能有90%的正确率咯?所以,用AUC值够保证你在样本不均衡的情况下也能准确评估模型的好坏,而KS值不仅能告诉你准确与否,还能告诉你模型对好坏客户是否有足够的区分度。

这里先整体给大家一个直观的介绍。

概括:

Confusion Matrix -> Lift,Gain,ROC。

ROC -> AUC,KS -> GINI。

在介绍之前,我们先重新明确一下这些图表的名称,中文、英文、简称,全部来熟悉一下:

记住这个之后,我们来理解一下他们之间的关系。

拟人化概括

其实,这些图之间的关系不是很复杂。我尝试着用一个小故事概括一下人物之间的关系。

故事是这样的:

首先,混淆矩阵是个元老,年龄最大也资历最老。创建了两个帮派,一个夫妻帮,一个阶级帮。

之后,夫妻帮里面是夫妻两个,一个Lift曲线,一个Gain曲线,两个人不分高低,共用一个横轴。

再次,阶级帮里面就比较混乱。

           1. 帮主是ROC曲线。

           2. 副帮主是KS曲线,AUC面积

           3. AUC养了一个小弟,叫GINI系数

下图是曲线与指标的综合对比图

一、ROC曲线和AUC值

在逻辑回归、随机森林、GBDT、XGBoost这些模型中,模型训练完成之后,每个样本都会获得对应的两个概率值,一个是样本为正样本的概率,一个是样本为负样本的概率。把每个样本为正样本的概率取出来,进行排序,然后选定一个阈值,将大于这个阈值的样本判定为正样本,小于阈值的样本判定为负样本,然后可以得到两个值,一个是真正率,一个是假正率。

真正率即判定为正样本且实际为正样本的样本数/所有的正样本数,假正率为判定为正样本实际为负样本的样本数/所有的负样本数。每选定一个阈值,就能得到一对真正率和假正率,由于判定为正样本的概率值区间为[0,1],那么阈值必然在这个区间内选择,因此在此区间内不停地选择不同的阈值,重复这个过程,就能得到一系列的真正率和假正率,以这两个序列作为横纵坐标,即可得到ROC曲线了。而ROC曲线下方的面积,即为AUC值。

对于AUC值,也许有一个更直观的理解,那就是,在按照正样本概率值对所有样本排序后,任意选取一对正负样本,正样本排在负样本之前的概率值,即为AUC值。也就是说,当所有的正样本在排序后都能排在负样本之前时,就证明所有的样本都被正确分类了,此时的AUC值也会为1。那么AUC值也就很好算了,如果有N个负样本,其中正样本有M个,那么可取的所有带正样本的样本对数对于排在第一位的正样本来说,有M+N-1个,但其中包含M-1对(正,正)的样本,而对于后面所有的正样本而言,能够取到的正样本概率大于负样本对数肯定小于其位置-1。


二、KS曲线

K-S曲线其实数据来源和本质和ROC曲线是一致的,只是ROC曲线是把真正率和假正率当作横纵轴,而K-S曲线是把真正率和假正率都当作是纵轴,横轴则由选定的阈值来充当。

KS(Kolmogorov-Smirnov):KS用于模型风险区分能力进行评估,
指标衡量的是好坏样本累计分部之间的差值。
好坏样本累计差异越大,KS指标越大,那么模型的风险区分能力越强。

KS的计算步骤如下:
1. 计算每个评分区间的好坏账户数。
2. 计算每个评分区间的累计好账户数占总好账户数比率(good%)和累计坏账户数占总坏账户数比率(bad%)。
3. 计算每个评分区间累计坏账户占比与累计好账户占比差的绝对值(累计good%-累计bad%),然后对这些绝对值取最大值即得此评分卡的K-S值。

下面这一段解释得更详细的K-S和AUC的区别是参考的这篇博客:

https://blog.csdn.net/sinat_30316741/article/details/80018932

    由于ks值能找出模型中差异最大的一个分段,因此适合用于cut_off,像评分卡这种就很适合用ks值来评估。但是ks值只能反映出哪个分段是区分最大的,而不能总体反映出所有分段的效果,因果AUC值更能胜任。
    ROC值一般在0.5-1.0之间。值越大表示模型判断准确性越高,即越接近1越好。ROC=0.5表示模型的预测能力与随机结果没有差别。
    KS值表示了模型将+和-区分开来的能力。值越大,模型的预测准确性越好。一般,KS>0.2即可认为模型有比较好的预测准确性。

好了,引用结束。
K-S值一般是很难达到0.6的,在0.2~0.6之间都不错。一般如果是如果负样本对业务影响极大,那么区分度肯定就很重要,此时K-S比AUC更合适用作模型评估,如果没什么特别的影响,那么用AUC就很好了。

三 GINI系数

·GINI系数:也是用于模型风险区分能力进行评估。
GINI统计值衡量坏账户数在好账户数上的的累积分布与随机分布曲线之间的面积,好账户与坏账户分布之间的差异越大,GINI指标越高,表明模型的风险区分能力越强。

GINI系数的计算步骤如下:
1. 计算每个评分区间的好坏账户数。
2. 计算每个评分区间的累计好账户数占总好账户数比率(累计good%)和累计坏账户数占总坏账户数比率(累计bad%)。
3. 按照累计好账户占比和累计坏账户占比得出下图所示曲线ADC。
4. 计算出图中阴影部分面积,阴影面积占直角三角形ABC面积的百分比,即为GINI系数。

四 Lift , Gain

前三个指标应用场景更多一些


Lift图衡量的是,与不利用模型相比,模型的预测能力“变好”了多少,lift(提升指数)越大,模型的运行效果越好。
Gain图是描述整体精准度的指标。
计算公式如下:
                                       
                                                       
                  
作图步骤:
1. 根据学习器的预测结果(注意,是正例的概率值,非0/1变量)对样本进行排序(从大到小)-----这就是截断点依次选取的顺序
2. 按顺序选取截断点,并计算Lift和Gain ---也可以只选取n个截断点,分别在1/n,2/n,3/n等位置
例图:

   
 

参考:

  1. https://blog.csdn.net/Orange_Spotty_Cat/article/details/82425113
  2. https://blog.csdn.net/shy19890510/article/details/79501582

猜你喜欢

转载自blog.csdn.net/zwqjoy/article/details/84859405