微信号:datadw

介绍:实战学习资料提供.涵盖数据分析工具使用,数据挖掘算法原理与案例,机器学习,R语言,Python编程,爬虫.如需发布广告请联系: hai299014

拍拍贷风控预测模型

2016-06-23 22:28 要学习更多点这→



kesci(科赛网)

网址:http://www.kesci.com/apps/home_log/index.html#!/competition


拍拍贷“魔镜风控系统”从平均400个数据维度评估用户当前的信用状态,给每个借款人打出当前状态的信用分,在此基础上,再结合新发标的信息,打出对于每个标的6个月内逾期率的预测,为投资人提供了关键的决策依据,促进健康高效的互联网金融。拍拍贷首次开放丰富而真实的历史数据,通过机器学习技术,你能设计出更具预测准确率和计算性能的违约预测算法吗?


简介

同样作为数据的学习者,这个作品尝试为数据预测提供一条通用的入门路径。面对大量的数据科学需求,达到较高精度的数据预测方法并非为高大上的专业人士所垄断,所以这里尝试为类似的数据预测问题搭建通用的框架,使得我们作为初学者能够熟悉大数据特征、并合宜地处置数据、模型上手时遇到的各类困难,从而较短时间内突破预测初期的精度瓶颈。

 




在进行大数据预测时,我们首先要考虑我们的样本量(9万行)、预测变量Y(二分类问题:贷款是否逾期)和优化目标(0-1之间概率预测:AUC得分)。在处理GB以内量级的数据问题时,单机 + Python是足够用的。



 

在大数据预测的过程中,很重要的一点是由于变量数量极多和种类复杂,我们需要避免一个个整理变量,而是尽量批量处理 + 自己编制函数(前人和我们自己造的各种轮子),自动归纳变量特征并解决大部分通用问题,然后把少数特殊变量单独处理。最简单的一个思维挑战:把样本量和变量数都扩大十倍,我们人工的工作量有没有变化。在最理(tōu)想(lǎn)的流程设计下,我们甚至几乎不用改动代码。

 



对于熟悉数据特征来说,单变量是最基础的,而单变量的核心就是分布,也就是哪些种类或数值露脸得比较多(频数),对于连续的数值变量,均值方差等统计量在描述分布方面更有代表性。

 


在我们人熟悉数据之后,我们就想怎么把数据交给模型了,模型智商(算数能力)比人好,但是情商(怎么理解不是数的东西,以及数不好的时候如何调整心态)不如我们。所以我们还得帮模型翻译一遍,把数据中所有不是好数的东西都变成好的数。只要我们牢记做好变量数今后随时扩大10倍的心理准备,充分运用批量处理函数,并合理设计流程,工作量并不很大。

 


统计模型的选择长期看似乎是风水轮流转,逻辑回归是最经典的线性分类模型,XGBoost是目前在机器学习竞赛表现普遍很好的集成决策树类模型,神经网络现在如此热门,但是今后也说不定有更强大的模型,况且大家都是对现实的规律进行某种形态的假设和拟合,不同模型的优势点不一样。除了单纯的精度之外,其实我们重要的是了解各个模型的原理,如何利用它们的特点和优势,为我们的数据预测工具箱服务。



 

不论什么模型,交叉验证在增加稳健性、减少过拟合方面是模型训练中少不了的经典之作。与其跟着不同模型包和语言学习调用不同的交叉验证函数,我们不妨在模型训练前就为模型搭建统一的交叉验证拆分数据和训练方法。

 


如果说之前的数据清洗还是针对各变量自身的特征的话,模型的变量评估则把变量的价值与整体预测的效果联系起来。也就是对于预测效果的重要变量,我们可以进一步通过取统计量、交叉项等方式进一步展开,让模型更充分地汲取其中的有效信息。

 


模型优化是一个让电脑最苦逼的活,如果和我一样有强迫症总在训练的时候盯着屏幕看,那么人也跟着变得苦逼了。所以为了双方都能够少苦逼一点(相煎何太急),我们先充分用脑理解模型和参数的意义,然后粗略的部分用手调参,精细搜索的部分仍然搭建函数交给电脑(电脑:说到最后还是都扔给我了不是?……人机合作的小船说翻就翻啊)。为了节省千百次训练的总时间,我们可以对精度和稳健性稍作保留,找到最优参数后再正式训练一遍。

 


在最后,我们用加权平均的方法组合模型,虽然是以非常有限的统计和机器学习知识,利用不同模型的一部分独立性在同一层次下进行线性互补,但是至少作为一个省时省力地改进单模型结果和避免增加过拟合风险的方法还是比较稳健的。

 


在整个数据预测的流程中,尽管我们不可避免地需要人的大量劳作,但是我们劳作的目的是让每一步都可以越来越自动化,也就是随着我们流程和编程技术的成熟,我们在摘要、清洗、拆分、训练、优化等各个环节都只需要越来越少的人力解决类似的问题,而把目光更加集中在需要我们的关注和投入思考的环节和工作上。

 


在我们的流程框架内,达到比赛的实际精度,我们的代码在笔记本电脑上从头到尾运行一遍大约需要2~3个小时(只是机器执行的时间,暂不考虑参数优化和人工的函数设计搭建等工作,后者是重头),因此如果有更强的需要和资源,我们可以更加投入人力物力来尝试进一步改进预测的效果。但是如果不是对预测流程有结构性的改进,那么框架内的这些改进方法预测最终会遇到瓶颈,或者可能耗时太多,或者存在过拟合风险。相比在瓶颈之上争取1%或0.1%的改进,很多时候我们有必要暂时跳出无限的改进循环,考虑我们真正关注的问题是什么。

 


首先要承认我们的模型预测能力是有助益的,但也是有限的。机器数学模型相比与人类,有着其特质的某种中立性、冷静与洞察力,帮助我们作出决策,同时也有作为机器和数学模型的局限、冷漠和短视,比如在有反馈效应的数据体系中(比如金融市场),预测长期趋势的无能为力,而模型决策趋同所产生的正反馈却可能在危机时造成踩踏风险,反而是要人的加倍照管才能够帮助一堆自助决策的模型脱离危机。所以,机器学习界AlphaGo的出现,可能并不会减少对人工作的需求,而是把人的角色从机器的竞争者转移到机器的评估与监管者上。


戳“ 阅读原文 ”找数据挖掘/机器学习资料!
↓↓↓

 
数据挖掘DW 更多文章 数据信息图工具整理 直销银行将加速进军“线上理财”业务 数据挖掘模型生命周期管理 【解析】数据产品的前世今生 【深度】电子商务精细化运营之用户分析
猜您喜欢 综合指南:何时使用 Em 与 Rem 19个必须知道的Visual Studio快捷键 简单粗暴地理解 JavaScript 原型链 C语言程序员必读的5本书 揭秘:巨头互联网公司员工啪啪啪,哪家员工更性福?