ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

常用风控评估指标汇总(混淆矩阵/AUC/ROC/KS/PSI/Lift/Gain等)

2022-02-08 12:00:26  阅读:1010  来源: 互联网

标签:AUC PSI ROC KS Lift 样本 曲线 Cum


本文主要汇总一些常用于机器学习的评估指标,针对每个指标由浅入深,从”一句话解释“、定义及公式、计算/绘制步骤等方面一一总结。这些指标本身可用于很多业务场景,但因为我从事风控行业,本文涉及的例子都是风控的案例,重点介绍这些指标如何评估风控模型的效果。

1. 混淆矩阵

一句话解释 :混淆矩阵就是统计分类模型“归错类”和“归对类”的样本个数,然后把结果放在一个表里展示出来。

混淆矩阵

真实值

Positive

Negative

预测值

Positive

TP

FP

Negative

FN

TN

  • TP(True Positive,真阳):被分类器正确分类的正样本个数,例如:事实上“逾期”且预测也“逾期”的账户数;
  • TN(True Negative,真阴):被分类器正确分类的负样本个数,例如,事实上“未逾期”且预测也“未逾期”的账户数;
  • FP(False Positive,假阳):被错误地标记为正样本的负样本个数,例如:事实上“未逾期”但预测“逾期”的账户数;
  • FN(False Negative,假阴):被错误地标记为负样本的正样本个数,例如:事实上“逾期”但预测“未逾期”的账户数。

注:TP + TN + FP + FN = 总样本数


2. 准确率、精确率、召回率、F1 值

  • 准确率(Accuracy):被预测得正确(包括正、负样本)的样本 占 总样本 的比重:

Accuracy = \frac{TP+TN}{TP+TN+FP+FN}

局限性:当两类样本数量很不均衡时,accuracy 就不能很好的反映模型的性能了。

  • 精度/精确率/精准率/查准率(Precision):被预测正确的正样本 占 全部被预测为正的样本 的比重,例如,在所有我们预测“逾期”的贷款人中,事实上“逾期”的贷款人的百分比:

Precision=\frac{TP}{TP+FP}

  • 召回率/查全率(Recall):被预测正确的正样本 占 全部正样本 的比重,例如,在所有实际“逾期”的贷款人中,成功被预测“逾期”的贷款人的百分比:

Recall=\frac{TP}{TP+FN}

  • F1 值:Precision 和 Recall 的调和平均值。当 Precision 不变时,Recall 越大,F1 值越大;当 Recall 不变时,Precision 越大,F1 值越大。

\frac{2}{F_{1}}=\frac{1}{Precision}+\frac{1}{Recall}

\Rightarrow F_{1}=\frac{2PR}{P+R}=\frac{2TP}{2TP+FP+FN}

  • (简单)调和平均数公式:

x = \frac{n}{\sum_{i=1}^{n}{\frac{1}{x_i}}},当 n=2,\frac{2*x_1*x_2}{(x_1+x_2)}

调和平均数又称倒数平均数,是总体各统计变量倒数的算术平均数的倒数,是一种集中趋势的度量。

调和平均广泛存在于世界各种角落,调和平均的哲学意义是在一个过程中有多少条平行的路径。

算术平均值中每个参数的权重都是一样的。

查准率和查全率之间的权衡

给定二元模型和阈值,我们不能同时拥有高查准率和高查全率,这是因为:

默认情况下,二分类模型的阈值为 0.5

1【高准确率,低召回率】:假定我们用逻辑回归建立"病人是否患癌"的二分类模型,我们需要提升阈值来实现:

h_\theta(x) \in [0, 1]

Predict 1 if h_\theta(x) \geq 0.9

Predict 0 if h_\theta(x) < 0.9

2【高召回率,低准确率】:假定我们用逻辑回归建立"贷款人是否有逾期倾向"的二分类模型,我们需要降低阈值来实现:

h_\theta(x) \in [0, 1]

Predict 1 if h_\theta(x) \geq 0.3

Predict 0 if h_\theta(x) < 0.3

一个更直观的例子:


AUC/ROC

  • ROC(Receiver Operating Characteristics)曲线
  • AUC(Area Under Curve)值

ROC--深入浅出

一句话解释 :ROC(Receiver Operating Characteristic)曲线通过设置不同的临界值,来展示分类模型在不同临界值下的表现。

