风控建模(七):催收评分卡的流程—上(所有评分模型与机器学习模型同样适用)

关注公众号“ 番茄风控大数据”,获取更多数据分析与风控大数据的实用干货。

  说了那么久的建模,今天应该跟大家分享一下实际建模的流程步骤了。

  整套建模代码我分别用sas跟python都整理了一遍,而且现在也打算用神经网络试一下建模,看下模型的各项验证指标能提升多少。
  建模的流程 , 目前综合各大公司的开发流程的来看,大同小异,今天这篇主要分上中下篇或者上下篇,具体看码字的篇幅,跟大家介绍下常规的评分卡的建模流程,如有雷同,真是流程化生产的东西。
  这篇文章会捎带着掺杂催收评分卡的业务。因为你也知道催收模型,市面上的确很少有干货文章介绍。当然我介绍的这些建模的流程,不仅适用于贷前贷中贷后评分卡,而且目前很多机器学习的步骤都如此。如果有不一样的地方,那就是所用到的个别方法不同而已。

一般建模的流程图:

在这里插入图片描述
下面一步一步地拆解步骤,分析这个流程图:

- 一、业务定义

C卡
  一直强调,业务定义是重中之中。在我介绍以往的催收评分卡里,关于催收模型的分类实在是太多了,有M0到M1的使用场景,有DPD1滚动到DPD10的场景,还有最近有位粉丝要开发的DPD1-4滚动到DPD5-20的场景。

  场景太多,所以模型的定义也需要非常明确,不然一个不小心就跑偏了。需要理清的是我在模型的定义跟使用场景。

A卡
  申请卡里的A卡的业务比较容易理解。只要确定了观察期跟表现期两个时间窗口就可以了。目前一般银行的产品来看,都是1-3年的居多,分析资产情况,模型的观察期都在一年,这点也满足巴赛尔协议的要求。

  关于业务定义的不明白的地方,可以会看我之前写过的一篇文章:风控建模系列(六):催收评分卡卡跟贷前申请卡关于目标变量的定义。 这里面说得非常详细。

  流程第一步是模型定义先开路。

- 二.理清自家数据情况

  
  一般这一步跟第三步是可以同时进行,数据处理得多了,大概也知道自家的数据。把报告的信息输出到数据准备和分析报告里。

在这里插入图片描述
  理清楚自家公司的数据库存,看下数据维度是否丰富,能否支持你能开发一张评分卡,需要用时间序列梳理下变量的情况。

  这里需要看自己家的数据是否有缺失,是否有异常,提前为数据清洗做初步的准备。

  比如通过分析不同时段的进件人群的性别趋势:

在这里插入图片描述
在这里插入图片描述
  如上图在18年8到11月份的用户频率情况,可以发现在11月时候,男性用户有一个激增,通过分析我们需要去寻找是不是策略在这个时点进行了某些调整等造成数据激增

  有一些因为业务关系带来的数据变动,可能还需要对不同的时期的产品单独开发一套模型。

  以下的代码是对应上图所输出的参考代码:

data b;
set a ;
time=put(day, yymmn6.) ;
run;

proc freq data=b order=freq;
tables time*sex/ out=B1 ;
run;

  除此之外,还需要分析各产品随时间变化的申请量、通过率以及各逾期指标分布情况等。

  做这些指标统计,都是让你理清公司资产跟数据分布的情况。

  这样做的目的有两个:
  一是让你在开发模型前对数据心中有数同时为下一步的数据预处理做准备。二是等到模型开发时,看变量的细分程度能否做到预想的程度。

  比如:有个同学在清洗自家公司的催收数据的时候,发现ptp的这个字段字段无法严格按照对应每一期梳理成需要的时间切片数据,原因是:业务前端的催收同事在做标记时,时间这个标签标记不清。最后的方案也只能是输入变量的时候只能有一个历史汇总的变量输出,改善的可能性只有在后续的模型迭代里,才有可能把这些字段分开输出。

