初衷
其实现在评分卡已经深入到我们的生活之中了,在各种小微贷款的申请过程中都可以看到它的身影。对于存在于身边的事自然想要稍微深入了解一下。因此这几篇文章将会对于评分卡建立的整个流程进行一个简单梳理。由于本人是一个初学者,也不是业内人士,很有可能会出现错误,如果大佬发现了问题请指正。
评分卡简介
上图为一个典型评分卡的模型。对于每个变量进行分箱之后给与相应的得分,根据总分来判断放贷。
评分卡一般分为ABC三种。
A卡(Application scorecard)
申请评分卡:对应贷前,利用用户提交的信息,公司掌握的用户信息,第三方信用机构等来进行风险分析。
B卡(Behavior scorecard)
行为评分卡 对应贷中,利用用户拿到贷款后的表现来分析逾期或者违约的概率。
C卡(Collection scorecard)
催收评分卡 对应贷后,对于逾期客户的信息进行分析,从“坏人”中找到可以“商品”。
本次进行A卡分析建模。
数据来源
https://www.lendingclub.com/info/download-data.action
从美国的公司Lending Club提供的数据进行分析。本次分析下载了2018Q1与2018Q2的数据。
数据理解与清洗过程
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
pd.options.display.max_rows = 200
pd.options.display.max_columns = 200
读取数据
#读取数据
df = pd.read_csv('../data/LoanStats_2018Q1.csv', header = 1, low_memory=False)
df1 = pd.read_csv('../data/LoanStats_2018Q2.csv', header = 1, low_memory=False)
df = pd.concat([df,df1],ignore_index = True)
df.info(max_cols = 150)
df.tail()
这里的变量信息十分多,具体在Lending Club官方网站上有相应的解释字典。在这里就不献丑翻译了。
#对于变量类型为obejct的数据进行察看
df.select_dtypes(include = ['O']).info()
#对于变量类型为obejct的数据进行察看
df.select_dtypes(include = ['O']).head()
发现:
1.从这里可以发现,id这一栏数据只有2个非空,而其他的数据最多的只有238636,这两个加起来正好238640也就是总的数据条数,这就说明有可能是这4条变量本身就是空的,需要察看。
2.hardship_flag代表着困难情况,具体里面的数据代表的含义,之后进行分析。
3.verification_status_joint,sec_app_earliest_cr_line,等变量数量太少,不进行分析。(本次分析按照65%的阈值来进行删除)。
4.emp_title,emp_length这两个字段的缺失值较少的字段需要填充。
5.int_rate, revol_util这两个本应该为数字的字段这里是用字符串表示的,为了之后的计算方便,需要更改类型。
6.对于评分卡建立来说,term,grade,sub_grade,issue_d,title均属于贷后数据因此决定删除。但是loan_status对于我们进行数据标记有用处,所以不删除。
#察看id 不为空的字段的信息
df.loc[df.id.notnull()]
可以发现这4条数据中基本没有信息&#