761abab97150b9c2f1088245b13d04a4
一个真实的在线授信产品风控模型

一个真实的在线授信产品风控模型

本文基于一个真实的互金公司在线授信产品风控项目,细节做了简化,基础数据不展示了(大家懂的~),但总的骨架基本都在,先来个引子

【引子】

金融领域核心就是风控,风控,还是风控,传统金融行业如满大街的cbc、abc、bc等等都会走线下竞调,所以从成本、效率、可行性啪啦啪啦一大堆指标,他们只能服务脂肪厚油水多的,要不这活太不值当,那传统金融服务范围之外庞大的群体有金融需求咋办?

互金公司开始横空出世,我们有大数据,我们有很牛的ML,我们有近乎魔术般的预测,我们可以火眼金睛识别是好人还是坏人
数据+算法=预测能力
这就是互金公司区别传统金融的风控做法,完全基于机器,客观又不累人,吼吼

【进入主题】

这是目前互金领域里很典型的一类金融产品--新消费金融分期

用户有正当消费的需求但在当下没有消费的能力,通过分期实现提前消费,对于互金公司来说这一模式里的核心是识别用户的信用程度,预测用户的这笔消费信贷在未来的某个时间有能力且有意愿归还,而预测能力来自哪里,没有上帝之眼,只有数据和算法

数据是什么:

数据就是用户行为的承载,如通话行为、消费行为、购物行为,甚至用户手机使用习惯,如APP使用类型、频次、常用时段等等(当然所有这些都是基于用户授权的前提),所以数据可以刻画用户面貌,在该项目我们会采集用户各类数据:通信数据、电商数据、APP使用数据以及基础信息,当然真实项目里采集基础上数据会做一系列清洗转换处理。

机器学习领域有个套话,数据的规模和质量决定模型的上限,算法只是为了逼近这个上限
在以后机器学习系列会详细介绍数据、算法、模型性能等唬人的术语,这里就留个坑

用数据能做什么:

又啰嗦了,数据当然能刻画用户“面貌”,那什么样的“面貌”是好人咧,有点以貌取人了,我们会根据之前已经打上了好人坏人标签的一大群历史用户来寻找一些规律,面目可憎、五官不标准的原来很容易是坏人,长的萌的有明星气质的果然是好人,好了很有成就感我们发现了其中规律,不过这样的规律总有偏颇,长的好的不定冒出个坏的 ,长的不咋地人家信用又很好,咋办?继续找其他规律,好累。。

寻找规律的事太累人了就交给机器吧,这就是机器学习,而这个项目是机器学习领域最常见的一个类型,监督型的学习场景,为什么说是有监督的,因为我们学习的用户都已经被打了标签的(好人还是坏人),都是有答案的,这类算法很多,任何一种估计都能讲上好几天,这里先不展开了,这个项目主要用的是xgboost,应该还是一个很逼格的算法,总是会出现在各类算法大赛的领奖台上,网上介绍一堆,这里就挂个该算法作者本人的一个算法说明:http://www.52cs.org/?p=429,有兴趣的可以先看看,之后会我们推出的白话机器学习系列会详细讲解。