- 三.确定模型样本

  确定建模窗口,挑选建模样本,剔除该剔除,选择该选择
  1.能进来前期做数据样本的都是你卡在所定的时间内的数据样本;

  2. 还有一些需要注意的:在A卡里,需要剔除掉的是前期被拒绝掉的样本(进件时直接被拒掉的客户;)

  在C卡里就看你的基本样本池规定的是什么状态的样本,比如你是预测MO滚动到M1的概率,那建模的时候处于你卡到的时点为刚好为逾期的样本就要剔除;

  3. 结合你公司的样本产品而言,某些渠道的产品再也不会有合作了,今后不再需要进入你的业务场景里,而且这部分客群数量非常少时,可以考虑剔除在建模样本数据外。

- 四.数据预处理

  (目前很多资料都是从这一步开始的介绍,殊不知前面三步骤无比重要,直接关系到从这四步开始往下做的事情是否顺利跟合理)

a.数据规整
  数据规整,需要结合业务和头脑风暴把业务合适的介绍出来,梳理出来。最后是把数据都汇合成一张宽表。里面包括的就是目标变量Y、时间、许多基础变量和衍生变量组成的宽表。

b.数据清洗
  数据清理是对各种脏数据进行对应方式的处理,得到标准、干净的数据,提供给模型使用。

  如果数据源系统分散在各个应用系统,系统之间对数据的要求、理解和规格不同,导致对于同一数据对象的描述规格完全不同。

  那么当数据来自不同数据源时,则需要统一数据规格,如对变量名称、变量类型、度量单位等进行统一。

  通常变量分为数值跟字符,数值变量里还可细分为日期跟纯数值。清洗这三种的手法有些许差别。如字符经常用频率来统计,数值应该用范围来限定数量。

c.衍生变量
  衍生变量的方式就比较多种多样,通常的日期跟变量的结合做各种事件切片,一月数据/二月数据/三月数据;

  变量的之间的拼接,如教育程度跟婚姻状况的拼接,如本科已婚,博士未婚等

d.缺失值异常值处理
  变量缺失值处理是数据处理过程的一个重要环节。通过报表分析,统计字段在表中的缺失情况。

在这里插入图片描述
  在缺失值处理上,可以结合变量不同的缺失情况、缺失原因以及变量类型,采取相应的缺失值处理策略。针对缺失值处理,通常都有删除法、替换法以及插补法。

e.异常值的处理
  造成异常值的情况也多种多样,如系统问题,数据端口的对接传送有问题,亦或是你在清洗的过程中不小心造成的个别错误,都是造成异常值的原因。

  基于此,我们一般可以通过做各种分位数的方法检测(一般采取95%分位数去卡极值点),也有三倍标准差等方法。这个知识点比较多,在后续的视频里会把这块当成重点来讲解。

f.数据初步挖掘
  某些同学会称为数据探索,其实是同个意思。旨在挖掘有价值的变量。

  变量清洗完成,之后得到干净的数据就能对数据进行数据挖掘了。探索的目的是为了初步比较有区分能力的字段。
  比如对婚姻情况的分析:

在这里插入图片描述
  找到这个变量,然后可以看到已婚的占比最大,再接着分析逾期率看看跟频数有没有正相关。

  总之我们根据初步分析来找某些前期比较有价值的数据。

  数据探索,当然也包括对得到某些重复太高或者缺失太大的变量(缺失超过70%的变量),就考虑剔除这部分变量。

  最后你应该可以把所有的变量合作一张大表里,方便你后期分析:

在这里插入图片描述

  综上,主要是分析不同渠道、不同时间或者是产品之间的差异。

  提供一段关于合并报表的代码:

%macro pub_best_num(data,lib,dsor);
proc datasets lib=work;
delete _all_;
run;

proc sql noprint;
drop table ben.total_char;
quit;

data _null_;
set ben.var_char;
call symput (compress("var"||left(_n_)),compress(name));
call symput(compress("n"),compress(_n_));
run;

