写在前面
这遍博客主要是梳理了最近一段时间在评分卡模型这块的一些经验,主要是围绕评分卡开发流程来写,通过这篇文章,你能大概的了解到评分卡的基本特点及开发流程。其中包括部分我实际工作中的经验。对于一些算法细节我没有展开来写,因为说到底,评分卡的开发是一个预测工作,与其它行业的预测在算法上没有太大的出入,所以基础算法这块就不多写了。
一. 评分卡的表现形式及业务意义
二. 评分卡的开发过程
虽说评分卡看起来是一个规则集,但其实这些规则是机器学习的结果,并不是人为拍脑袋想出来的。这部分我们主要说下评分卡的开发过程。经典的评分卡开发步骤与机器学习的数据挖掘步骤有些区别,在细节上分的更细一些,下面的表格把各个步骤对比着列了一下。
顺序 | 经典步骤 | 数挖步骤 |
---|---|---|
1 | 问题准备 | 问题准备 |
2 | 数据接入与整合 | 数据处理 |
3 | EDA与数据描述 | 特征工程 |
4 | 数据准备 | |
5 | 特征选择 | |
6 | 模型创建 | 建模与调优 |
7 | 模型评估 | |
8 | 评分卡与刻度 | 评分卡与刻度 |
9 | 模型实施 | 模型上线 |
10 | 模型监测 | 模型监测 |
2.1 问题准备
在这一步,我们需要做出以下决策和解决下列问题:
- 好坏定义:在特定业务重点、财务结果和具体信贷产品历史表现的基础上,确定违约和正常的定义。
- 范围确定:确定计划的评分卡范围、开发和实施窗口。
- 数据确认:识别数据的范围和来源,内部还是外部,并确保可以取得这些数据。
- 资源管理:设计主要项目管理计划,对时间、资源、人员等进行管理。
这个阶段属于项目的准备阶段,还没有进入到实际的开发阶段。项目管理者在这个阶段起主要作用,只有这个阶段的问题全明确了,才能保证接下来的研发阶段的顺利进行。
我这里把上面4个问题要注意的点都简单说明一下。
1)好坏定义:违约和正常的定义、我们主要考虑以下3点
-
业务:一定要把公司的全流程风控业务了解透彻了,这会让你事半功倍。举个例子,有许多公司的业务员有考核指标,一般都是借款人要有几个月的回款才能算有效放款,才能给业务员提成,这就导致了可能会有代还的情况发生,如果这种情况占比大的话,我们定义违约和正常时需要把这个代还窗口考虑进去,如果你不了解业务,你可能要走很多弯路,而且需要你有很强的数据挖掘功底和数据分析能力,才能从数据中发现这个问题。
-
数据:数据是重中之重,我们一定要对数据进行深入的分析,原因有二,首先,数据分析的本身就能揭示样本的好坏。其次,任何业务上和政策上的需求都需要在实际数据上验证,实际可行才有意义。
-
政策:传统银行的不良资产和坏账是有明确的定义的,他们是合规的标杆,如果想向他们靠拢的话,就要考虑相关的政策、规定。
2)范围确定:确定计划的评分卡范围、开发和实施窗口。
实际应用中,一般公司会有多个产品,可能还包含线上、线下的产品,首先我们要确定评分卡针对的产品,是一个产品,还是几个产品,还是某类产品。只有范围明确了,下一步的 数据确认 阶段才能开展。开发窗口和实施窗口这个不好一概而论,我只能说一下我的经验,我主持开发过的两个评分卡都用了将近半年的时间,要认真踏实的做好每一步,经得起推敲和别人的挑战,还是要花些时间的。
3)数据确认:识别数据的范围和来源,内部还是外部,并确保可以取得这些数据。
如果我们的数据选择范围只是使用公司内部的数据或都已经接入的三方数据的话,这个比较方便、快速,我们只需要保证各个数据系统之前可以打通,可以拿到这些数据就可以。如果要接外部数据的话,最好还是能根据评分卡对应的产品特点列一个所需数据类别出来,这样方便后面的具体实施。
4)资源管理:设计主要项目管理计划,对时间、资源、人员等进行管理。
根据我的经验,整个评分卡的开发周期中,数据接入与整合、模型评估这两个阶段是最不易控制时间的。数据接入与整合 主要与公司的基础设施有关,如果数据能很好的获取,这个阶段也很快,本身的工作量也没那么大,但有些公司系统间的壁垒比较大,可能就比较耗时,还有一种情况是要接入外部数据,这个需要前期对外部数据进行初筛,可能要谈很多家三方数据提供商,直到筛选出合适的数据,所以,这一步也不是很好控制。另一个不易控制时间的就是模型评估,这里不是说评估模型有多难,而是评估结果如果没达到我们的目标,这里我们就要大量的迭代,做特征分析、筛选、重新建模。直到达到我们的目标。人员上,我建议最少两个人(开发者)来做这件事,一定要确保有一个人建模比较强,一个人数据处理能力比较强,当然两个都强更好。
2.2 数据接入与整合
本阶段从识别与评分卡开发相关并能够获取到的数据开始。数据获取的过程包括取得这些数据项并将其整合为适合进一步数据准备的形式。如数据规模很大,建议将这些数据分成几个表格以加快数据准备阶段的处理速度。
除了企业内部数据,还可以获取外部资源,如人行征信局和外部评分(同盾、百融、及一些电商都有提供)。随着外部数据提供商和供应商数据的增加,产品数量和评分数据急剧增加,选择合适的、最有用的外部资源变得更加重要。
2.3 特征工程
2.3.1特征分类
- 特征分类
- 原始变量:
- 业务衍生变量:
- 分析变量: - 数据类型分类:
- 分类变量/名义变量(枚举型):
- 连续变量(数值型):
2.3.2 特征分析
在传统的评分卡开发流程中,特征分析这个阶段是包含于“EDA与数据描述”这一阶段的。这阶段的工作主要包含单变量分析、要素分析及相关性检验。其实与特征筛选的工作有些相近。如果非要说区别的话,那就是这个阶段我们只做分析(用来了解数据),不做决策(不删除特征)。
2.3.2 特征处理
1. 特征初筛
2. 降低基数
3. 数据补缺
4. 抽像衍生
5. 数据分箱
6. WOE计算
数据补缺: 补充缺失值是特征处理的第一步,下面从统计、估计和业务三个方例举了一些方法。实际应用中,如果是使用逻辑回归做传统评分卡,我建议直接使用基于业务的方法,从我的经验来看,效果不错,也具有比较好的可解释性。对于均值插补和众数插补,有这么一个说法,对于单调的数据,使用均值,随机的数据使用众数。对这句话我理解的一直很模糊,这里写出来是提醒大家还有这么一个说法,大家可以自己去网上查一查相关资料,自己理解一下。然后说一下最小二乘法补全,其实就是使补全后的数据整体的离差平方和最小。至于基于REML的方法估计,我实际工作中没用使用过,不过这个算法SAS工具中有,使用SAS的兄弟可能比较熟悉。相关补缺算法有好多,几十种我感觉是有的,我就不在这里一一举了。
1)基于统计:
a) 均值插补
b) 中位数
b) 众数插补
2)基于估计:
a) 最小二乘法补全
b) 基于REML的方法估计(约束最大似然估计法)
3) 基于业务:
a) 使用-1填充所有缺失值
降低基数: 当名义变量的类别过多时,我们需要使其基数降低。常用方法有三种。
1)合并含意相同的变量。
2)把占比很小的几个类别合并为一类。
3)通过相关算法把名义变量分为几类,使其在我们关心的指标(如IG)上表现的最好。
特征初筛: 这一步主要是为下一步抽象衍生做准备。我们可以从下面两点来判断。
1)硬条件:特征本身不具备入模的意义(不具备业务意义),如来自不同系统的标识字段,用户的名字等(也有人分析过名字对信用的影响,我感觉这个就像星座一样,只可以拿来当谈资,实际应用中,这种字段还是都干掉吧)。
2)软条件:这里最主要的一个指标是字段的覆盖度,传统做法,一个字段低于20%的覆盖度,基本就不会考虑了,但是吧,数挖出身的人一般接受不了,从数挖的角度看,缺失本身也是一种特征。
抽像衍生: 这是个八仙过海各显神通的步骤,不同的人会衍生出很多不同的特征。这里我从只能从大致的方向说一下我们怎么考虑特征衍生这个问题。
1)首先,我建议先对数据进行维度划分。这个划分是围绕着用户角度来看,其实就是看看我们的数据能从哪些维度刻画用户,这个当然分的越细越好。
2)参考经典评分卡的特征分类
a) 原始变量:这个顾名思义就是最原始的变量,在这里没啥参考意义。
b) 业务衍生变量:
- 校验类特征:
- 新的具业务意义的特征:
- 平均评估:
c)分析变量:这部分就没有那么多讲究了,你可以直接把特征两两相除、两两相减,反正就是你想怎么加工都行,然后看看对模型的整体性能有提高没。
我们最简单的方法就是按照2)中的分类,对1)中的各维数据进行衍生。不过这里要说一下,我这是想到哪儿就写到哪儿,上面业务衍生变量这块不一定全,只是举个例子。最后我说一下我的建议,我建议做特征衍生这块一定要有层次,对整体的特征要有明确的层次上的认知。数挖的人一般更注重结果,这方面可能都略欠缺一些(也可能只是我欠缺~~)。
2.3.3 特征选择
选择依据:
- 重要性: 重要性是我们首先要考虑的,重要性的大小直接影响了我们的预测能力。我们可从以下几个方面衡量特征的重要性。当然还有其它的度量指标,这里不一一例举。
a) 方差:移除低方差的特征。如果特征的在所有样本上的波动都不大,证明区分能力不强。
b) IV值:评分卡的经典特征选择依据,公式 i v = ( G b i n G a l l − B b i n B a l l ) l n ( G b i n G a l l B b i n B a l l ) iv=(\frac{G_{bin}}{G_{all}} - \frac{B_{bin}}{B_{all}})ln(\frac {\frac{G_{bin}}{G_{all}} }{\frac{B_{bin}}{B_{all}}}) iv=(GallGbin−BallBbin)ln(BallBbinGallGbin)
c) 卡方检验(chi-square)
d) 信息增益(IG)
e) 模型重要性(如使用xgboost评估特征的重要程度)
f) … - 共线性: 在使用逻辑回归做经典评分卡的时候,我们要去除有共线性的特征。
a) 皮尔森相关系数()
b) 方差膨胀系数(VIF) - 单调性: 在传统金融行业,会要求评分卡具有可解释性,因此,一般情况下要求特征在分箱后能表现为单调递增或单调递减。但实际应用中,有许多特征都不是单调的,而且从分类性能来看,只要特征具有波动性,那么对分类就是有益的。单调性可以用画图的方式来观察。
a) 柱状图分析
b) 折线图分析 - 稳定性: 主要衡量特征在
a) 变量稳定性(psi)
选择方法:
- 过滤法:按照发散性或者相关性对各个特征进行评分,设定阈值或者待选择阈值的个数,选择特征。
- 包装法:根据目标函数(通常是预测效果评分),每次选择若干特征,或者排除若干特征。
- 嵌入法:先使用某些机器学习的算法和模型进行训练,得到各个特征的权值系数,根据系数从大到小选择特征。类似于Filter方法,但是是通过训练来确定特征的优劣。
2.4 建模与调优
这部分是老生常谈,写起来没完,我就不写了。
2.5 评分卡与刻度
2.5.1 评分计算公式
下面举个实际中评分卡分数计算的例子:
S c o r e = m i n ( m a x ( r o u n d ( L O G I T l o g 2 ∗ B + A , 1 ) , 0 ) , 1000 ) Score=min(max(round(\frac{LOGIT}{log2} * B + A , 1 ) , 0) , 1000) Score=min(max(round(log2LOGIT∗B+A,1),0),1000)
简要说明:
A 表示好坏比为1:1时的分数,即模型的base score 或者叫截断值、截距值;
B 表示当好坏比翻倍时,分数增加的幅度;
round 是取整,对计算出的原始分类舍去小数部分;
max 是要保证最后的分数不为负数;
min 是要保证最后的分类不超过之前定义的分数上界,这里是1000;
核心部分是round括号中的前半部分,这里做下说明:
L
O
G
I
T
=
l
o
g
(
p
1
−
p
)
LOGIT = log(\frac{p}{1-p})
LOGIT=log(1−pp) 其中
p
p
p为逻辑回归模型预测的样本为正例时的概率,
当 p = 0.5 p=0.5 p=0.5时 p 1 − p = 1 \frac{p}{1-p}=1 1−pp=1, L O G I T l o g 2 = 0 \frac{LOGIT}{log2} = 0 log2LOGIT=0,此时 s c o r e score score取决于A。
当 p 1 − p = 2 \frac{p}{1-p}=2 1−pp=2时, L O G I T l o g 2 = 1 \frac{LOGIT}{log2} = 1 log2LOGIT=1
当 p 1 − p = 4 \frac{p}{1-p}=4 1−pp=4时, L O G I T l o g 2 = 2 \frac{LOGIT}{log2} = 2 log2LOGIT=2
从上面三种情况,我们能看出,每当 p 1 − p \frac{p}{1-p} 1−pp翻倍时,我们的评分结果会对应的增加B的分数,而这个分数B也是我们对评分卡分级(A、B、C…等级)时的分数间隔,所以相邻等级的好坏比2的位数。
2.5.2 逻辑回归在评分卡中应用优势
这里再细讲一下
L
O
G
I
T
LOGIT
LOGIT,大家就知道为什么传统评分卡喜欢使用逻辑回归。
上面说了
L
O
G
I
T
=
p
1
−
p
LOGIT=\frac{p}{1-p}
LOGIT=1−pp ,
p
p
p是预测为正例时的概率,
1
−
p
1-p
1−p就是预测为负例时的概率,那么,我们看看在逻辑回归中,这两个值是怎么计算的:
p + = e x p ( w x ) 1 + e w x p^+=\frac{exp(wx)}{1+e^{wx}} p+=1+ewxexp(wx) p − = 1 1 + e w x p^-=\frac{1}{1+e^{wx}} p−=1+ewx1
由上面两个式子,我们可得:
p 1 − p = p + p − = e x p ( w x ) 1 + e w x 1 1 + e w x = e x p ( w x ) \frac{p}{1-p}=\frac{p^+}{p^-}=\frac{\frac{exp(wx)}{1+e^{wx}}}{\frac{1}{1+e^{wx}}}=exp(wx) 1−pp=p−p+=1+ewx11+ewxexp(wx)=exp(wx)
我们对这个式子两边取对数 l o g ( p 1 − p ) = w x log(\frac{p}{1-p})=wx log(1−pp)=wx,打分公式中的 L O G I T = l o g ( p 1 − p ) = w x LOGIT=log(\frac{p}{1-p}) = wx LOGIT=log(1−pp)=wx,这个 w x wx wx是什么,就是我们逻辑回归的权重和特征值,所以评分卡最终的表现形式是一个规则集。
tbc.