逻辑回归建立评分卡
在借贷场景中,评分卡是用分数形式来衡量一个客户信用风险的大小,分数越高代表信用风险越小。
针对个人客户而言,评分卡分为三类,分别是:
A卡(Application score card)申请评分卡
B卡(Behavior score card)行为评分卡
C卡(Collection score card)催收评分卡。
而众人常说的“评分卡”其实是指A卡,又称为申请者评级模型,主要应用于相关融资类业务中新用户的主体评级。
一个完整的模型开发,有以下流程:
接下来,使用Give Me Some Credit数据集,总共15万条训练数据,介绍使用逻辑回归建立A卡的方法。
1 数据预处理
变量表:
变量名 | 变量解释 |
---|---|
SeriousDlqin2yrs | 是否有超过 90 天或更糟的逾期拖欠 |
RevolvingUtilizationOfUnsecuredLines | 贷款以及信用卡可用额度与总额度比例 |
age | 借款人的年龄 |
NumberOfTime30-59DaysPastDueNotWorse | 35-59 天逾期但不糟糕次数 |
DebtRatio | 负债比率 |
MonthlyIncome | 月收入 |
NumberOfOpenCreditLinesAndLoans | 未偿还贷款数量和信贷额度 |
NumberOfTimes90DaysLate | 借款人逾期 90 天或以上的次数 |
NumberRealEstateLoansOrLines | 不动产贷款或额度数量 |
NumberOfTime60-89DaysPastDueNotWorse | 借款人已超过 60-89 天的次数,但在过去两年中没有更糟。 |
NumberOfDependents | 家庭中的家属人数(配偶,子女等) |
1.1 去重复值
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.ensemble import RandomForestRegressor
import seaborn as sns
import scipy
data = pd.read_csv('cs-training.csv')
data = data.iloc[:,1:]
data.shape()
data.info()
data.drop_duplicates(inplace=True)
data.index = range(data.shape[0])
1.2 填补缺失值
观察缺失数据可以发现,需要填补的特征是“收入”和“家属人数”。“家属人数”缺失很少,仅缺失了大约2.5%,使用均值来填补。“收入”缺失了几乎20%,并且“收入”对信用评分来说是很重要的因素,因此使用随机森林填补“收入”。
data.isnull().sum()
data['NumberOfDependents'].fillna(int(data['NumberOfDependents'].mean()),inplace=True)
def fill_missing_rf(x,y,to_fill):
df = x.copy()
fill = df.loc[:,to_fill]
df = pd.concat([df.loc[:,df.columns!=to_fill],pd.DataFrame(y)],axis=1)
y_train = fill[fill.notnull()]
y_test = fill[fill.isnull()]
x_train = df.iloc[y_train.index,:]
x_test = df.iloc[y_test.index,:]
from sklearn<