机器学习模型的几种常用评估方法

概念

通过训练集产生的模型,利用测试数据来进行模型效果的评估,评估结果以模型评估报告的形式呈现,在报告中通过AUC值、模型准确率、模型召回率等一系列评估指标将帮助判断模型是否可行以及是否满足业务目标。

评估指标

1、混淆矩阵

T——true,F——false,P——positive,N——negative

TP(实际为正预测为正,真正),TN(实际为负预测为负,真负),
FP(实际为负但预测为正,假正),FN(实际为正但预测为负,假负)

评估分类模型

FPR=FP/(FP+TN) 表示所有实际违约客户中,被预测为不违约的客户的比例。越小越好
TPR=TP/(FN+TP) 表示所有实际为不违约客户中,被预测为不违约客户的比例。越大越好

file

评估回归模型

file

2、K-S值

阈值:阈值就是一个分界线,用于判定正负例的,在模型预测后我们会给每条预测数据进行打分(0<score<1)。如:指定阈值为0.6,那么评分低于0.6的会被判定为负例(不好的),评分高于0.6的即会判定为正例(好的),随着阈值的减小,判定为正例的样本相应地就会增加。

正样本洛伦兹曲线记为f(x),负样本洛伦兹曲线记为g(x),K-S曲线实际上是f(x)与g(x)的差值曲线。K-S曲线的最高点(最大值)定义为KS值,KS值越大,模型分值的区分度越好,KS值为0代表是最没有区分度的随机模型。准确的来说,K-S是用来度量阳性与阴性分类区分程度的。由于ks值能找出模型中差异最大的一个分段,因此适合用于cut_off,像评分卡这种就很适合用ks值来评估。

file

KS的计算步骤如下:

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

3、ROC图和AUC

ROC(Receiver Operating Characteristic Curve):接受者操作特征曲线。ROC曲线及AUC系数主要用来检验模型对客户进行正确排序的能力。 Sensitivity=正确预测到的正例数/实际正例总数; 1-Specificity=正确预测到的负例数/实际负例总数; 纵坐标为Sensitivity(True Positive Rate),横坐标为1-Specificity(True Negative Rate),ROC曲线则是不同阈值下Sensitivity和1-Specificity的轨迹。随着阈值的减小,Sensitivity和1-Specificity也相应增加,所以ROC曲线呈递增态势。

ROC曲线描述了在一定累计好客户比例下的累计坏客户的比例,模型的ROC曲线越远离对角线,说明模型的分别能力越强;

AUC系数表示ROC曲线下方的面积。模型的AUC基线值大于0.5才有意义。AUC值越接近1模型的效果越好,模型的风险区分能力越强。

由于ks值只能反映出哪个分段是区分最大的,而不能总体反映出所有分段的效果,因此AUC值更能胜任。

ROC曲线与KS曲线

对于二分类模型来说,主流的评估方法有ROC曲线和KS曲线两种方法。

ROC曲线

我们之前已经获得了模型的准确度为79.77%,但是这个准确度并不可靠,因为如果预测所有人都不会流失,那么由于7000组数据里实际便有5000组未流失数据,如果这样预测的话,也能达到5000/7000约71%的准确度,显然这个较高的准确度是没有意义的,因为它一个可能流失的人都没有预测出来。在商业实战中,我们更关心下面两个指标:

file

其中TP、FP、TN、FN的含义如下表所示,这个表也叫作混淆矩阵:
如果你想加强你了解:https://www.jianshu.com/p/2ad360edd219

file

以上面提到的例子为例,7000客户中有2000个流失,5000个不流失客户,假设模型预测所有客户都不会流失,如下表所示,那么模型的假警报率(FPR)为0,即没有误伤一个未流失客户,但是此时模型的命中率(TPR)也为0,即没有揪出一个流失客户。

file

命中率计算的便是在所有实际流失的人中,预测为流失的比例,也称真正率或召回率;
而假警报率则是计算在所有实际没有流失的人当中,预测为流失的比例,也称假正率。
为加深大家的理解,笔者绘制了如下的图片方便大家记忆:

file

一个优秀的客户违约预测模型,我们希望命中率(TPR)尽可能的高,即能尽可能地揪出坏人,同时也希望假警报率(FPR)能尽可能的低,即不要误伤好人。

然而这两者往往成正相关性,因为一旦当调高阈值,比如认为违约率超过90%的才认定为流失,那么会导致假警报率很低,但是命中率也很低。

