目录

  • 0 前言
  • 1 构建评分卡的整个流程图
  • 2 信息值 IV(Information Value)和 证据权重 WOE(Weight of Evidence)
    • 2.1 WOE 定义
    • 2.2 IV 定义
    • 2.3 IV的极端情况
  • 3 评分卡构建
    • 3.1 评分卡刻度
    • 3.2 基于Logistic的评分卡构建
    • 3.3 其它算法评分卡构建(保留观点)
  • 4 模型稳定性PSI(Population Stability Index)
    • 4.1 稳定性监测
    • 4.2 PSI计算
  • 参考资料:

正文

0 前言

评分卡模型最早是用在银行审批用户申请贷款的环节。不过,由于近年来小贷的盛行,越来越多的公司开始基于自己平台的用户数据来构建评分卡模型。银行信用评分卡一般分为两类:

  1. 申请评分卡,对新贷款申请进行筛选并判断其违约风险;
  2. 行为评分卡,对审批通过的贷款账户进行覆盖整个贷款周期的管理。

在介绍评分卡的构建过程之前,我们首先引入一个标准信用卡的格式示例,这样可以有一个直观的概念。


其中,485是模型计算的基础分值,39,36,38分别是Age,TAR,ES变量取值所在评分区间或类型的得分,将它们相加就得到了该用户在所建评分卡的最后总得分。

本篇文章主要介绍评分卡构建中的几个主要概念,以及在构建评分卡过程中遇见的些许问题,目的也是为了方便自己日后查阅。对于样本的数据处理过程和代码实现并没有涉及。

1 构建评分卡的整个流程图

该流程中各个步骤的顺序可以根据具体情况的不同进行调整,也可以根据需要重复某些步骤。

2 信息值 IV(Information Value)和 证据权重 WOE(Weight of Evidence)

2.1 WOE 定义

介绍 IV 的计算方法之前,首先要明白 WOE 的概念,因为 WOE 是计算 IV 的基础。标准评分卡的创建也可以不采用WOE转换,引入WOE的目的并不是为了提高模型质量。

如上,变量ResStatus为类别变量,有三种类别:屋主、其他、承租人。表中计算了这个变量的每种类别对应目标变量所占的正常和违约的人数,正常占全部正常的比例(正常的分布)和违约占所有违约的比例(违约的分布),然后计算每个类别对应的 WOE 。

WOE 的定义如下:

WOEi=ln[Bad DistributioniGood Distributioni]WOEi=ln⁡[Bad DistributioniGood Distributioni]

WOEi=ln(Bi/BTGi/GT)WOEi=ln⁡(Bi/BTGi/GT)

其中Bi,BT,Gi,GTBi,BT,Gi,GT 分别为第 ii 类中违约用户数量、总的违约用户数量、第 ii 类中正常用户数量、总的正常用户数量。

需要记住的是,对于类别 ii,正常和违约的分布分别定义为:

Good Distributioni=Number of GoodiTotal Number of GoodGood Distributioni=Number of GoodiTotal Number of Good

Bad Distributioni=Number of BadiTotal Number of BadBad Distributioni=Number of BadiTotal Number of Bad

如果括号内的比值小于1, WOE 为负值;反之为正值。上面表中ResStatus变量为类别型变量,同样的定义和计算方法也适用于连续型变量,但对于连续型变量计算 WOE 之前,需要先将变量分段(bin)。

从上式中可以发现,WOEiWOEi 为第 ii 类中违约与正常的比率与整个样本中违约与正常比率的比值的对数。因此,其目的是衡量第 ii 类对违约与正常的比率的影响程度。|WOEi||WOEi| 越大,说明此类别更能区分违约与正常用户,|WOEi||WOEi| 越小,此类别区分违约与正常不明显。

通常,对连续型变量进行分箱计算WOE之后,其各个分箱的WOE值应该呈现一个单调趋势。当然,有时连续性变量的WOE也有可能呈现一个U型趋势(比如在上面前言中评分卡的变量Age)。不管如何,首先都要从业务上能给出一个合理的解释,否则,这个变量很可能没法放到我们最后创建的评分卡中。

