一战成名,用户贷款风险预测 参赛代码与数据集分享

0?wx_fmt=gif&wxfrom=5&wx_lazy=1

 向AI转型的程序员都关注了这个号???html


大数据挖掘DT数据分析  公众号: datadwgit



队伍名“一战成名” 最终线上排名第七。 
640?wx_fmt=png&wxfrom=5&wx_lazy=1
程序员


任务

融360与平台上的金融机构合做,提供了近7万贷款用户的基自己份信息、消费行为、银行还款等数据信息,须要参赛者以此创建准确的风险控制模型,来预测用户是否会逾期还款。github

赛题:用户贷款风险预测(算法竞赛)算法

http://www.pkbigdata.com/common/cmpt/%E7%94%A8%E6%88%B7%E8%B4%B7%E6%AC%BE%E9%A3%8E%E9%99%A9%E9%A2%84%E6%B5%8B_%E7%AB%9E%E8%B5%9B%E4%BF%A1%E6%81%AF.html微信


本文代码在公众号 datadw 里 回复 风险   便可获取。dom



训练数据 :https://pan.baidu.com/share/init?shareid=1950975130&uk=2921663747 
机器学习

密码:pcshide

测试数据:https://pan.baidu.com/share/init?shareid=1950975130&uk=2921663747 
密码:pcsh学习

训练数据包括用户的基本属性user_info.txt、银行流水记录bank_detail.txt、用户浏览行为browse_history.txt、信用卡帐单记录bill_detail.txt、放款时间loan_time.txt,以及这些顾客是否发生逾期行为的记录overdue.txt。

评分标准:

0?wx_fmt=jpeg

0?wx_fmt=jpeg 
0?wx_fmt=png

解决方案概述

本题不少关键属性被脱敏处理,好比时间戳和全部金额的值,这个对咱们进行特征构造带来不少的影响,损失了不少业务信息。不过对于参赛者都是公平的,于是咱们构造了大量的统计特征,根据模型及线上反馈最佳特征大多来自用户浏览行为browse_historybill_detail,此外发现放款时间也是个强力特征,详细见代码部分。这里只放了我我的的代码,队友的特征工程不少相似的,也有一些独特之处,这里说几个思路:bill_detail表的特征按放款时间分为放款前放款后分别统计(还能够尝试多划分几个时间窗再统计)、基于熵的分箱处理(特征离散化)、排序特征、组合特征等,有兴趣能够本身去实现。模型方面,我本人主要玩了xgboost和lightgbm,队友也基本上是xgboost、RandomForest,在玩Stacking融合的时候还上了ExtraTreesClassifier和Logistic Regression。


模型设计与模型融合

  • 单模型: 
    仍是玩的大杀器xgboost,简单粗暴,而后进行了一些调参工做。我的单模型成绩最佳到0.443+,Top35,队友也基本玩的xgb,组队后你们作了特征融合,单模型能到0.455+,线上Top20。


  • mic加权融合: 
    后期单模型到极限了,也可能咱们特征水平有限,已经很难经过特征工程和调参提高成绩了。因而开始玩融合,参考了“不得直视本王”的解决方案,对不一样的模型结果计算mic值对比相关性,而后根据线上以及线下的评分进行加权融合,记得那天在群里就模型简单加权融合仍是完善特征工程或是优化验证集等等讨论好久,最终决定仍是尝试一下mic,结果当天提高到0.46+,直接Top10了。


  • Stacking模型: 
    再玩mic加权融合的同时,咱们总结了成绩提高的缘由,就是模型多样化。不一样的模型结果(不一样特征集或者不一样的样本集或者不一样的模型)融合才能获得好的结果,能够有效避免过拟合。抱着学习的态度,咱们开始尝试stacking融合,边学边作,这个轮子是队友找来的,咱们对它进行了一些修改,作成了咱们本身的stacking轮子。 
    主要思路是:根据最佳单模型的xgb特征评分排名将特征集份量两个子集(一、三、5….和二、四、6…)做为基模型的训练集。基模型包括ET、RF、Xgboost,3个基模型分别训练这2个特征子集,保证相同的cv和seed。这样训练完成获得验证集的预测值拼接成新的训练集,一共能够获得6个新特征(2组特征子集,3个模型),最后第二层基于这些新特征训练ET模型,这里能够加上一部分你的原始特征,也能够组合新的特征,这些都值得尝试。Stacking的过程是很是耗时的,由于须要跑多个模型以及屡次cv,我16G内存,i7 cpu跑一次完整的须要七八个小时。至于Stacking带来的提高,本次比赛并无带来火箭,不如mic加权组合。 
    stacking的思路能够参考下面这张图,若是难以理解建议多查资料或者直接请教别人,而后看代码实现,我一开始也是以为懂了,可是用起来发现细节仍是不清楚。 


    0?wx_fmt=jpeg
    相关博文: 
    http://mlwave.com/kaggle-ensembling-guide/ 
    http://blog.csdn.net/a358463121/article/details/53054686#t18


我的总结

抱着学习的态度从DC群老段子的开源代码玩起,一步步慢慢提高,年前玩到Top40,而后过年荒废了十来天,回校的时候成绩已经70开外,因而开始新一波努力。在这个过程当中认识了如今的队友,边交流边提高,能够说若是咱们没有组队,咱们四我的都到不了Top10,所以我再次以为打比赛仍是要团队协做,这样能够互相佐证思路,实现更多的想法,完成更多的思路,学习到更多的东西。并且当你有队友之后,你会变得更加投入,每一个人都有责任感。在群里争论,产生分歧,最后你们统一想法,完成提交。基本天天早上开始各自实现思路,晚上八九点开始讨论融合,十二点前完成提交,有时候由于取得突破激动的很晚才能睡着,也有最后一天最后一搏失败后的互相安慰,这种体会真的很棒。总之很是感激本次比赛的各位队友们,让我真正体会到比赛的乐趣。


多看以往的大神总结,wepon大神的github吐血推荐!!!https://github.com/wepe ,本次比赛主要参考了他们去年微额借款用户人品预测大赛冠军解决方案以及拍拍贷风险控制大赛铜奖解决方案,干货多多!

此外还有:金老师的知乎专栏:https://zhuanlan.zhihu.com/jlbookworm ,收录了各类大神解决方案和开源代码。


via http://blog.csdn.net/sb19931201/article/details/56315689


人工智能大数据与深度学习

搜索添加微信公众号:weic2c

640?wx_fmt=png

长按图片,识别二维码,点关注



大数据挖掘DT数据分析

搜索添加微信公众号:datadw


教你机器学习,教你数据挖掘

640?wx_fmt=jpeg

长按图片,识别二维码,点关注