风险模型 - 变量筛选


写在前面的话,我们建模,希望建模型做细,尤其风险类模型,切记不要以为将特征库的变量筛选出来直接扔到模型里,训练出来一版模型,发现KS0.5,AUC0.86 ,然后以为牛的不行,其实风险模型有很多坑,等着大家跳进去。

我一直觉得模型是主线,风控策略辅助模型进行风险决策,如果模型偏了,造成的损失是批量的。

切记将模型做细,做细。。。

模型搭建的一般步骤

任何一个模型在搭建过程中一般遵循如下步骤:

  1. 收集数据
  2. 确定模型预测目标
  3. 数据探索
  4. 数据整理
  5. 数据/变量筛选
  6. 模型拟合方法选择
  7. 模型搭建
  8. 模型评价
  9. 模型上线
    其中,由于金融类模型是直接与钱相关的一类模型,所以无论是领导层还是政策组都希望模型部门输出的模型整体是稳健的。稳健的标准是什么呢,通常我们利用PSI去衡量模型与变量的稳定性。在模型搭建过程中我利用训练集与测试集构成的两个集合的PSI去衡量测试集较训练集 变量 /评分的稳定性,但这个方法相对较为粗糙。其实仔细思考一下,模型的元素是变量 + 算法,算法训练出来的权重如果保证了一致性,我们只需要保证变量分布整理保持不变,且正例在各个变量分箱中分布保持不变,便能够得到一个较为稳定的模型。

变量探索

通常我们在搭建模型的时候,都会说变量探索这个环节,但由于模型搭建的目标不同,导致其实变量探索没有统一的规范。这边文章只针对二分变量的风险模型来探讨变量变量探索。在搭建风险模型时,我们希望所有变量的稳定的,进而保证搭建的模型在时间外测试集合上有一个与训练集相似的AUC与KS(由于客群分布稳定最终体现在衡量客群分布的变量上,如果各个变量都是稳定的,客群分布一般来讲是稳定的)

背景介绍:
需要针对201801- 201812月的客群搭建一个A卡,
正例定义:未来六个月出现大于等于90天逾期
负例定义:未来六个月未出现大于等于90天逾期
经过分析将数据拆分为训练集201801 - 2018-10,测试集201811-2018-12.模型实施为20190715.显然,201901 - 201906的客户由于表现期不足导致未能进入训练样本与测试数据集。
以下针对 近三个月信贷审批查询次数 这个在信贷领域常用的变量 进行举例说明。

在数据分析工程中,我们遵循总分结构,先将数据进行汇总进行分析,然后再细化到每个月去分析。如近三个月信贷审批查询次数,我们可以将计算训练集与测试集覆盖率是否符合要求,如果不符合,这时需要Case by Case地去决定是否需要进一步分析。

覆盖率

如果变量从大的集合里面符合了基本的数据覆盖的要求,这时我们需要进一步考察变量每个月的覆盖情况,防止出现有些时间段数据大量缺失,而建模人员不知道的情况出现。
案例:

观测月缺失个数样本个数覆盖率
2018015010050%
2018024010060%
2018033510065%
2018044510055%
2018052010080%
2018064010040%
2018073210068%
2018083210068%
2018095610044%
2018107010030%
2018115010050%
2018121010090%

针对上表我们发现每个月的变量覆盖率都基本满足了建模要求,但是各月样本覆盖率的波动相对较大极差达到了50%,这时建议从业务上,外部数据查询逻辑,数据准备等方向去查看一下造成变量丰羽程度不同的原因。

PSI

覆盖考察结束之后,我们需要就变量的PSI进行进一步考察,首先我们需要考察训练集与测试集PSI是否满足要求,一般认为PSI有如下表的关系,具体原因请参见我的另一篇博客 https://blog.csdn.net/fzcoolbaby/article/details/98470464。
公式:
(公式1.1) P S I = ∑ i = 1 k ( p i − q i ) ∗ l n ( p i q i ) PSI = \sum_{i=1}^k(p_{i}-q_{i})*ln(\frac{p_{i}}{q_{i}}) \tag{公式1.1} PSI=i=1k(piqi)ln(qipi)(1.1)