%do i=1 %to &n.;
%put &&Var&i.;
%put &n.;

proc freq data = ben.test7_2 ;
tables &&Var&i. /out=A_&&Var&i noprint ;
run;

proc sort data=A_&&Var&i;
by PERCENT;
run;

data A_&&Var&i(rename=(&&Var&i=type));
set A_&&Var&i;
run;

proc sql noprint;
create table A_&&Var&i as
select "&&Var&i" as variable,a.* from A_&&Var&i as a ;
quit;

%if &i.=1 %then %do;
proc sql noprint;
create table ben.total_char(variable char(50),type char(50),count num,PERCENT num );
quit;
- 五.模型特征的初步选择

  如果你能看到这一步,接下来的内容,其实有准备两个版本。因为马上有些内容会涉及到机器学习的知识,暂时还不太想把模型绕得那么复杂。

  模型如果在前人的指点下(jiu shi zai xia),还是可以省时省力地学习get到的。

  模型特征的的选择,其实就是指能最好表达一个事物属性的描述。

  比如表达一条什么狗是一条吉娃娃时候,百度百科是这样描述的:吉娃娃犬是世界上最小型的犬种之一,头部圆形,耳大薄而直立,眼睛圆而大。体高15~23厘米,越小越受人喜爱;体重1~3公斤,重量最好不超过6磅。身体的比例为长方形;所以从肩到臀的长度略大于肩高。雄性的身体稍短一些比较理想,体重超过6磅既为失格。颜色有:奶油色、红色、褐色、黑色中带有黄褐色。常见的颜色为:淡褐色、栗色或白色。有斑块或斑点

  在这段描述里,最重要的特征就是体积小,头圆,耳大薄,耳直立,眼睛圆而大。至于颜色,很多狗都有这样的毛色,真心算不上最好的区分特征。

在这里插入图片描述
  所以模型变量的选择的目的就是选择诸多变量里最有代表性的。

  在评分卡,我们一般常用的算法是逻辑回归,逻辑回归里经常用IV值去表达一个变量是否有预测能力。一般在模型的指标能入模的初步变量里,IV值需要达到0.02(或0.05),才能说明这个变量具有一定的预测能力。在催收模型里,这个指标会更高些。

  变量的初步选择除了,IV值外,还有PSI这个指标可以观察。PSI是衡量数据是否稳定的一个很重要的指标,比如在我之前开发的卡里,PSI得出来的值,是下面这个值:

在这里插入图片描述
  这个值偏向稳定,当然如果PSI比较低(比如小于10%),证明不同时点的基本没迁移。

  再往下,就是涉及到更深入的内容了:如果不是真正研究模型的同学可以跳过。

  当然IV值的选择,在评分卡的模型的开发里的一种很重要的方法,但是并不是唯一的方法。

  在传统的评分卡算法里,是一个业务逻辑性更占主导的一个场景,所以我们常常用IV值去筛选变量,一方面因为评分卡偏向解释性另一方面也由于逻辑回归转化之后变量间有线性关系,只要某些IV值强的变量进入模型,就能拉升模型的指标。但是目前机器学习里,算法多以XGB为主,树模型不太要求线性关系。

  在机器学习的算法里, 特征选择包含三大类:过滤式、包裹式、嵌入式。我们在今天发文的第三条文章里,就包括了对于这三种方法的解释,大家可以尝试点击去理解下。

  在我较早之前提到的对模型正则化的处理中,更是能得到更稀疏的解获取更有特征的变量,有兴趣也可以点开看看:面试中会被问到L1跟L2正则的区别


  十年职场生涯,这个长期混迹在风控界和科技界,摸爬滚打的大叔,曾经就职于全国最大的固网运营商平台、国内最大的ERP软件公司和一家老牌的互金公司,如果你想了解他,欢迎加入" 番茄风控大数据"一起学习一起聊!在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值