信用卡评分
实验基础信息
-
实验名称:信用卡评分
-
实验英文名:CreditCardScore
-
所属类目:金融类
-
实验描述:根据客户的属性和行为数据,利用信用评分模型对客户进行信用评分,以此决定是否给予授信和授信的额度,从而识别和减少金融交易中的风险
-
主要应用算法:逻辑回归二分类
数据说明
-
数据来源:Kaggle上某信用评分项目的数据,预测未来两年借款人遇到财务困境的可能性。
-
数据属性:结构化数据。
-
数据详情:数据集包含借款人的年龄、月收入、贷款情况、逾期天数及次数等信息,来预测该借款人是否会逾期90天及以上,共150000行数据。
实验搭建
实验整体流程如下:

-
读数据表:读入借款人相关数据。
字段 | 注释 |
---|---|
age |
借款人年龄 |
monthly_income |
借款人月收入 |
debet_ration |
负债率(债务支付+赡养费+生活费用)/月总收入 |
number_of_depends |
不包括自己在内的家属人数(配偶、子女等) |
revolving_utilization_of_unsecured_lines |
(信用卡余额+个人信贷余额-房贷-其他未分期付款的债务)/ 信用额度总和 *100% |
number_of_open_credit_lines_and_loans |
进行贷款的数量(如房贷、车贷、抵押贷款、信用卡) |
number_real_estate_loans_or_lines |
抵押贷款和房贷的数量 |
number_of_time_30_59_days_past_due |
借款人逾期30-59天的次数 |
number_of_time_60_89_days_past_due |
借款人逾期60-89天的次数 |
number_of_time_90_days_late |
借款人逾期90天及以上的次数 |
Serious_dlqin_2yrs |
是否有逾期90天或更糟的拖欠 |
-
缺失值填充:由于借款人的月收入有为空的情况,将null数值用中位数填充。

-
Python脚本:删除表中number_of_depends(家属数量)为null的数据,因为该列的缺失值很少。
-
异常值处理:采用manual方法处理age的异常值,处理后年龄处于16-90岁之间。

-
smote采样:利用smote算法对Serious_dlqin_2yrs标签列较少的样本进行扩大,扩大比例为8倍。
-
卡方分箱:将年龄、负债率、月收入、家属数量、剩余信用额度占比等5个特征进行分箱,将借款人分在不同的箱子里,将连续性的特征转化为类别类的离散特征。


-
WOE值转化:基于分箱后的类别,计算每个特征的每个类别的WOE值。
WOE的全称是”weight of envidence“,是对原始变量的一种编码形式,计算公式如下:
单个分组的WOE值计算:

py指违约客户占所有样本的比例,pn指非违约客户占所有样本的比例,WOE是这2个值取比值再求对数。WOE越大,违约客户与非违约客户的比例就越大,客户违约的可能性越大。
IV的全称是“Information Value”,用于计算特征的价值,体现该特征对模型预测的影响能力,计算公式如下:
单个分组的IV值计算:

某特征的所有分组IV值求和:

IV值越大,表示该特征对模型的预测结果影响越大。

-
标签相关性特征筛选:筛选出前90%的重要特征,并计算这些特征的重要性。

-
逻辑回归二分类:采用逻辑回归算法组件进行模型构建,预测借款人是否会逾期90天及以上。


-
模型评估:采用混淆矩阵评估组件,评估该分类算法的训练结果好坏。


如上图所示,准确率、精确率、召回率等指标均还不错,认为模型达到预期。
-
评分卡系数转化:将分类组件得到的违约概率信息转化为评分分数。

当基准坏好比是0.05时,基准评分是600分,当坏好比翻倍时,评分减少20分,根据此计算每个借款人的信用评分。