Python | 基于LendingClub数据的分类预测研究Part01——问题重述+特征选择+算法对比
Posted 四口鲸鱼爱吃盐
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python | 基于LendingClub数据的分类预测研究Part01——问题重述+特征选择+算法对比相关的知识,希望对你有一定的参考价值。
欢迎交流学习~~
专栏: 机器学习&深度学习
本文利用Python对数据集进行数据分析,并用多种机器学习算法进行分类预测。
具体文章和数据集可以见我所发布的资源:发布的资源
Python | 基于LendingClub数据的分类预测研究Part01——问题重述+特征选择+算法对比
零、问题重述&背景介绍
0.1 问题重述
-
问题一: 在数据集
lending-club
中筛选不同属性,确定至少三组对应训练集及测试集,选用同一种机器学习算法,训练不同数据集,并进行实验结果比较分析。可进行数据均衡化预处理。 -
问题二: 选用不同的机器学习算法,对“多源数据”集完成分类预测(至少用三种机器学习算法实现,如支持向量机、神经网络、决策树等),并进行不同算法优劣的深入比较分析。可进行数据均衡化预处理。
-
问题三: 扩展内容,可针对某种机器学习算法,进行算法优化改进等操作,在完成本题目的问题一和问题二要求之后,创新性进行算法实验。
0.2 背景介绍
近年来随着网络时代的迅速发展,互联网金融产品迅猛发展起来,并逐步改变人类的生活和储蓄方式,大型的借贷平台也逐渐兴起,LendingClub
是其中一家发展迅速、运作较好的大型P2P(Peer to Peer)交易平台,由于P2P平台交易门槛低、流程简单、投资回报率高等优势,迅速吸引了大批量客户进入市场,从中也衍生出了一些违规贷款和欺诈事件,所以本文以Lending Club
公司的部分批贷数据进行建模分析,通过 Logistic Regression(LR)
分类预测的方法进行风险评估,提高 P2P
平台关于违约率较高客户的识别能力,从而为该平台及公司提供科学决策依据。
此外,本文针对“多源数据”集,选取 3
种机器学习算法:神经网络,贝叶斯分类器和决策树,深入比较多种算法之间的运算效果,分析各种算法的优势和劣势。
最后,本文针对 Lending Club
的批贷数据集和相关算法进行深入研究,将原来的二分类问题,变为三分类问题。进一步,在使用决策树这种单一树类模型进行分类后, 也使用两种集成树类算法——随机森林和极端随机树模型,对数据进行预测分类。最终,综合三种算法,比较了它们的优势和劣势。
一、不同特征对于预测结果差异的比较
该部分本文在对 Lending Club
数据集进行初步数据分析的基础上,通过选取 4
组不同的特征,采用同一种算法(逻辑回归,LR)进行分类预测,比较 4
组模型结果参数的差异,选出其中相对最优的特征。
1.1 LR算法的介绍
逻辑回归(Logistic Regression
, LR
)采用线性的方式进行分类,有效地将回归问题与分类问题进行了结合。
考虑二分类任务,其输出标记
y
∈
0
,
1
y\\in \\0,1\\
y∈0,1,而线性回归模型产生的预测值
z
=
w
T
x
+
b
z=w^Tx+b
z=wTx+b 是实值,于是,我们需将实值
w
w
w 转换为
0
/
1
0/1
0/1 值。最理想的是“单位跃迁函数”:
y
=
0
,
z
<
0
0.5
,
z
=
0
1
,
z
>
0
y = \\begincases0, z<0 \\\\ 0.5, z=0 \\\\ 1, z>0 \\endcases
y=⎩
⎨
⎧0,z<00.5,z=01,z>0
若预测值
z
z
z 大于零就判为正例,小于零则判为反例,预测值为临界值零则可以任意判别,但由于单位跃迁函数不连续,我们可以用对数几率函数:
y
=
1
1
+
e
−
z
y=\\frac11+e^-z
y=1+e−z1
来代替单位跃迁函数。单位跃迁函数和对数几率函数如图1:
将逻辑回归的公式进行整理,我们可以得到:
log
p
1
−
p
=
θ
T
x
\\log \\fracp1 - p = \\theta ^Tx
log1−pp=θTx
其中,
p
=
P
(
y
=
1
∣
x
)
p = P(y = 1|x)
p=P(y=1∣x) ,也就是将给定输入
x
x
x 预测为正样本的概率。在自变量
x
x
x 和超参数
θ
\\theta
θ 确定的情况下,逻辑回归可以看作广义线性模型(Generalized Linear Models)在因变量
y
y
y 服从二元分布时的一个特殊情况。本文主要利用 Logistic Regression
在处理二分类问题时简单高效的优势,对本文的 Lending Club
数据进行分类预测。
1.2 分类预测评价指标的介绍
对于二分类问题,主要采用 Recall
,Precision
,Accuracy
,F1-score
,P-R曲线
,ROC曲线
,AUC曲线
等指标进行评价,在评价时可依据混淆矩阵来进行:
-
召回率(
Recall
):分类正确的正样本个数占真正的正样本个数的比例: R e c a l l = T P T P + F N Recall = \\fracTPTP + FN Recall=TP+FNTP -
准确率(
Precision
):分类正确的正样本总数与分类器判别为正样本的样本总数的比例: P r e c i s i o n = T P T P + F P Precision = \\fracTPTP + FP Precision=TP+FPTP -
F1-score
:召回率和准确率的调和平均值,可以综合反应模型的性能: F 1 − s c o r e = 2 ⋅ R e c a l l ⋅ P r e c i s i o n R e c a l l + Pr e c i s i o n F1 - score = \\frac2 \\cdot Recall \\cdot Precision\\mathop\\rm Re\\nolimits call + \\Pr ecision F1−score=Recall+Precision2⋅Recall⋅Precision -
P-R
曲线:一个综合的图形指标,用来衡量分类模型的拟合效果,图形中横轴是Recall
值,纵轴是Precision
值。 -
正确率(
Accuracy
):分类正确的样本个数占总样本个数的比例: A c c u r a c y = T P + T N T P + F P + T N + F N Accuracy = \\fracTP + TNTP + FP + TN + FN Accuracy=TP+FP+TN+FNTP+TN -
ROC
曲线:ROC
曲线的横坐标为假阳性率(False Positive Rate, FPR
),纵坐标为真阳性率(True Positive Rate, TPR
)所构成的曲线。其中 F P R = F P N FPR = \\fracFPN FPR=NFP, T P R = T P P TPR = \\fracTPP TPR=PTP . -
AUC
:是ROC
曲线下的面积大小,该值能够量化反映出基于ROC
曲线的模型性能,AUC
值为沿着ROC
曲线横轴的积分值,其值越接近于1
,模型效果越好。
对于上述公式中字符的含义,可以用如下的二分类混淆矩阵表示:
1.3 Lending Club的数据描述与分析
本文数据是 Lending Club
公司对一段时间内贷款客户信息的整理,原始数据包含 77159
个样本,108
维特征,特征数据包含整型、浮点型、类别型和字符型的数据。预测变量为客户的贷款状态,包含的取值有:’Fully Paid’
,’Current’
,’Charged Off’
,’Late (31-120 days)’
,’In Grace Period’
,’Late (16-30 days)’
,’Default’
,由于本文主要是为了识别违约客户,所以这里将 ’Fully Paid’
和 ’Current’
视为正常客户,标记为 0
,其他情况的 ’Charged Off’
,’Late (31-120 days)’
,’In Grace Period’
,’Late (16-30 days)’
,’Default’
视为违约客户,标记为 1
.
接下来,本文针对客户的贷款状态以及某些特征进行初步数据分析:表2为正常客户和违约客户的统计信息,图2为不同贷款状态(loan_status
)的客户数量统计图:
图3为贷款额度(loan_amnt)和贷款状态(loan_status)的箱型图,可以发现,随着贷款状况的下降,贷款额度呈现轻微上升趋势,可以猜测,二者有着一定的联系。
图4为不同信用等级(grade
)的违约客户占比,可以看出随着信用等级由 A
向 F
降低,违约客户的占比越来越高,而 G
等级的违约客户占比较低,可能的原因是贷款公司对信用等级为 G
等级的用户审核条件更加严格。
图5为不同总还款月份(term
)的违约客户占比,可以看出:总还款月份为 60
个月的违约客户占比明显高于 36
个月的违约客户占比。推测可能的原因是前者的还款压力更大,工作不确定性也更大。
图6为贷款人年收入与贷款状态的箱线图,图中并未显示出两者之间存在着强相关关系。
1.4 特征选取与数据预处理
在上述数据的描述与分析的基础上,我们选取如下4组特征进行分析(表3):
其中, loan_amnt
为贷款金额,为连续型变量;grade
为信用等级,为类别变量;term
为总还款月份,为类别变量;annual_inc
为贷款人年收入,为连续型变量。
对于所选的特征,经过数据分析,不存在缺失值情况。而对于不同数据类型的特征,我们要采取不同的预处理方法:
- 类别变量
grade
和term
:
变量 中的A
到G
等级,分别标为0
到6
;变量 中的’36 months’
标为0
,’60 months’
标为1
. - 连续型变量
loan_amnt
和annual_inc
:
两者中的数据都进行标准化处理。
1.5 建模分析与结果比较
对于模型的建立与运算,我们要用到 python
中的numpy
,pandas
,sklearn
等包。对于数据集,我们都将其中的 80%
作为训练集,20%
作为测试集,绘制 4
个数据集模型对应的 ROC
曲线,如图7:
从图中我们可以看到,第2,3,4组的AUC值无明显差异,且显著高于第1组的值。
并得到各自的模型评价参数如下(表4):
根据表中显示的不同分组的模型评价参数,我们可以发现:第3组的 Recall
,Precision
,F1-score
和 Accuracy
都是最大的,因此我们我们可以认为第3组选择的特征:loan_amnt
,annual_inc
,term
对于违约客户的分类预测是相对最优的。
二、不同算法优劣的比较分析
该部分本文基于对“多源数据集”的分析,采用 3
种不同的机器学习算法:神经网络,贝叶斯分类器和决策树,对数据进行分类预测,并比较它们的模型评价参数,分析各个算法的优势和劣势。
2.1 算法的介绍
2.1.1 神经网络
人工神经元网络是对生物神经网络的一种模拟与近似,是由大量神经元通过相互连接而构成的自适应非线性动态网络系统。从提出的神经元第一个模型——MP模型,到单层感知器模型,再到提出一种按误差逆传播算法训练的多层前馈网络——反向传播网络(BP
网络)。
神经网络模型已经发展出多种形式,包括:卷积神经元(CNN
),循环神经元(RC
),长短期记忆神经元(LSTM
),门控循环神经元(GRU
),前馈神经网络(FFNN
),径向基神经网络(RBF
),霍普菲尔网络(HN
)等。
如图8为一些神经网络图示:
2.1.2 贝叶斯分类器
贝叶斯分类器(Bayes
法)是一种在已知先验概率与类条件概率的情况下的模式分类方法,待分类的分类结果取决于类域中样本的全体。
设训练样本集分为 M
类,记为
C
=
c
1
,
c
2
,
.
.
.
,
c
M
C = \\ c_1,c_2,...,c_M\\
C=c1,c2,...,cM,每类的先验概率为
P
(
c
i
)
P(c_i)
P(ci),当样本集非常大时,可以认为
P
(
c
i
)
=
n
(
c
i
)
n
P(c_i) = \\fracn(c_i)n
P(ci)=nn(ci),其中
n
(
c
i
)
n(c_i)
n(ci) 为
c
i
c_i
ci 类的样本数,
n
n
n 为总样本数。对于一个待分类样本
X
X
X,其归类为
c
i
c_i
ci类的类条件概率为
P
(
X
∣
c
i
)
P(X|c_i)
P(X∣ci基于LendingClub数据的金融现金贷用户数据分析和用户画像(附python代码)
时值蚂蚁上市之际,马云在上海滩发表演讲。马云的核心逻辑其实只有一个,在全球数字经济时代,有且只有一种金融优势,那就是基于消费者大数据的纯信用!
我们不妨称之为数据信用,它比抵押更靠谱,它比担保更保险,它比监管更高明,它是一种面向未来的财产权,它是数字货币背后核心的抵押资产,它决定了数字货币时代信用创造的方向、速度和规模。一句话,谁掌握了数据信用,谁就控制了数字货币的发行权!
数据信用判断依靠的就是金融风控模型。更准确的说谁能掌握数据分析技能,精准了解客群,谁就能制合理定贷款策略!
欢迎各位同学学习:
金融现金贷用户数据分析和用户画像
https://edu.51cto.com/sd/01346
讲师介绍
讲师Toby,持牌照消费金融模型专家,和中科院,中科大教授保持长期项目合作;和同盾,聚信立等外部数据源公司有项目对接。熟悉消费金融场景业务,线上线下业务,包括现金贷,商品贷,医美,反欺诈,汽车金融等等。模型项目200+,擅长Python机器学习建模,对于变量筛选,衍生变量构造,变量缺失率高,正负样本不平衡,共线性高,多算法比较,调参等疑难问题有良好解决方法。
课程概述
此课程用python代码对LendingClub平台贷款数据分析和用户画像,针对银行,消费金融,现金贷等场景,教会学员用python实现金融信贷申请用户数据分析。项目采用lendingclub 12万多条真实信贷数据,包括用户年收入,贷款总额,分期金额,分期数量,职称,住房情况等几十个维度。通过课程学习,我们发现2019年四季度时候,美国多头借贷情况非常严重,为全球系统性金融危机埋下种子。
课程目的
教会学员用python编程实现金融信贷申请用户数据分析和画像
实用人群
银行,消费金融,小额贷,现金贷等线上贷款场景的风控建模相关工作人员,贷前审批模型人员;大学生fintech建模竞赛,论文,专利。
学习计划和方法
1.每天保证1-2个小时学习时间,预计7-14天可以学习完整门课程。
2.每节课的代码实操要保证,建议不要直接复制粘贴代码,自己实操一遍代码对大脑记忆很重要,有利于巩固知识。
3.第二次学习时要总结上一节课内容,必要时做好笔记,加深大脑理解。
4.不懂问题要罗列出来,先自己上网查询,查不到的可以咨询老师。
课程目录
章节1python编程环境搭建
课时1.金融现金贷用户数据分析和画像_介绍视频
课时2.Anaconda快速入门指南
课时3.Anaconda下载安装
课时4.python第三方包安装(pip和conda install)
章节2金融现金贷用户数据分析和画像
课时5.描述性统计-知己知彼百战百胜
课时6.好坏客户占比严重失衡
课时7不要用相关性分析杀人
课时8变量相关性分析-你不知道的秘密
课时9贷款金额和趋势分析-2018年Q4信贷略有缩紧
课时10产品周期分析-看来lendingclub是短周期借贷平台
课时11用户工龄分析-10年工龄用户最多
课时12年收入分析-很多美国人年薪5万美金左右
课时13住房情况与贷款等级-原来美国大部分都是房奴
课时14贷款人收入水平_贷款等级_收入核实多因子分析
课时15贷款用途-美国金融危机浮出水面
课程部分内容展示
Lending Club公司背景
Lending Club 创立于2006年,主营业务是为市场提供P2P贷款的平台中介服务,公司总部位于美国San Francisco。
公司在运营初期仅提供个人贷款服务,至2012年平台贷款总额达10亿美元规模。
2014年12月,Lending Club在纽交所上市,成为当年最大的科技股IPO。
2014年后公司开始为小企业提供商业贷款服务。
2015年全年Lending Club平台新设贷款金额达到了83.6亿美元。
2016年上半年Lending club爆出违规放贷丑闻,创始人离职,股价持续下跌,全年亏损额达1.46亿美元。
2019-2020年公司业务被迫转型,可能和美国高负债率,用户违约率上升有关。
作为P2P界的鼻祖,Lending club跌宕起伏的发展历史还是挺吸引人的。
此处介绍一下什么是P2P。概括起来可以这样理解,“所有不涉及传统银行做媒介的信贷行为都是P2P”。简单点来说,P2P公司不会出借自有资金,而是充当“中间人”的角色,连接借款人与出借人需求。
借款人高兴的是拿到了贷款,而且过程快速便利,免遭传统银行手续众多的折磨;出借人高兴的是借出资金的投资回报远高于存款利率;那么中间人高兴的是用服务换到了流水(拿的便是事成之后的抽成) 最后实现三赢。
P2P初衷是好的,但随着诸多平台建立蓄水池,违规操作和房贷,造成几十万人被骗。2018-2019年国内对P2P监管越来越严,到了2020年,P2P基本清退。只有持牌照的公司才能放贷。
贷款标准
借款人提交申请后,Lending Club 会根据贷款标准进行初步审查。贷款人需要满足以下标准才能借款:
1.FICO 分数在660 分以上
FICO分数等级划分
2.债务收入比例低于40%
3.信用报告反应以下情况:至少有两个循环账户正在使用,最近6 个月不超过5 次被调查,至少36 个月的信用记录
贷款等级grade
贷款分为A、B、C、D、E、F、G 7 个等级,每个等级又包含了1、2、3、4、5 五个子级。
二、目的
研究影响贷款等级的相关因素,并探寻潜藏在数据背后的一些规律
三、数据集获取
选取2018年第四季度数据集以及特征变量的说明文档。
官网上下载数据集
已翻译的特征说明文档
说明:部分重要的特征变量似乎缺失,多次下载的数据集中缺少fico分数、fico_range_low、fico_range_high等与fico相关的特征,所以在形成结论进行总结的时候,这些特征的结论将从相关的报告中获取。
四、数据处理
在对数据进行处理前,我们需要对数据有一个整体的认识
从上述的信息中可以看出:
1.128412行数据,23个特征变量(抽选比较重要的变量,原始变量有110多个)
2.13个特征变量中有86个是浮点数类型,5个是Object对象。
调用data.describe()函数对数据描述性统计,观察各个变量的计数,平均值,标准差,最大值,最小值,1/4位数和3/4位数值,并观察一下异常值。
Object基类对象的数据分布情况
从图表中可以得到部分信息:
1.贷款共7个等级,占比最多的是B级
2.还款的形式有两种,占比最多的是36个月
3.贷款人中大多数人工龄10+年
4.贷款人的房屋状况大多是抵押贷款
5.大多数人贷款的目的是债务整合
6.id与desc特征的数据缺失率高达0.99,间接表明这两个特征可以删除掉。
同样可以按照这种方式对浮点型的数据进行数据预览,得到均值、标准差、四分位数以及数据的缺失比重等信息。
我们调用hist函数可以对数据的所有维度绘制直方图,一目了然观察所有变量数据分布。
第四季度贷款等级变化趋势
首先我们来看一下2018年第四季度业务开展情况,主要是放款笔数,金额,期限等情况。第四季度放款笔数和放款金额略有下降,业务上是有意义的,年底坏账率会上升,平台会收紧。特别是在国内,年底收紧幅度比较大。
贷款金额分析:
通过seaborn,scipy,pandas三个包,我们绘制了一个正太分布图,观察lendingclub平台给个人贷款金额大多在1万-2万美金,较高金额的贷款数量较少,此平台主要是小额贷为主。
贷款周期占比
通过绘制饼状图,我们得到lendingclub平台贷款周期分为36个月与60个月,主要以36个月为主,60个月的比重31%左右。在p2p平台上以短期贷款为主,长期贷款也有,利率较高,但周期较长。借出人收获利息,承担风险,而借入人到期要偿还本金。贷款周期越长,对借出人来说风险越高。
在国内的环境下,借出人不仅要承担推迟还款的风险,还要担心平台跑路、本息全无的高风险;对借入人来说,因为国内缺少健全的征信体系,借款方违约及重复违约成本低。
对国内的情况不再多说,话题绕回来。国外的部分国家已有健全的征信体系,一旦违约还款,违约率不断上涨,个人征信也会保留记录,对后序的贷款、买房有很大的影响。所以如果贷款周期较长,且如果没有固定的工作和固定的收入的话(即使有未定收入也不一定如期偿还),偿还本金充满变数,很有可能违约。
接下来我们再试着对贷款人进行分析,形成一下用户画像吧。
贷款人工龄分布图
从图中可以看出,贷款人中工龄为10年以上频率最多。那么,我们可以考虑一下,为什么工龄超过10年的人有贷款需求呢?且占比这么高?
那么可以猜测一下(个人意见),首先可能是工龄越长,贷款通过率越高(筛选后占比较高),这可能和lendingclub贷前审批策略有关。
贷款人收入水平
通过上图发现,美国贷款人收入水平中年收入在0-5万美元的占比最高,30.53%左右。其次是5万-10万区间,11万-30万年收入区间占比逐步变小。得到这张图并不容易,是对数据进行深度清洗后得到的。特别是调用了pandas的cut函数,对收入变量进行分箱处理。
贷款人年收入,贷款等级,收入验证多因子分析
lending club会对客户收入进行验证,这非常值得国内平台学习。贷款人的收入水平信息分为三种情况:已经过LC验证,收入来源已验证,未验证。这三种情况目前从图中看出LC验证,收入来源已验证,未验证的收入数据还是有显著区别。另外贷款等级与收入水平在整体上呈正相关的趋势。上图由seaborn的的factorplot函数生成。factorplot函数是用于多因子分析的,非常实用。
借款人住房状况分布图
一半用户房屋状态是抵押贷款,只有10%用户拥有完全的产权。看来美国房奴大军不小呀!接着用pandas的stack和unstack函数对grade和home_ownship两个等级变量做数据深度清洗,然后绘制下图。通过观察贷款等级越高用户按揭占比越高,租房占比越低,反之亦然。自有住房占比每个等级略有不同。
贷款用途分布
上图中debt_consolidation(可以理解为债务整合,借新还旧)占比最高,占比第二高的credit_card也归属为同一类。不同平台新债还旧债属于多头借贷行为,多头借贷会提升用户负债率,而负债率会引发经济系统性危机。经济危机会进一步提高社会基尼系数,引发社会动荡。多头借贷是一个非常敏感的指标,无论公司还是监管都应该监控此指标。
从历史经验看,举债发展导致住户部门高杠杆和过快的债务增速,与债务危机显著相关。如日本平成大萧条,韩国信用卡危机,美国次贷危机,均是居民负责短期内快速上涨,导致收入,储蓄及资产价值无法偿付债务,从而造成金融系统系风险。
美国上个世纪开始就提倡超前消费观念刺激经济,传统储蓄观念备受冷漠。但人有不愿意还钱倾向,债务越高,金融危机风险越大。2019年美国债务占GDP比重已经高到106%,也就是说美国创造的社会财富还不够还债。1970年时,债务只占GDP38%左右,由此可见华尔街贪欲程度,可以用too much, never enough来形容。很巧的是,我们在lending club数据分析时就发现了这猫腻,发现大多借款人借款目的就是新债换旧债。无论新冠状病毒是否爆发,美国金融体系已经存在严重系统风险,而且其他国家也存在类似问题,只是负债程度不一样。
专业人士预测到2025年,美国负债占GDP比重可能达到140%,负债呈现逐年上升趋势。
居民负债率上升,富人却通过房贷和货币宽松政策获利,从而导致社会基尼系数不断上升,社会贫富差距拉大,最后导致社会动荡和战争。下图是几年前全球基尼系数,可以看到美国基尼系数在40-50,实际数据可能更大。
贷款目的与人均收入水平
综合收入水平与贷款用途得到上图,我们可以发现在第四季度中,人均收入水平较高的人群贷款用于小生意,家庭生活改善,房子等。而贷款为了债务整合(占比最高)的人群的人均收入水平在整体的中下。收入最低的一般用于医疗开支或车辆相关。这也间接证明了多头借贷的收入会越来越低,陷入贫困陷阱。
变量相关性分析:
数据分析和画像后,我们可以用上述变量建模。建模型并非所有变量都使用,需要做变量筛选工作。变量相关性分析就是最基础的变量筛选步骤。我们用seaborn的heatmap函数绘制出下图变量相关性热力图后,我们发现部分变量呈现0.9高相关性
除了python,excel也可以绘制变量相关性热力图,下图由excel生成。
变量相关性取值从0-1,值越接近0,两个变量相关性越低;值越接近1,两个变量相关性越高。下图是变量相关性数据分布。
欢迎学习更多金融风控建模知识:
python金融风控评分卡模型和数据分析微专业课
https://edu.51cto.com/sd/f2e9b
基于LendingClub数据的python风控建模(附脚本和10万多真实信贷数据)
以上是关于Python | 基于LendingClub数据的分类预测研究Part01——问题重述+特征选择+算法对比的主要内容,如果未能解决你的问题,请参考以下文章