2.2 IV 定义

IV 是用来衡量自变量对目标变量的影响程度的指标。

IVi=(Bi/BT−Gi/GT)∗ln(Bi/BTGi/GT)IVi=(Bi/BT−Gi/GT)∗ln⁡(Bi/BTGi/GT)

IV=∑iIViIV=∑iIVi

IV 值是 WOE 的加权求和,在 IViIVi 的表达式中分为两个部分,可以认为,前一部分表示此分组在全部数据中所占比例,后一部分则表示此分组区分违约与正常用户的能力。IViIVi 由两部分的值共同决定,也就决定了最后的 IVIV。

2.3 IV的极端情况

IV 依赖 WOE,如果在分箱后的某个分组对应的违约或者正常的用户数为0,则这个分组对应 WOEi=∞WOEi=∞ ,相应的 IVi=+∞IVi=+∞ ,而此时这样分组是没有意义的。解决方法如下:

  1. 如果此分组在所有样本中所占比例比较大,则可考虑将此变量的分组单独作为一条规则,作为模型的前置条件或补充条件;
  2. 如果此分组在所有样本中所占比例比较小,可重新对变量进行分组,使这种现象不再发生;
  3. 可以将分组中的数据0用1代替,使计算有意义。

3 评分卡构建

3.1 评分卡刻度

对于任意一个用户,将其被估计的违约概率表示为 p,则估计的正常概率为 1-p,则可以得到:

Odds=p1−pOdds=p1−p

评分卡设定的分值刻度可以通过将分值表示为 Odds 对数的线性表达式来定义。如下表示:

Score=A−Blog(Odds)Score=A−Blog(Odds)

其中,A 和 B 为常数。上式中负号可以使得违约概率越低,得分越高。
Logistic 回归模型计算 Odds 如下:

log(Odds)=β0+β1x1+⋯+βpxplog(Odds)=β0+β1x1+⋯+βpxp

其中,β0,β1,⋯,βpβ0,β1,⋯,βp 由 Logistic 模型拟合给出。

常数 A 和 B 通常被称为补偿和刻度,它们的值可以通过将两个已知或者假设的分值带入 Score=A−Blog(Odds)Score=A−Blog(Odds) 中得到。通常,需要两个假设:

  • 在某个特定的比率设定特定的预期分值 P0P0;
  • 指定比率翻番的分数(PDO,Point-to-Double Odds)。

首先,设定比率为 θ0θ0 的特定点的分值为 P0P0。然后,比率为 2θ02θ0 的点分值为 P0−PDOP0−PDO。带入得到两个等式:

P0=A−Blog(θ0)P0=A−Blog(θ0)

P0−PDO=A−Blog(2θ0)P0−PDO=A−Blog(2θ0)

解上述两个方程中的常数 A 和 B, 可以得到:

B=PDOlog(2)B=PDOlog(2)

A=P0+Blog(θ0)A=P0+Blog(θ0)

例如,假设想要设定评分卡刻度使得比率为 1:60(违约与正常)时的分值为600分,PDO = 20。然后计算出 B = 28.85, A = 481.89,于是计算得分公式为:

Score=481.89−28.85log(Odds)Score=481.89−28.85log(Odds)

3.2 基于Logistic的评分卡构建

最终,评分卡的分值可以写成下列形式:

Score=A−B(β0+β1x1+⋯+βpxp)Score=A−B(β0+β1x1+⋯+βpxp)

变量 x1,⋯,xpx1,⋯,xp 为自变量对应 WOE,可以进一步写成:

Score=A−B⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪β0+(β1ω11)δ11+(β1ω12)δ12+⋯⋯+(βpωp1)δp1+(βpωp2)δp2+⋯⎫⎭⎬⎪⎪⎪⎪⎪⎪⎪⎪Score=A−B{β0+(β1ω11)δ11+(β1ω12)δ12+⋯⋯+(βpωp1)δp1+(βpωp2)δp2+⋯}