ROC 曲线图中:

  • 横轴为 FPR(假阳率):FP/(FP+TN),等同于 1-TNR,FPR 越大,预测为正的样本中负类越多;
  • 纵轴为 TPR(真阳率):TP/(TP+FN),TPR 越大,预测为正的样本中正类越多。

ROC 曲线绘制原理

假设使用逻辑回归分类器进行预测,分类器会给出每个样本为正的概率,可规定一个阈值 x,概率大于 x 的为正样本,概率小于 x 的为负样本。若取多个不同概率作为阈值,则可以得到一系列(FPR, TPR),绘制出 ROC 曲线。

总结一下,可分成三步:

  1. 先按分数升序排序,计算某个阈值 x 下的 TPR 与 FPR;
  2. 重复步骤(1),在不同阈值 x 下计算得到多组 TPR 与 FPR;
  3. 以 FPR 为横轴,TPR 为纵轴,画出 ROC 曲线。

注:

步骤(1)中,概率低于 x 时预测为 Bad。

TPR = (预测为 Bad & 真实为 Bad)/整体真实为 Bad

FPR = (预测为 Bad & 真实为 Good)/整体真实为 Good

因此可将 TPR 理解为累积正样本率 Cum Bad Rate,FPR 理解为累积负样本率 Cum Good Rate。

样本分布与 ROC 曲线之间的关系:

ROC 曲线绘制例子

假设已经得出一系列样本被划分为正类的概率,然后按照大小排序,下图是一个示例,图中共有 20 个测试样本,“Class”一栏表示每个测试样本真正的标签(p 表示正样本,n 表示负样本),“Score”表示每个测试样本属于正样本的概率。

接下来,从高到低将“Score”值作为阈值 threshold,当测试样本属于正样本的概率大于或等于这个 threshold 时,我们认为它为正样本,否则为负样本。

举例来说,对于图中的第 4 个样本,其“Score”值为 0.6,那么样本 1,2,3,4 都被认为是正样本,其中样本 1,2,4 预测正确,则 TP=3;样本 5-20 被认为是负样本,其中样本 5,6,9,11,13,17,19 实际为正样本,则 FN=7,故 TPR=TP/(TP+FN)=3/(3+7)=0.3。

每次选取一个不同的 threshold,我们就可以得到一组 FPR 和 TPR,即 ROC 曲线上的一点。这样一来,我们一共得到了 20 组 FPR 和 TPR 的值,将它们画在 ROC 曲线的结果如下图:

AUC--深入浅出

一句话解释 :ROC 曲线与 FPR 轴围成的面积记作 AUC,AUC 越大,说明分类器的性能越好。

以下图为例:

  1. L2 曲线与 FPR 轴之间的面积 > L1 曲线与 FRP 轴之间的面积,故 L2 曲线对应的分类器性能优于 L1 曲线,即:曲线越靠近 A 点(左上方)性能越好,曲线越靠近 B 点(右下方)曲线性能越差;
  2. 若 ROC 曲线与 CD 对角线一致,说明算法性能和随机猜测的效果差不多,如 C、D、E 点。若 ROC 曲线位于 CD 对角线上面(即位于白色三角形内),说明算法性能优于随机猜测,如 G 点(0.2, 0.7)。若 ROC 曲线位于 CD 对角线下面(即位于灰色三角形内)说明算法性能比随机猜测差,如 F 点(0.8, 0.3)。

AUC 的缺陷

  1. 忽略了预测的概率值和模型的拟合优度;
  2. AUC 反应的信息过于笼统,无法反应实际业务中关心的指标,如:召回率、精确率等;
  3. AUC 对 FPR 和 TPR 两种错误的代价同等看待;
  4. AUC 没有给出模型误差的空间分布信息;
  5. 最重要的一点,AUC 的 misleading 的问题:可能存在两个模型的 AUC 相等,但其在不同区域的预测能力是不同的。

