Github代码:基于逻辑评分卡建模
在介绍基于逻辑评分卡之前,需要对逻辑回归有个基本认知,最好能自己推导公式。文章链接:逻辑回归推导及相关常问问题
信用评分本质上是模式识别中的一类分类问题,将企业或者个体消费者划分为能够按期还本付息(即“好”客户)和违约(即“坏”)两类。
具体做法是根据历史数据中的样本,从已知的数据中找出违约及不违约客户的特征,从而总结出分类的规则,建立数学模型,用于测量价款人的违约风险(或者违约概率),为消费信贷决策提供依据。
研究的目标变量为客户是否具有违约行为,其中,以标管定义的在应还日期前应该还款但没有还款的行为,定义为逾期行为。
筛选方法 | 大致流程 |
---|---|
随机森林 | 用随机森林法寻找自变量中对违约状态影响最显著的指标 |
计算变量的相对重要性 | 通过相对重要性的排序,获取自变量中对违约状态影响最显著的指标 |
广义交叉验证法 | 通过自变量间的广义交叉验证,获取自变量中对违约状态影响最显著指标 |
自变量的逐步回归法 | 通过自变量的逐步回归,获取自变量中对违约状态影响最显著的指标 |
采用“Boruta”法 | 采用采用“Boruta”法,获取自变量中对违约状态影响最显著的指标 |
定性指标的筛选是通过IV(Information Value)值选出适用于建模的指标-----(这里就不对IV做详细的解释和介绍了),总之IV值可以帮助我们衡量变量的预测能力(即帮模型预测好坏客户的能力)。再引入IV之前,要介绍另一个概念——WOE,这是因为IV值得计算是在WOE基础上的,同时,在介绍WOE之前,要介绍下特征分箱,这是因为WOE值是特征分箱后的计算结果。
由此,我们按照:特征分箱—— WOE值—— IV值,这条逻辑主线来依次介绍。
分箱的定义:
(1)将连续变量离散化
(2)将多状态的离散变量合并成少状态
(3)可以 将缺失作为独立的一个箱带入模型中
(4)将所有变量变换到相似的尺度上
分箱的重要性:
(1)稳定性:避免特征中无意义的波动对评分带来的波动
(2)健壮性:避免了极端值的影响
分箱的限制:
(1)计算量大
(2)分箱后需要编码
其中,分箱的方法分为:有监督和无监督分箱
有监督 | 无监督 |
---|---|
Best-KS | 等频 |
ChiMerge(即:常用的卡方分箱法) | 等距 |
聚类 |
**注:**这里不详细介绍每种分箱方法具体实现的过程
接下来介绍分箱需要注意点:
对于连续型变量:
(1)使用ChiMerge进行分箱(默认是5份)
(2)检查分箱后的bad rate的单调性,如果不满足,需要进行相邻的两箱合并,直到bad rate为止
(3)上述过程是收敛的,因为当箱数为2时,bad rate自然单调
(4)分箱必须覆盖所有样本为可能存在的值
(5)原始值很多时,为了减小时间的开销,通常选取较少(例如50个)初始切分点,但是要注意分布不均匀。
对于类别型变量:
(1)当类别上较少时,原则上不需要进行分箱
(2)都某个或者几个类别的bad rate为0时,需要和最小的非0的bad rate的箱进行合并
(3)当该变量可以完全区分目标变量时,需要认真检查该变量的合理性
WOE(weight of evidence),证据权重,是一种有监督的编码方式,将预测类别的集中度的属性作为编码的数值。
优势:
(1)将特征的值规范到相近的尺度上
(2)具有业务含义
缺点:
(1)需要每箱中同时包含好坏两个类别
以年龄属性,查看好坏样本的数量分布,得出WOE值:
**表1:按照“年龄”各个属性的好、坏统计**
Age | bad | good | WOE |
---|---|---|---|
<10 | 50 | 200 | =ln((50/100)/(200/1000))=ln((50/200)/(100/1000)) |
10-18 | 20 | 200 | =ln((20/100)/(200/1000))=ln((20/200)/(100/1000)) |
18-35 | 5 | 200 | =ln((5/100)/(200/1000))=ln((5/200)/(100/1000)) |
35-50 | 15 | 200 | =ln((15/100)/(200/1000))=ln((15/200)/(100/1000)) |
50y以上 | 10 | 200 | =ln((10/100)/(200/1000))=ln((10/200)/(100/1000)) |
总计 | 100 | 1000 |
可以看出,WOE反映的是在自变量每个分组下违约用户对正常用户占比和总体中违约用户对正常用户占比之间的差异,从而可以直观的认为WOE蕴含了自变量取值对目标变量(违约概率)的影响。同时,又因为WOE计算形式与逻辑回归中目标变量的逻辑转换:
l n p 1 − p = W 0 + W 1 ∗ X 1 + . . . + W n ∗ X n ln\frac{p}{1-p}=W_0+W_1*X_1+...+W_n*X_n ln1−pp=W0+W1∗X1+...+Wn∗Xn
非常相似,所以可将自变量WOE值替代原先的自变量值,计算公式如下:
W O E i = l n p i p n i = l n B i ∗ B T G i ∗ G T WOE_i=ln\frac{p_i}{p_{ni}}=ln\frac{B_i*B_T}{G_i*G_T} WOEi=lnpnipi=lnGi∗GTBi∗BT
其中,Bi 表示第i组违约用户的数量,BT 表示违约用户的总数量,Gi表示第i组正常用户的数量,GT表示正常用户的总数量。
同样,对于每个分组i,都有一个IV值,IV指的计算公式如下:
I V i = B i B T − G i G T ∗ l n ( B i ∗ B T G i ∗ G T ) IV_i=\frac{B_i}{B_T}-\frac{G_i}{G_T}*ln(\frac{B_i*B_T}{G_i*G_T}) IVi=BTBi−GTGi∗ln(Gi∗GTBi∗BT)
I V = ∑ k = 0 n I V i IV=\sum_{k=0}^n{IV_i} IV=k=0∑nIVi
IV值衡量的是解释变量对于目标变量的影响的显著水平。在使用IV值来考虑解释变量对于目标变量的影响时,解释变量筛选、变量赋值编码和模型稳健性评估,这些有先后顺序的过程可以同时进行。筛选出能够较好第预测目标变量的解释变量,并同时给出这些解释变量的一个合理的赋值编码结果。在进行建模前选择入模变量一般选择IV值较大的变量。
IV值的作用:
(1)非负指标,高IV表示该特征和目标变量的关联度高
(2)目标变量只能是二分类
(3)过高的IV,可能有潜在的风险
(4)特征分箱越细,IV值越高
常用的阈值:
IV <= 0.02 : 没有预测性,不可用
0.02 ~ 0.1 : 弱预测性
0.1 ~ 0.2 :有一定预测性
0.2 + :高预测性
特征工程
在构建基于逻辑回归评分卡模型前,需要进行特征工程步骤:
完成特征工程步骤后,再进行特征分箱需要注意以下几点:
不超过5箱
Bad Rate单调
每箱同时包含好坏样本
特殊值如-1,单独成一箱
连续型变量可直接分箱
类别型变量:
当取值较多时,先用bad rate编码,再用连续型分箱的方式进行分箱
当取值较少时:
2.1 如果每种类别同时包含好坏样本,无需分箱
2.2 如果有类别只包含好坏样本的一种,需要合并
特征筛选主要包括多变量和单变量分析
再进行特征筛选后,仅保留需要的特征,然后进行WOE编码。
特征WOE编码后的结果,在进行逻辑回归拟合,得到拟合后的系数值
每个属性对应的分支可以用过公式计算:WOE乘该变量的回归系数,再加上回归截距,再乘以比例因子,最后加上偏置量:
( w o e i ∗ β i ) ∗ f a c t o r + o f f s e t n (woe_i*\beta_i)*factor+\frac{offset}{n} (woei∗βi)∗factor+noffset
对于评分卡的分值,可以这样计算:
s c o r e = log ( o d d s ) ∗ f a c t o r + o f f s e t score=\log(odds)*factor+offset score=log(odds)∗factor+offset
= ( ∑ i = 1 n ( w o e i ∗ β i ) + a ) ∗ f a c t o r + o f f s e t =(\sum_{i=1}^n(woe_i*\beta_i)+a)*factor+offset =(i=1∑n(woei∗βi)+a)∗factor+offset
= ( ∑ i = 1 n ( w o e i ∗ β i + a n ) ) ∗ f a c t o r + o f f s e t =(\sum_{i=1}^n(woe_i*\beta_i+\frac{a}{n}))*factor+offset =(i=1∑n(woei∗βi+na))∗factor+offset
= ∑ i = 1 n ( ( w o e i ∗ β i + a n ) ∗ f a c t o r + o f f e t n ) =\sum_{i=1}^n((woe_i*\beta_i+\frac{a}{n})*factor+\frac{offet}{n}) =i=1∑n((woei∗βi+na)∗factor+noffet)
依据以上信息得到:
a = log ( P g o o d P b a d ) a=\log(\frac{Pgood}{Pbad}) a=log(PbadPgood)
s c o r e = o f f s e t + f a c t o r ∗ log ( o d d s ) score=offset+factor*\log(odds) score=offset+factor∗log(odds)
在建立标准评分卡之前,需要选取几个评分卡参数:基础分值,PDO(比率翻倍的分支)和好坏比,这里我们取600分为基础分值,PDO为20(每高20分好环比翻一倍),好坏比取20。