©作者 | 洪一潇
01 行为评分卡的介绍
信贷风控场景中,存在A卡(申请评分卡)、B卡(行为评分卡)和C卡(催收评分卡)三张主要的评分卡。评分卡以分数的形式来衡量未来一段时间内违约、逾期、失联等风险发生的概率。
其中,行为评分卡作用于贷中,即放款后的用户表现环节,以用户在观察时间点当日及过去的表现信息为基础,预测他们未来逾期或违约情况;行为评分卡的主要目的是风险控制,根据客户表现调整风险策略,以实现利润最大化或成本最小化的目标。
02 行为评分卡的建模需求
建模的过程是在大量数据中寻找规律的过程,数据是模型成功的关键因素。建模数据的准备往往建立在对业务和数据的充分理解之上。
首先,在准备数据前,需要明确数据时间窗口和好坏客户的标准这两个关键点。
其次,由于行为评分卡的关注点是贷中账户管理、使用期限内的额度和条款变化、用户提前还款行为等,因此,在建模时,更需关注用户特征分布、逾期、账龄、滚动率等指标,用到的数据通常是还款行为、消费行为等。
再者,明确分析研究的目的之后,要对数据进行清洗。数据清洗包括缺失值和异常值的处理、变量转换、变量衍生及变量合并等,具体步骤如下:
最后,对数据集进行初始分析,即对数据集的概况进行描述,目的是在保证数据的真实性与准确性的基础上,剔除异常值和缺失值对结果的影响,尽量还原样本,以达到预测的目的。
初始分析包括以下三个步骤:
(一) 时间段检查:选择的时间段尽可能完整地表现业务指标,目的是通过对数据的时间段进行筛选,确保提取的数据子集与业务实际相符且满足开发需求;
(二) 主键唯一性检查:通过数据主键唯一性检查,对重复数据进行处理,确保数据无重复记录;
(三) 统计量分析:检查数据的准确性以及判断该变量的分布是否符合逻辑和业务实际。
03 案例的数据导入
3.1 分析目的
为了解某渠道的客户画像,对客户的年龄学历分布、还款偏好、逾期表现等相关信息有所掌握,为下一步建模奠定基础。
3.2 数据导入
本次从数据仓库中提取客户信息、借据信息、授信申请信息、历史交易和还款信息、决策数据等报表共6张。使用统计分析软件为SAS Enterprise Guide(以下简称SAS EG)。
导入数据有两种方式,从数据仓库中直接取,或从本地文件中将Excel数据导入;后者也有两种方法,可从SAS EG的“文件”选项卡中导入数据,也可使用代码导入。
本文采用第二种方法,具体过程及结果示例如下:
/*定义路径*/
libname loan_test “F:\Data\loan”;
%let excel_path=F:\Data\loan;
/*数据导入*/
proc import out=work.loan_INFO
datafile=”&excel_path.\loan_INFO” dbms=xlsx replace;
getnames=yes;
run;
本次共读取800000 个观测和 47 个变量,样式如下:
3.3 数据清洗
3.3.1 选定目标子集
综合考虑行为评分卡建模需求和所掌握的实际数据信息,选择一年至一年半的用户表现。因此,本次选定的目标子集起始日期划定为2020年7月至2021年12月的数据集。
在SAS EG中运行SQL语句的代码如下:
PROC SQL;
CREATE TABLE LOAN_INFO_A AS
SELECT * FROM LOAN_INFO
WHERE mdy(7,1,2020)<=ISSUEDATE<=mdy(12,31,2021);
QUIT;
符合时间条件的数据共有80242条,先对选定数据集做基础的描述,代码如下:
proc contents data=work.loan_info_A;
run;
得出以下结果:
3.3.2 删除重复值
PROC SORT DATA=WORK.LOAN_INFO_A DUPOUT=NODUPS3 NODUPKEY;
BY ID;
RUN;
经检验,无重复值。
3.3.3 缺失值处理
缺失值补缺有三种方法,:PROC STDIZE; PROC SQL;
DATA MISSING;
SET WORK.LOAN_INFO_A;
ARRAY CHA[*] _CHARACTER_;
DO I=1 TO DIM(CHA);
IF MISSING(CHA[I]) THEN OUTPUT;
END;
ARRAY NUM[*] _NUMERIC_;
DO I=1 TO DIM(NUM);
IF MISSING(NUM[I]) THE OUTPUT;
END;
PROC PRINT;
RUN;
得到包含空值的1173 个数据缺失示例如下:
数据类型不同,目的不同,所选取的处理方法也不尽相同。
数值型数据补缺有四种方法:常数填充、中位数填充、均值填充和随机填充,而字符型数据补缺有常数填充和众数填充两种方法。
在SAS中,用PROC SQL语句可以对数值型数据进行常数或众数填充,用PROC STDIZE对数值型数据进行均值填充。
本次检验客户信息汇总表有工作年限、婚姻情况和某规则得分共3个字段存在缺失值,受影响的数据占比为1.5%。
由于数据量对总体影响微乎其微,故而删除带有空值的数据:
DATA WORK.LOAN_INFO_A;
SET WORK.LOAN_INFO_A;
ARRAY NUM[*] _NUMERIC_;
PUT NUM[*]=;
DO I=1 TO DIM(NUM);
IF MISSING(NUM[I]) THEN DELETE;
END;
DROP I;
RUN;
删除缺失值后,数据集LOAN_INFO_A有 79069 个观测和 47 个变量。
3.3.4 一致化处理&数据排序
由于本数据集日期等格式已一致,且按照ID排序,故本次数据清洗步骤暂不演示。
3.3.5 异常值处理
因消费信贷对客户的年龄、地域等条件上均有设限。例如,信贷的目标客户的年龄应为18-60岁之间。
因此,以年龄为例查询是否存在异常值,代码如下:
DATA ABNORMAL;
SET WORK.LOAN_INFO_A;
IF totalAcc<18 or totalAcc>60 THEN OUTPUT;
PROC PRINT;
RUN;
共有2725个异常值,因年龄不符合目标设定范围,因此直接删除。
经过对重复值、缺失值、异常值的处理后,余下目标子集中共有73619个数据,47个变量。再将经过数据清洗后的各数据集以各表的关联键与其他数据集关联。
例如,用客户信息汇总表的ID与借据信息汇总表的ID关联,用借据信息汇总表中的授信申请编号与授信申请表中的授信申请编号关联等。
04 数据探索
数据探索分为以下五个部分:
4.1 统计特性
以loanAmnt字段为例,数字型单变量统计量信息的查询代码如下:
PROC UNIVARIATE DATA=LOAN_INFO_A;
VAR loanAmnt;
RUN;
得出结果包括均值、众数、标准差等基本统计测度、均值位置的检验、分位数和极值观测等,如下图所示:
4.2 变量分布
对于变量分布,可以用SAS中的PROC SGPLOT过程步绘制数值型连续变量的直方图:
PROC SGPLOT DATA=WORK.loan_INFO_A;
HISTOGRAM loanAmnt / BINWIDTH=5000 SHOWBINS;
DENSITY loanAmnt;
TITLE "LOAN AMOUNT";
RUN;
4.3 变量交叉分析
本次提取的数据表主要包括申请信息表、客户信息表、借据信息表、月度信息表、征信信息等。通过分析每部分数据关联及匹配程度情况,对现有数据进行系统化、结构化的理解,为下一步分析建模做好数据准备。
本部分的关联分析主要包括以下三点:
1)候选预测变量与目标变量之间是否存在关联性或相关性;
2)预测变量相互之间是否存在关联性或相关性:以上两个挖掘步骤通过交叉分析得出,可以通过PROC FREQ来实现两个名义变量的列联表进行分析;
3)调查候选预测变量中正常和违约的分布情况。
以客群风险特性分析为例,可以分析工作年限分布与逾期比例、教育程度分布与逾期比例、不同产品分布与逾期比例、不同地区分布与逾期比例等维度,为建模的特征变量选择提供初始分析支持。
以年龄与逾期比例为例:用SAS得出年龄与逾期比例的关联分布,考虑到便捷性,用EXCEL制图。如图所示,年龄越大,贷后还款表现越好,风险越低;25岁以下的年轻群体,贷后还款表现较差,风险较高。
4.4 特征分析
对于信贷业务而言,滚动率和vintage是衡量客群质量的重要特征变量。滚动率代表上期余额滚入下期的百分比,vintage代表了该客群在各账龄的逾期表现。
以上两个变量都是需要通过客户逾期表现加工得到。
处于正常(M0)和极坏(M6+)的帐户,保持在原有状态的比例很高(分别为81.88和 99.52%),也就是说极坏的账户不会偿还的几率同正常的账户保持正常的几率都很高;从M1至M6+,账户逾期状态变坏的比例呈增加的趋势,即随着逾期状态的增加,帐户还款几率近似呈依次降低趋势。
而处于M6+的帐户,状态变好的比例很低,说明极坏的帐户可能再还款的比率极低。
另外,随着逾期期数的增加,M2有41.36%的账户变好,从M3开始,账户滚动到更坏状态的比例已达94.65%。
上图为该渠道发放贷款两个月及以上(M2+)、三个月及以上(M3+)逾期的百分比随账龄变化图,通过分析可以得到以下结论:每年发放的贷款逾期率随账龄的增加而增加,大部分在账龄10个月时为峰值,随后会有所下降。
以上的初步数据分析及数据挖掘分析、关联分析仅为评分卡建模的准备步骤,要选择合适的入模参数,后续还需经过变量分箱、降维,计算特征变量的WOE值和IV值得出变量的代表程度,以衡量其入模的必要性和权重。