在信贷业务的不同阶段有不同的评分卡模型。分别是:贷前A卡-申请评分卡、贷中B卡-行为评分卡、贷后C卡-催收评分卡。三种评分卡起到的作用也是不一样的。本文是基于kaggle的信用卡数据做的信贷申请评分卡。运用的算法是:逻辑回归。工具:SAS EG、EXCEL。目标:利用数据对SeriousDlqin2yrs(是否不良)做逻辑回归建模并制作成评分卡形式,因为SeriousDlqin2yrs取值0和1
数据源:kaggle的give_me_some_cridits信用卡数据
本文分为四个部分
一、数据预处理
二、分箱操作
三、WOE合并与变量筛选
四、逻辑回归建模
五、分数的转化
一、数据预处理
1.导入数据
因为之前导入过并存储在逻辑库中,所以直接代码连接逻辑库即可。
SAS代码:
libname a'D:e逻辑库202003';
/*数据处理:转换数据类型,将字符都转化成数值。因为数据导入问题导致数值型变为字符型,现在需要弄回来*/
data cs;
set a.cs_training;
MonthlyIncome1=input(MonthlyIncome,8.);
NumberOfDependents1=input(NumberOfDependents,8.);
/*一,数据探索*/
对数据进行探索性分析。
SAS代码:
proc means data=cs1 N NMISS MEAN MEDIAN MAX STD ;
VAR _NUMERIC_;
RUN;
结果:
1.查看统计量,可看到MonthlyIncome(月收入)和NumberOfDependents(不包括本人在内的家属数量)存在 缺失值,可考虑在下面进行操作,对于异常值,由于数据源来自网络,并不知道异常值出现的原因,所以直接剔除
异常值:年龄:剔除60岁以上的和18岁以下的
异常值:负债比率:剔除超过80%
缺失值:月收入:中位数进行填充
缺失值:家属数量:中位数填充
数据处理SAS代码:
/*填充缺失值*/
data cs2;
set cs1;
if missing(MonthlyIncome1)=1 then MonthlyIncome1=5400;
if missing(NumberOfDependents1)=1 then NumberOfDependents1=0;
run;
/*剔除负债比率大于80%且年龄大于60岁且小于18岁的数据量,随便将变量名过长的变量进行改名操作,并查看结果*/
data cs3;
set cs2;
where DebtRatio<=0.8;
run;
data cs3;
set cs3(rename=(RevolvingUtilizationOfUnsecuredL=RUOL NumberOfOpenCreditLinesAndLoans=NOCLA 'NumberOfTime30-59DaysPastDueNotW'N=NO3_5DPD 'NumberOfTime60-89DaysPastDueNotW'N=NO6_8DPNW));
where 18<age<60;
因为没有具体的业务场景,所以无法做一下特征工程的操作,类似变量的衍生等。
二、变量分箱操作
变量的分箱操作,因为原数据变量都是连续变量和名义变量,没有涉及到离散变量。所以使用等频分箱。
大概流程为:
1.先对数据源排序,
2.然后对单个变量分为X组,每组中数据量一样。
3.计算每组的WOE和IV,导出到EXCEL进行分箱合并操作
SAS代码:
%MACRO woe_1(x);
/*一、排序*/
proc sort data=cs3 ;
by &x;
run;
/*二、先分为10组,然后在导出至EXCEL根据IV值分组合并*/
proc rank data=cs3 out=cs4_0 groups=10;
var &x;
RANKS group ;
run;
data cs4_00(rename=(group_1=group));
set cs4_0;
length grou