下面就是这个项目做模型开发时候一个总体思路,这里就讲解一下当时做项目采取的一些做法,就当是这个项目一个回顾:

  • 1.数据准备阶段
    这个没什么可说的,本着拿来主义,能获取的一个不拉,实际该项目里近三百多个字段,对于模型开发来说其实也不算多,当然最终进入模型的其实没剩多少,这一阶段涉及的技术栈主要有:mysql、hive、hbase、spark、MP、python,这块大部分内容我们大数据开发负责人会推出一些文章介绍

  • 2.特征工程
    有了数据我们怎么下手,当然先会望闻问切一番
    1)缺失怎么处理?
    对症下药,不同含义的字段我们采取了不同处理手段,举几个列子,如类似芝麻分信息缺失的,我们会基于电商相关信息做回归预测填充,如年龄这类信息简单用均值随机叠加正负0.5个方差处理,部分缺失可能是第三方接口未查询到的我们不做任何处理,xgboost里空值也可以作为一类特殊的值,这里稍做展开,训练样本里有属性为空的,在xgboost树里会单独把空做为一支,如果在测试样本有属性为空的,则默认空的划到左枝
    2)异常怎么处理?
    一般用均值或众数处理,这里异常定义有些需要专家经验,有些可能违反常识,当然结合统计分布也可以考虑
    3)这么多特征有冗余吗?
    单变量主要利用方差信息,如果某个特征取值基本一致,说明信息含量太少,考虑剔除
    变量间利用特征相关性,明显强相关的结合业务理解考虑剔除
    4)这么多特征都用吗?
    前面基本都基于特征本身或特征间关系进行探索
    我们最终的目的是挑选能区分好人或坏人的强相关特征,实际项目里还用到了LASSO、LR、RF模型对特征做了重要性的帅选,LASSO主要适合基于L1的正则惩罚过滤对区分好人或坏人不重要的特征,LR是经典的传统统计模型,最后根据模型的参数可以区分特征的重要性程度,而RF是集成学习里很有代表性的一类学习算法,依据袋外误差该算法的一个附加产物就是特种重要性的排序,最后项目综合这三类算法和业务上解释,挑选了30个左右字段,从300降到30,好有成就感~~

  • 3.模型开发
    这个项目最后采用单模型,模型采用的是集成学习里很流行的一个算法xgboost
    1)为什么用单模型?
    综合考虑了模型上线复杂度和最终模型各类评估指标的效果上和多模型融合差距不大
    2)为什么选用xgboost?
    当然有比较才显示出与众不同的一面,项目用了逻辑回归,随机森林,xgboost,最后各项指标在训练测试集上xgboost都更胜一筹

  • 注:
    模型开发调试这块细节很多,这里先抛个砖,感兴趣的可以阅读,之后会在机器学习系列文章里会详细介绍分享
    样本集分割问题,训练集、测试集还有个验证集作用是什么,交叉验证怎么做,自助法又在什么情况下采用?
    这个项目里样本合计10万左右,训练用了大概6万的样本,并做了5折交叉验证保证模型结果的稳定性
    模型调参怎么回事?模型效果怎么样才算好?模型方差偏差都是什么?什么是过拟合?
    这个项目用的xgboost算法涉及的超参很多,这个网上资料很多,如果遍历搜素估计机子都会有意见,调试xgboost有时候真的是门艺术,学习率和迭代次数如何设置,树的深度、叶子节点树、叶子节点最小权重有什么讲究,正则L1和L2该加到多大的范围,所有这些参数设置不仅和样本数据有关,更重要的是需要理解xgboost算法的原理,损失函数是什么,怎么定义的,怎么优化的,树是怎么生长出来的等等。
    模型评价的指标有哪些,网上一搜又是一堆资料,很多指标其实关联性都很高,这个项目里我们主要用了ROC曲线,AUC值,KS值,拟合图,AUC值具体含义是什么,和KS值什么关系,这都需要我们理解背后的原理

  • 4.部署上线
    本次模型主要采用PMML文件形式的离线部署,模型整体上更新频次要求不是很高,会按月的时间窗口迭代更新

本文只是讲解了一下真实项目里模型是怎么做的,我们需要考虑哪些问题点,模型涉及的详细原理、细节因为篇幅考虑都未做展开和详解,这部分内容太多,接下来会专门开个白话机器学习的系列,本项目涉及的xgboost到时候也会专门介绍,本文基本是想到那写到那,有不妥地方别拍砖,点赞拉

© 著作权归作者所有
这个作品真棒,我要支持一下!
机器学习、深度学习、大数据、数据科学爱好者集结地,分享 在各自领域里的工程实践经验和应用 让我们每天进步一点点...
0条评论
top Created with Sketch.