而如果降低阈值的话,比如认为违约率超过10%就认定为流失,那么命中率就会很高,但是假警报率也会很高。

因此为了衡量一个模型的优劣,数据科学家根据不同阈值下的命中率和假警报率绘制了如下的曲线图,称之为ROC曲线:

ROC曲线的横坐标为假警报率(FPR),其纵坐标为命中率(TPR),在某一个阈值条件下,我们希望命中率能尽可能的高,而假警报率尽可能的低

file

举例来说,某一检测样本总量为100,其中流失客户为20人,当阈值为20%的时候,即流失概率超过20%的时候即认为客户会流失时,模型A和模型B预测出来的流失客户都是15人。

如果模型A预测流失的15人中有10人的确流失,有5人属于误判,那么命中率达10/20=50%,此时假警报率为5/80=6.25%。

如果模型B预测流失的15人中只有5人的确流失,有10人属于误判,那么其命中率为5/20=25%,假警报率为10/80=12.5%。

此时模型A的命中率是模型B的2倍,假警报率是模型B的一半,因此我们认为模型A是一个较优的模型。

AUC

数值比较上可以使用AUC值来衡量模型的好坏,AUC值(Area Under Curver)指在曲线下面的面积,该面积的取值范围通常为0.5到1,0.5表示随机判断,1则代表完美的模型。

在商业实战中:
AUC值能达到0.75以上就已经可以接受了
如果能达到0.85以上,则为非常不错的模型了

KS曲线与KS值

KS曲线和ROC曲线的本质其实是相同的,同样关注命中率(TPR)和假警报率(FPR),希望命中率(TPR)尽可能的高,即能尽可能地揪出潜在流失客户,同时也希望假警报率(FPR)能尽可能的低,即不要把未流失客户误判断为流失客户。

区别于ROC曲线将假警报率(FPR)作为横轴,命中率(TPR)作为纵轴,KS曲线的横坐标为阈值,其纵坐标为命中率(TPR)与假警报率(FPR)之差,如下图所示:
file

二分类模型的另一种评估方法 - KS曲线与KS值
file

通常来说,我们希望模型有较大的KS值,较大的KS值说明模型有较强的区分能力,其处在不同范围的模型的含义如下所示:

  • KS值小于0.2,一般认为模型区分能力较弱。
  • KS值在[0.2,0.3]区间内,模型具有一定区分能力。
  • KS值在[0.3,0.5]区间内,模型具有较强的区分能力。

但KS值也不是越大越好,如果KS值大于0.75,往往表示模型有异常。其实在真正的生产实际中,KS值处于[0.2,0.3]区间类,就已经挺不错了。

4、Lift提升图

Lift =[TP/(TP+FP)] / [(TP+FN)/(TP+FP+FN+TN)] = PV_plus / pi1,它衡量的是,与不利用模型相比,模型的预测能力“变好”了多少,lift(提升指数)越大,模型的运行效果越好。

ROC曲线和lift曲线都能够评价逻辑回归模型的效果:类似信用评分的场景,希望能够尽可能完全地识别出有违约风险的客户,选择ROC曲线及相应的AUC作为指标;

类似数据库精确营销的场景,希望能够通过对全体消费者的分类而得到具有较高响应率的客户群从而提高投入产出比,选择lift曲线作为指标;

5、Gain增益图

Gains(增益) 与 Lift (提升)类似:Lift 曲线是不同阈值下Lift和Depth的轨迹,Gain曲线则是不同阈值下PV_plus和Depth的轨迹,而PV_plus=Lift*pi1= TP/(TP+FP),所以它们显而易见的区别就在于纵轴刻度的不同。

增益图是描述整体精准率的指标。按照模型预测出的概率从低到高排列,将每一个百分位数内的精准率指标标注在图形区域内,就形成了非累积的增益图。如果对每一个百分位及其之前的精准率求和,并将值标注在图形区域内,则形成累积的增益图。

6、Psi稳定性

公式: psi = sum((实际占比-预期占比)* ln(实际占比/预期占比))

一般认为psi小于0.1时候模型稳定性很高,0.1-0.25一般,大于0.25模型稳定性差,建议重做。

除了按概率值大小等距十等分外,还可以对概率排序后按数量十等分,两种方法计算得到的psi可能有所区别但数值相差不大。


相关文章:
https://blog.csdn.net/SSAA123LJIO1/article/details/106530342
http://www.cdadata.com/data/roc%e6%9b%b2%e7%ba%bf
http://www.cnblogs.com/ooon/p/5715918.html

为者常成,行者常至