拓展阅读: AUC的缺陷 (原文: AUC: a misleading measure of the performance of predictive distribution models


KS

首先介绍一下什么是 KS-检验:

KS-检验(Kolmogorov-Smirnov text):KS-检验是比较一个频率分布 f(x)与理论分布 g(x)或者两个观测值分布的检验方法。其原假设 H0:两个数据分布一致或者数据符合理论分布。D=max| f(x)- g(x)|,当实际观测值 D>D(n,α)则拒绝H0,否则则接受H0假设。

一句话解释:KS(Kolmogrow-Smirnov)值是好样本与坏样本累计分布之间的差值

计算公式:

ks = max \{|cum(bad\_rate)-cum(good\_rate)|\}

在风控场景,上面的式子可以理解为:KS=max{|累计坏人占比-累计好人占比|}

举个例子,根据分数划分 20 个区间小组,针对各组分别统计如下指标:

  • Count: 样本总数
  • Bad: 坏样本数
  • Good: 好样本数
  • Cum_Bad: 累计坏样本数
  • Cum_Good: 累计好样本数
  • Cum_Count: 累计样本数
  • Cum_Bad%: 累计坏样本占比
  • Cum_Good%: 累计好样本占比

首先 mock 出 Score、Count、Bad、Good 四列数据,然后计算出后面五列累计指标,最后由 Cum_Bad%和 Cum_Good%的绝对值计算出 KS_Value,计算细节如下:

其中,40-45 分数区间的 KS_Value 最大,达到了 30.17%,即该结果对应的模型 KS 为 30.17%.


5. PSI

一句话解释:PSI(Population Stability Index)指标反映了验证样本在各分数段的分布与建模样本分布的稳定性。在建模中,我们常用来筛选特征变量、评估模型稳定性。

计算公式:

PSI = SUM( (Actual% - Expected%)* ln(Actual%/ Expected%) )

Actual% -- 实际占比

Expected% -- 预期占比

从业务上来看,PSI 指标值越小,实际分布和预期分布之间的差异就越小,表示当前模型在业务上的表现越稳定。

PSI 指标的计算可分为以下步骤:

  1. 对预期(Expected)分数作离散化处理,一般分成 10 或 20 个区间,按升序/降序排列, 并统计各分箱的样本数占比(Expected%);
  2. 按上一步的分箱区间,对实际分数在各区间的样本占比(Actual%)进行统计;
  3. 按每个分箱,计算其 (Actual%-Expected%)和 ln(Actual%/ Expected%),然后计算 (Actual% - Expected%)* ln(Actual%/ Expected%),得到每个分箱的 Index;
  4. 将每个分箱(每行)的 Index 值相加,得到 PSI 指标。

老规矩 -- 举个栗子,具体的计算过程如下:

在大多数场景下,目前较通用的 PSI 评判标准阈值如下:

  • 若 PSI 小于 0.1,模型表现很稳定,无需对当前模型进行更新;
  • 若 PSI 介于 0.1-0.2,模型在当前场景的稳定性有一定波动,需持续监控并探索波动原因;
  • 若 PSI 大于 0.2,则需要对模型进行更新迭代。


6. Lift 曲线

一句话解释:Lift 衡量的是评分模型对坏样本的预测能力相比随机选择的倍数,Lift 大于 1 说明模型表现优于随机选择。

Lift=\frac{\frac{TP}{TP+FP}}{\frac{P}{P+N}}

Lift 在风控场景一般用于贷前评分卡模型的效果评估,下面举个例子:算完 KS 的边角余料先不要丢掉,基于这些中间结果,再补充一列 Cum_total%,就可以针对每一行计算其 Lift 值了,即 Lift=Cum_bad%/Cum_total%,以 Cum_total%作为横轴,Lift 值作为纵轴,即可作出 Lift 曲线图,具体的中间计算过程和 Lift 曲线如下:

不过 Lift 指标更多用于营销场景。例如:若不使用营销模型,而是采用随机的营销方式,只有 1%的客户会成功转化;而使用模型进行精准营销后,会有 10%的客户成功转化。那么,lift=10%/1%=10。


7. Gain 曲线

Gain 曲线和 Lift 曲线可以放到一起对比来看:

  • Lift=Cum_bad%/Cum_total%
  • Gain=Cum_bad%

一句话解释:Lift 曲线主要表现的是相较于不使用模型时,预测效果的提升指数,而 Gain 曲线表现的则是模型整体的精度。从计算公式上来看,可以说 Gain 是 Lift 的分子。

即  Gain=\frac{TP}{TP+FP}

如果要作图的话,接着用

标签:AUC,PSI,ROC,KS,Lift,样本,曲线,Cum
来源: https://blog.csdn.net/cyan_soul/article/details/122820556

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有