python数据分析与机器学习案例-贷款申请利润最大化

    本文针对某信贷网站提供的2007-2011年贷款申请人的各项评估指标,运用python、pandas及sklearn,对初始数据进行数据清理,并结合机器学习的一些算法,建立关于信贷申批的简单模型,可作为了解数据分析流程,入门机器学习的小案例。

    数据来源:https://www.lendingclub.com/info/download-data.action,

 1.加载数据。


2.了解各数据特征在业务中的含义。观察数据特征,对数据进行简单的清理,主要清理与业务相关性不大的内容,此处的相关性大小凭业务知识进行粗略判断,如申请人的id,member_id,url,公司名emp_title等。


3.观察数据中数据特征“loan_status”,有两个取值,“Fully paid”和“Charged Off”(其他取值样本较少,是否贷款含义不明,直接舍弃),表示同意贷款和不同意贷款,将此特征作为及其学习的标签列,由于sklearn中各及其学习模型值接受数值类型的数据类型,所以我们将“loan_status”映射为数值类型。


4.删除数据中取值唯一的特征,只取一个值的特征,对我们的模型训练没有意义。


5.处理数据中的空缺值,本文的处理原则是:对于某一特征,如果出现空值的样本较少,则删除在此特征商为空值的样本;如果去空值的样本数量较多,则选择删除该特征。当然还有许多其他的空缺值处理方式,如替换,可自己根据实际需要进行选择。有上述原则知,我们需要对各特征出现空值的数量进行统计。


6.观察结果,发现有四个特征有取空值的情况,其中三个空值数量较少,我们删除对应的样本,另外一个特征“pub_rec_bankruptcies”,空值数量较多,我们删除该特征。


7.观察需要进一步处理的字符型特征


8.对于“emp_length”可以直接映射为数值型 ,对于“int_rate”,“revol_util”可以去掉百分号,然后转换为数值型,对于含义重复的特征,如“purpose”和“title”,都表示贷款意图,可选择删除一个,其他与模型训练无关的特征选择删除

9.剩余的其他字符型特征,此处选择使用pandas的get_dummies()函数,直接映射为数值型。

10.到此为止,数据处理部分已经完成,保存清理好的数据,接下来是运用机器学习算法建模的过程。对于二分类问题,一般情况下,首选逻辑回归,这里我们引用sklearn库。首先定义模型效果的评判标准。根据贷款行业的实际情况,为了实现利润最大化,我们不仅要求模型预测正确率较高,同时还要尽可能的让错误率较低,这里采用两个指标tpr和fpr。同时该模型采用交叉验证(KFold,分组数采用默认的最好的分组方式)进行学习。


11.对上述模型的预测结果进行简单的分析,发现错误率和正确率都达到99.9%,错误率太高,通过观察预测结果发现,模型几乎将所有的样本都判断为正例,通过对原始数据的了解,分析造成该现象的原因是由于政府样本数量相差太大,即样本不均衡造成模型对正例样本有所偏重,大家可以通过下采样或上采用对数据进行处理,这里采用对样本添加权重值的方式进行调整,首先采用默认的均衡调整。


12.新的结果降低了错误率约为40%,但正确率也下降约为65%,因此有必要再次尝试,可以采取自定义权重值的方式。

13.新的结果错误率约为47%,正确率约为73%,大家仍可根据需要继续调整,但调整策略并不限于样本权重值这一中,下面使用随机森林建立模型。

总结:以上案例不是着重给出一个正确率的预测模型,只是给出使用机器学习建模的一般流程,分为两大部分:数据处理和模型学习,第一部分需要大量的街舞知识对原始数据进行清理及特征提取,第二部分模型学习,涉及长时间的模型参数调整,调整方向和策略需要大家进一步的研究。一下是模型效果不理想时,可以考虑的调整策略:

1.调节正负样本的权重参数。

2.更换模型算法。

3.同时几个使用模型进行预测,然后取去测的最终结果。

4.使用原数据,生成新特征。

5.调整模型参数。


猜你喜欢

转载自blog.csdn.net/weixin_35637700/article/details/79416375
今日推荐