摘要:网络借贷指在网上实现借贷,借入者和借出者均可利用这个网络平台,实现借贷的“在线交易”。网络借贷分为b2c和c2c模式。一切认证、记账、清算和交割等流程均通过网络完成,借贷双方足不出户即可实现借贷目的,而且一般额度都不高,无抵押,纯属信用借贷。网络借贷的风险不言而喻,构建一个准确率高的风控系统显得格外重要,现在我们利用某网络贷款网站提供的几年来贷款风险数据(经过脱敏处理),使用机器学习的方法构造一个能准确从借款人的资料中判断其违约的可能性(借钱不还)。
数据信息:
包括信用违约标签(因变量,违约或者不违约)
建模所需的基础与加工字段(自变量)
相关用户的网络行为原始数据
本着保护借款人隐私的目的,数据字段已经经过脱敏处理。
Master表(每一行代表一个成功成交借款样本,每一个样本包含200多个各类字段)
Log_Info(借款人的登录信息)
Userupdate_Info(借款⼈修改信息)
一、违约评估架构
1.数据源:数据包括某借贷网站提供的借款人资料以及是否按时还款等情况构成的记录,一共3万条记录;
2.数据同步至阿里云:使用DataX工具将数据导入到在ODPS建立的表中;
3.流程计算:阿里云构建算法分析流程
4.分析结果:对计算出的违约风险储存于表中;
5.数据可视化展示:从数据库中读取数据进行可视化展示。
二、分析方法
1.本文中的3万记录来之于国内某网络借贷平台的经过脱敏处理的真实借贷风险数据。
2.获得的数据导入阿里云数加平台,数据表包含有每一笔借款的借款时间、借款人籍贯、借款人学历、借款人社交信息、借款人是否按期还款等等一些字段。
3.在数加的算法平台上建立回归预测的算法流程如上图。
4.采用数加组件的缺失值统计,对每一借款人资料的缺失比例进行统计,对比其在训练集和测试集上缺失比例的分布情况,剔除那些资料缺失异常的记录;统计每个数值型字段的标准差,剔除掉标准差几乎为零的字段,这些字段对结果的区分度几乎为零;
1)剔除异常值(横坐标为每一个贷款人,纵坐标为每一个贷款人信息的缺失字段的个数;左边为训练集中,右边为测试集中)
2)剔除标准差为几乎零的特征(以小于0.1作为剔除的阈值)
5.从信息中构造特征
1)分开统计出贷款违约的借款人和正常还款的借款人在每天的成交数量,从中可以看出两者的分布不一样,故看出时间对借款人是否正常还款存在区别性,所以从成交时间中提取出月份日期信息;
2)每天的成交数量与是否履约的分布情况(count_1:贷款违约,count_0正常还款)
3)将借款人的籍贯信息利用城市等级进行分类合并;或者将借款人所在城市信息作为每一个人借款人的特征放入xgboost中进行训练学习,得到每一个城市的重要度排名,提取出重要度最高的前40个单独作为一类城市,其他的城市进行合并为同一类;
4)从提供的登录信息中提取每个借款人的登录信息计算出其平均登录间隔,借款后多少天才会登录等等一些组合特征;
5)将类别型特征使用独热向量编码;
6)最后将数值型的字段进行标准化,既能加快模型的训练速度,也能将数据放入一个标准分布内,使每个特征之间的数值大小差距尽可能小。
6.将处理完毕的数据分别放入logistics regression、随机森林,xgboost中进行分类学习,并用网格搜索各分类器达到最佳状态。
7.可视化展示,将流程计算的结果,进行可视化展示。
三、违约评估预测结果展示
我们分别在尝试在logistics regression、随机森林、xgboost上进行模型训练并进行预测
1.在logistics regression上,利用5折交叉验证,将参数正则化惩罚项‘C’设置为0.4,正则化选择L1正则,在验证集上9000个样本上进行预测,AUC的值达到了0.72993。
2.在随机森林上,利用5折交叉验证,将决策树的个数设置为100,决策树最大深度设置为13,决策树一个节点所需要用来分裂的最小样本数设置为160,在验证集上9000个样本上进行预测,AUC的值达到了0.720267。
3.在xgboost上,利用5折交叉验证,将增强树的数量设置为113颗,决策树最大树深设置为3,最小业主节点样本权重和设置为5,在验证集上9000个样本上进行预测,AUC的值达到了0.751830。
MaxCompute最佳实践