一、项目背景
贷款申请人向p2p平台申请贷款时,p2p平台通过线上或线下让客户填写贷款申请表,收集客户的基本信息,同时会借助第三方平台如征信机构的信息。通过这些信息属性来做逻辑回归生成预测模型,平台可以通过预测判断贷款申请是否会违约,从而决定是否向申请人发放贷款。
数据集特征
二、逻辑回归
一句话概括:逻辑回归就是将线性模型的输出值通过Sigmoid函数处理,将输出值定位在(0,1)之间,用于二分类的任务。它不仅能够预测出类别,还能得到属于某个类别的概率预测。
2.1 数据预处理
2.1.1导入数据
2.2.2 总共有(39535,111),先删掉缺失值超过一半的列,并且初步删掉对建模无用的特征。
2.2.3 还剩32个特征,在原始数据中,没有0或者1的还不还款的特征,但是有“loan status”这个特征,意思是当前“贷款的状态”,来作为分类的变量y。
Fully Paid:批准了客户的贷款,后面给他打个“1”
Charged Off:没有批准了客户的贷款,后面给他打个“0”
这里用逻辑回归实现二分类的问题,还有一些不确定的属性就不要这些属性了。
2.2.4在原始数据中的特征值或者属性里都是一样的,对于分类模型的预测是没有用的,某列特征都是n n n NaN n n ,有缺失的,唯一的属性就有2个,用pandas算法空值给去掉
2.2.4查看哪些列存在缺失值的,少量样本缺失的直接干掉这些缺失行。
2.2.5 sklearn只接收数值类型的,开始处理字符类型数据,有12个类型数据是字符类型的。
2.2.6 有%号类型的需要转换为浮点数,emp_length用map函数映射成整型,删掉一些没有用的特征,剩下的特征使用哑变量处理(或者使用独热编码)
2.2.7 处理好数据使用info查看下表信息,全部转换为数值类型的数据,下面开始建模
2.2 使用sklearn模块来实现
2.2.1 导入LR模块,将数据分为训练样本和测试样本,进行拟合。
2.2.2 模型评估,通过绘制混淆矩阵,来查看模型的拟合效果。
2.2.3 可以看出,模型的效果并不理想,测试集上为负例的样本有1100,模型为负例预测为正例的错误样本有1099,这些人不会还钱,但还是贷给他了。很有可能是因为样本不均衡造成的,数据集(1: 33693,0: 5612)。解决样本不均衡的问题:1、可以通过指定因变量类别的权重,,将少的样本的权重增大,期望模型能够达到比较均衡的状态。class_weight参数可以调节;2、可以通过采样来造数据,基于一种线性插值的算法,在少的样本中找到k个距离近的样本,在k个样本中随机选择一个样本,循环迭代直到满足要求为止。
这里使用升采样的方式来尝试,引入imblearn模块,代码块:
2.2.4输出评估指标,并且绘制一下roc曲线
2.2.5随着阈值的不断降低,ROC曲线下的面积为0.66,fpr(真正例)的增长比tpr(假正例)明显增长要快,没有对模型进行不平衡处理之前,roc曲线下的面积为0.57,模型有了一定的提高,模型预测正例的f1-score值为0.66,模型效果可见还是一般。
三、小结:以上案例不是着重给出一个正确率的预测模型,只是给出使用逻辑回归建模的一般流程,分为两大部分:数据处理和模型学习,第一部分需要大量的时间来进行了对原始数据进行清理及特征提取,第二部分模型学习,涉及长时间的模型参数调整,模型效果不理想时,可以考虑的调整策略:
1.收集真实样本数据集,保证数据集均衡,这种比较困难,可以调节正负样本的权重参数。
2.更换模型算法。
3需要对特征进行选择,可以使用交叉验证。
4.调整模型参数。
5使用原数据,生成新特征。等等
数据集链接:https://pan.baidu.com/s/1OCrA5hhRniwhkCwt7xsaCQ
提取码:yubn