其中,ωijωij 是第 ii 个变量对应的第 jj 个类别上的 WOE , δijδij 是二元变量,表示变量 ii 是否取第 jj 个值。 上式可重新写为:

Score=(A−Bβ0)−(Bβ1ω11)δ11−(Bβ1ω12)δ12−⋯−⋯−(Bβpωp1)δp1−(Bβpωp2)δp2−⋯Score=(A−Bβ0)−(Bβ1ω11)δ11−(Bβ1ω12)δ12−⋯−⋯−(Bβpωp1)δp1−(Bβpωp2)δp2−⋯

其中,A−Bβ0A−Bβ0 为基础分值,而下面每一行对应的相应变量 x1,⋯,xpx1,⋯,xp 的得分。

3.3 其它算法评分卡构建(保留观点)

从上面可以看到,基于Logistic的评分卡给予每个变量的每个分箱一个特定的分数,其目的是对评分卡做出一个合理的解释,例如,如果客户想提高自己的评分,可以通过提高评分卡中的某些指标的值,使之对应的分数提高就可以了。

当然,还有其它一些算法可以帮助我们构建评分卡,比如:RandomForest, GBDT等。这些算法可以给出客户的违约概率,但是构建的评分卡不能像Logistic那样计算每个变量的分箱或类型得分,我们只能根据这个违约概率计算客户的总评分。但依然要依据上面定义的评分刻度:

Score=A−Blog(Odds)Score=A−Blog(Odds)

其中,

Odds=p1−pOdds=p1−p

4 模型稳定性PSI(Population Stability Index)

4.1 稳定性监测

模型上线之后,要对实际运行情况进行监测,主要为两个方面:

用户在模型中得分分布的稳定性:模型上线之后的真实数据得分分布(real data)和建模时训练数据(train data)的得分分布比较;

变量稳定性:模型上线之后的实际变量分布(real data)和建模时训练数据分布(train data)比较。

4.2 PSI计算

首先对样本A和样本B得分按照同一标准分为几个区间(类别型变量按类别分),计算样本在每个区间上的占比。在每个区间上,将两个样本各自占比相除再取对数,然后乘以各自占比之差,最后将各个区间的计算值相加,最终得到PSI(类似于IV计算),如下:

PSI=∑i(Ai/AT−Bi/BT)∗ln(Ai/ATBi/BT)PSI=∑i(Ai/AT−Bi/BT)∗ln⁡(Ai/ATBi/BT)

  • PSI < 0.1 样本分布有微小变化
  • PSI 在 0.1 和 0.2 之间, 样本分布有变化
  • PSI > 0.2 样本分布有显著变化

重点关注 PSI > 0.2 的变量,说明此变量的分布在建模时与现在已经发生了显著的变化,查找PSI变动的原因,并重新调整模型。