PSI取值区间稳定与否
[0,0.1)稳定性良好
[0.1,0.25)稳定性一般,需要进一步考察模型,查看模型参数PSI情况
[0.25,+∞模型发生显著变化,需重新建模

建模过程中,一般要求变量PSI低于0.25即可,初筛尽量将更多的变量纳入考察范围,之后再利用业务逻辑,建模经验剔除变量。

近三个月信贷审批查询次数训练集测试集训练集占比测试集占比训练集占比 - 测试集占比ln(训练集占比/测试集占比)PSI单项取值
缺失50020018%16%2%12.8%0.3%
1-275025027%20%7%31.0%2.3%
3-490030033%24%9%31.0%2.7%
5-850035018%28%-10%-43.2%4.2%
>=91001504%12%-8%-119.4%10.0%
TTL27501250100%100%0%0.0%19.5%

从上表可以看出,该变量在训练集与测试集上表现较为平稳。

但由于我们上线的日期是20190715,所以我们需要进一步考察201901 - 201906期间变量分布是否文件

近三个月信贷审批查询次数训练集测试集201901201902201903201904201905201906
缺失50020010011012090140170
1-275025011011513085145150
3-490030018016014095160160
5-8500350190165160120165180
>=910015012010080759095
TTL27501250700650630465700755
近三个月信贷审批查询次数测试集PSI201901201902201903201904201905201906
缺失0.28%0.94%0.09%0.04%0.07%0.17%0.93%
1-22.26%6.37%4.15%1.85%3.60%1.80%2.35%
3-42.71%1.69%2.31%4.07%5.79%3.54%5.01%
5-84.24%3.59%2.40%2.41%2.67%1.40%1.53%
>=99.99%20.94%16.95%11.33%18.61%11.65%11.11%
TTL19.47%33.54%25.90%19.70%30.75%18.56%20.93%

从以上两个表格可以发现,201901,201902,201904PSI均不满足要求,我们很难保证模型上线以后这个变量是稳健的,因而需要进一步考察影响变量稳定的因素,最终决定是否要放弃这个变量。

除此之外我们还需要对训练样本的PSI进行考察,比如将各月的样本分布计算好后,将每个月与201801进行比较查看变量在训练样本中是否有同样的问题(总体稳健,但各月变量分布波动较大)。

IV

IV是衡量变量所承载解释因变量的信息量,IV值越大,对于因变量的解释能力越强。这个值得计算公式与PSI基本一致,只是对比集发生了变化,PSI是定住训练集或某个月作为基础分布,利用测试集或各月的分布与基础分布进行对比。而IV是一个数据集,定住正例分布,利用在某一变量上的负例分布与正例分布进行对比,异化程度越大(IV值越大),说明这个变量对于正例与负例的区分能力越强。

IV是我们在构建风险模型时一个非常重要的统计量。

通常我们会根据训练样本集合直接计算IV,同样这样的做法相对较为粗糙,我们希望能够通过考察每个月的IV,查看这个变量在各月的IV分布情况来确定,正例/负例在这个变量的分布是否随着时间的推移保持着稳定。由于201901 - 201906表现期不足所以,无法将这个检验,一直检验到模型上线的最近一个月。
但我们可以对于训练集 与 测试集进行逐月检验。
以下是训练样本IV计算的例子

近三个月信贷审批查询次数负例正例负例占比正例占比负例占比-正例占比ln(负例占比/正例占比)IV单项取值
缺失50020018%16%2%12.8%0.28%
1-275025027%20%7%31.0%2.26%
3-490030033%24%9%31.0%2.71%
5-850035018%28%-10%-43.2%4.24%
>=91001504%12%-8%-119.4%9.99%
TTL27501250100%100%0%0.0%19.47%

如上表所示IV值为0.1947,这个数值已经非常大了,说明近三个月信贷审批查询次数这个变量对于模型区分正例/负例有显著的作用。

近三个月信贷审批查询次数负例正例负例占比正例占比负例占比-正例占比ln(负例占比/正例占比)IV单项取值
缺失50020018%16%2%12.8%0.28%
1-275025027%20%7%31.0%2.26%
3-490030033%24%9%31.0%2.71%
5-850035018%28%-10%-43.2%4.24%
>=91001504%12%-8%-119.4%9.99%
TTL27501250100%100%0%0.0%19.47%

在这里插入图片描述
从这个表中我们可以看出IV随着时间在训练样本IV值上下波动。
那么我们希望训练IV的解释力与各月IV一致,那么我们可以将训练样本的IV作为各月IV的均值来进行一个均值检验。
原假设:训练样本IV与各月IV均值相等
备择假设:训练样本IV与各月IV均值不相等
利用R进行上述检验:
t.test(x = c(0.15,0.16,0.19,0.18,0.25,0.17,0.12,0.23,0.24,0.19,0.11,0.3),mu = 0.1947, paired = FALSE, var.equal = T,conf.level = 0.95)
结果如下:
在这里插入图片描述
说明训练集IV值在各月中波动相对较小,能够代表该变量在各月中针对正例/负例的解释力。

WOE

说了这么多覆盖,PSI,IV,其实在风险模型搭建过程中有一个统计量是永远无法逾越的,变量的WOE,这个值与IV紧密联系。
计算案例

近三个月信贷审批查询次数负例正例负例占比正例占比WOE:ln(负例占比/正例占比)
缺失50020018%16%-0.128
1-275025027%20%-0.310
3-490030033%24%-0.310
5-850035018%28%0.432
>=91001504%12%1.194

一个好的分箱,体现在WOE成"等"梯度下降,每一档与下一档有差异,但差异不能特别大,如上一档WOE 5,下一档WOE 500,基本上落在这一档的客户瞬间就是上天入地的差异,直接变成最好或者最坏客户。类似这种WOE足够大的变量可以考虑拿来构建风控规则。

与前面的案例相同,首先针对训练样本计算WOE,再逐月查看变量WOE值,不同的是,由于IV值是变量承载的信息量,不需要进行各变量区间单独计算(亦可以,如果读者愿意),我们需要针对WOE每个分项进行WOE值稳定性考察,从表述统计上,要特别注意,变量某个取值的WOE由正转负的情况,这时需要仔细考察变量可能存在的内生问题,同时不建议将这类变量纳入模型。
检验方法与IV一致,查看每个分箱的WOE图,观察是否存在正负波动
其次检查训练样本的WOE能否表示各月WOE的均值,t检验。

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值