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\\ y0,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+ez1

来代替单位跃迁函数。单位跃迁函数和对数几率函数如图1:

将逻辑回归的公式进行整理,我们可以得到:
log ⁡ p 1 − p = θ T x \\log \\fracp1 - p = \\theta ^Tx log1pp=θ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 分类预测评价指标的介绍

对于二分类问题,主要采用 RecallPrecisionAccuracyF1-scoreP-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 F1score=Recall+Precision2RecallPrecision

  • 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)的违约客户占比,可以看出随着信用等级由 AF 降低,违约客户的占比越来越高,而 G 等级的违约客户占比较低,可能的原因是贷款公司对信用等级为 G 等级的用户审核条件更加严格。

图5为不同总还款月份(term)的违约客户占比,可以看出:总还款月份为 60 个月的违约客户占比明显高于 36 个月的违约客户占比。推测可能的原因是前者的还款压力更大,工作不确定性也更大。

图6为贷款人年收入与贷款状态的箱线图,图中并未显示出两者之间存在着强相关关系。

1.4 特征选取与数据预处理

在上述数据的描述与分析的基础上,我们选取如下4组特征进行分析(表3):

其中, loan_amnt为贷款金额,为连续型变量;grade 为信用等级,为类别变量;term 为总还款月份,为类别变量;annual_inc 为贷款人年收入,为连续型变量。

对于所选的特征,经过数据分析,不存在缺失值情况。而对于不同数据类型的特征,我们要采取不同的预处理方法:

  • 类别变量 gradeterm
    变量 中的 AG 等级,分别标为 06;变量 中的 ’36 months’ 标为 0’60 months’ 标为 1.
  • 连续型变量 loan_amntannual_inc
    两者中的数据都进行标准化处理。

1.5 建模分析与结果比较

对于模型的建立与运算,我们要用到 python 中的numpypandassklearn 等包。对于数据集,我们都将其中的 80% 作为训练集,20% 作为测试集,绘制 4 个数据集模型对应的 ROC 曲线,如图7:

从图中我们可以看到,第2,3,4组的AUC值无明显差异,且显著高于第1组的值。
并得到各自的模型评价参数如下(表4):

根据表中显示的不同分组的模型评价参数,我们可以发现:第3组的 RecallPrecisionF1-scoreAccuracy 都是最大的,因此我们我们可以认为第3组选择的特征:loan_amntannual_incterm 对于违约客户的分类预测是相对最优的。

二、不同算法优劣的比较分析

该部分本文基于对“多源数据集”的分析,采用 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(Xci

基于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——问题重述+特征选择+算法对比的主要内容,如果未能解决你的问题,请参考以下文章

Lending Club 数据做数据分析&评分卡

Lending Club 公司2007-2018贷款业务初步分析

评分卡系列:讲讲评分系统的构建

评分卡系列:特征工程

scapy - 基于python的数据包操作库

Python - 基于现有数据集生成相关数据集