信用评分卡模型的理论准备相关推荐

  1. 3分钟搞明白信用评分卡模型模型验证

    2019独角兽企业重金招聘Python工程师标准>>> 信用评分卡模型在国外是一种成熟的预测方法,尤其在信用风险评估以及金融风险控制领域更是得到了比较广泛的使用,其原理是将模型变量W ...

  2. 基于Python的信用评分卡模型-give me some credit数据集,AUC 0.93 KS 0.71

    信用风险计量模型可以包括跟个人信用评级,企业信用评级和国家信用评级.人信用评级有一系列评级模型组成,常见是A卡(申请评分卡).B卡(行为模型).C卡(催收模型)和F卡(反欺诈模型). 今天我们展示的是 ...

  3. python信用评分卡_基于Python的信用评分卡模型分析(二)

    上一篇文章基于Python的信用评分卡模型分析(一)已经介绍了信用评分卡模型的数据预处理.探索性数据分析.变量分箱和变量选择等.接下来我们将继续讨论信用评分卡的模型实现和分析,信用评分的方法和自动评分 ...

  4. 信用评分卡模型开发中双峰分布原因及解决方案

    信用评分卡模型开发中双峰分布原因及解决方案   文: 郑旻圻 邹钰 刘巧莉 转自:  数信互融 在信用评分卡模型开发过程中,正态性是检验模型信用评分分布是否有效的一个重要指标.正常情况下,标准的正态分 ...

  5. 互联网金融信用评分卡模型构建

    互联网金融信用评分卡模型构建 背景介绍 信用风险计量体系包括主体评级模型和债项评级两部分. 主体评级和债项评级均有一系列评级模型组成,其中主体评级模型可用"四张卡"来表示,分别是A ...

  6. 信用评分卡模型(R语言)

    贷款风险预测-信用评分卡模型(R语言) 时间:2018年10月9日 本次的分析数据来自Kaggle数据竞赛平台的"give me some credit"竞赛项目.下载地址为:ht ...

  7. 信用评分卡模型开发及评估指标

    版权声明:本文为博主原创文章,未经博主允许不得转载. 一.信用风险评级模型的类型 信用风险计量体系包括主体评级模型和债项评级两部分.主体评级和债项评级均有一系列评级模型组成,其中主体评级模型可用&qu ...

  8. 基于R的信用评分卡模型解析

    信用评分流程 1.数据获取 我使用的信贷数据共有3000条数据,每条数据11个特征. rm(list=ls()) setwd("D:\\case") library(xlsx) d ...

  9. GiveMeSomeCredit——信用评分卡模型

    如今在银行.消费金融公司等各种贷款业务机构,普遍使用信用评分,对客户实行打分制,以期对客户有一个优质与否的评判.评分卡分为三类分别为: A卡(Application score card)申请评分卡 ...

最新文章

  1. 用Eclipse进行远程Debug代码
  2. C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 能支撑10万以上客户端的数据同步下载问题...
  3. mySQL双机冗余_MySQL双机热备实现原理
  4. Boosted Tree:一篇很有见识的文章
  5. Kafka设计解析(六)- Kafka高性能架构之道
  6. Fedora CentOS Red Hat中让vim支持语法高亮设置
  7. redhat enterprise linux 5 上安装openoffice3.0 1
  8. 如何删除Apple Music中的连接功能
  9. php按时间分组的sql语句,(SQL语句)按指定时间段分组统计
  10. SpringBoot集成Shiro进行权限控制和管理
  11. 【LogStash】logstash marking url as dead 问题解决
  12. Linux系统管理.Samba配置文件
  13. 生物物种数据库_一个半机械人的物种
  14. 通达信实现自动交易系统
  15. 论一只爬虫的自我修养11:Scrapy框架之初窥门径
  16. 构建区块链量化交易系统(一)
  17. 光谱分析中的变量选择
  18. 苹果6显示连接id服务器出错,科技知识:如果连接appleid时发生服务器出错应该如何处理...
  19. [已解决 2020年]你的支付授权失败。请核对你的信息并重试,或尝试其他支付方式。请联系你的银行了解更多信息
  20. 2022-2028年中国农作物行业投资战略分析及发展前景研究报告

热门文章

  1. 万物皆对象java_又一次认识java(一) ---- 万物皆对象
  2. 折纸机器人的步骤图解_折纸图解老虎
  3. html传递guid参数,C#中的Guid.ToString鲜为人知参数用法
  4. 服务器系统加速,系统加速技巧:让Linux启动更加快速
  5. Leetcode 55.跳跃游戏 (每日一题 20210706)
  6. tensorflow就该这么学--3
  7. pytorch笔记 torch.clamp(截取上下限)
  8. 深度学习核心技术精讲100篇(四十九)-深度学习之关联规则
  9. 还在为数学建模的事发愁?带你一起来看看数模竞赛中必备的经典算法
  10. tableau必知必会之运用本福德定律(Benford‘s law)验证数据真实性