前言

生命里面碰到了很多愿意无偿帮助我,教导我的同事和领导。他们有的给我技术上的帮助,有的给我工作上的宽容,有的给我自由发挥的机会。也许未来所完成的每一件事情,都是他们力量汇聚的结果。而我所做的,不过就是记录而已 。

最开始有尝试认真更新一下公众号和专栏,应该是2018年底,决定写书的时候,然而到现在也没有踏踏实实地去写过一篇好文章(怕写出来书就没人看了)。当时在龙威的启发下,我第一次意识到,我们要着重培养自己解决问题的能力。

解决问题的能力 = 业务理解能力 + 工程实现能力 + 技术创新能力

  • 业务理解能力,会随着工作经验的积累,自然而然地进步;

  • 工程实现能力,会跟随着岗位的属性不同,而产生差异化的积累;

  • 技术创新能力,则全靠刻意练习;

为了能够通过刻意练习的形式,提升自己的创新思维。当时想的特别美好,我就写一些:

  • 书上见不到的东西

  • 不要人云亦云的东西

  • 带着自己思考的东西

最后又加了一条,曾帮助过我的前辈们,口口相传的东西 。

后来书出版了,也慢慢地培养了一些自主思考的能力。虽然整个过程,慢慢见识到了人言可畏。不过还是有很多收获的,一是确实收到了很多很多的感谢和支持,二是现在学习对于我来说是唯一能解压的事情,念书时候的我一定想不到,抱着爆米花啃着炸鸡看书上网课成了我的业余消遣。偶尔看个剧反而会心慌。所以我又带着《智能风控》第二本回来了。

希望五月内大家能见到它吧。然后开始今天的正文 。

⭐️目前常用到的算法分别是:

  • 逻辑回归

  • 决策树

  • 集成树模型

  • 循环神经网络

  • 因子分解机

  • 高斯混合模型

  • 孤立森林

  • Louvian

  • Node2Vec

  • 图卷积神经网络

  • Bert

当然上述的算法更像是某类算法的代表,比如FM效果其实和LR没啥区别,上面写的因子分解机更倾向于DeepFM这些算法,比如xDeepFM算法的效果又比DeepFM效果好一些(可是我并不知道怎么把xDeepFM搞成分布式的,就不说了),也有同学表示CatBoost效果吊打LightGBM,等等。见仁见智的部分就不展开了。

Part1.监督训练

对于监督训练任务来说,换算法是愚蠢的行为,这也是很多人觉得搞算法没用的根本原因。从LR换成XGBoost/LightGBM/CatBoost之后,结构化数据的表现就已经陷入瓶颈。神经网络其实也没有在这一块有特别明显的优势。我自己改了很多数据形态用来适配各种CNN结构,使其拥有拓扑关系,就目前来看效果OK,但还有待持续追踪。对于平台的风控能力来说,这时候更重要的是客群质量、数据源以及模型的鲁棒性等等。利率改一改,贷后催收,引流方选择,都能直接影响收益。扩充多个纬度的数据源,对模型的提升也远超算法本身,更何况我也演示过,对特征做些改动LR效果就能直逼XGBoost。

注意一下,而且这里的鲁棒性,不是简单地说模型要在开发样本和时间外样本上PSI很稳定,那你把PSI大的变量都删掉就可以了。更多的是尝试去克服零样本学习(zero-shot learning)问题。

当然,这和传统意义上的零样本还有些不同。因为从类别上来看,样本是有的,只是分布差异很大。也就是很多变量取值,其实是没有出现在开发样本中的。这时候精度越高的模型,或者越仔细的分箱(binning)处理,越可能造成离线时间外样本KS很高,线上场景过拟合的奇怪现象。这也是为什么从业者会经常强调,不要一味追求模型的离线效果(KS/AUC)。因此很多时候,大家更倾向于使用效果没那么好,但是结构透明,决策逻辑没太大问题的模型。

⭐️看看结构化数据上的监督模型。

逻辑回归(LR)和决策树(DT)应该是风控用的最多的两种模型,前者用于评分卡,后者用于决策分析产生策略。有时候也用后者做一些特征工程,提取交叉特征给前者使用,毕竟逻辑回归只能对特征的全局进行加权求和,决策树特征工程的引入可以为评分卡模型增加一些非线性能力。然后通过与一些迁移学习算法相结合,也可以获得对应的学习能力。书上有一个通过权重转移实现迁移评分卡的案例。之前文章中也有发过如何通过Tradaboost逻辑实现不同模型基于样本的组合迁移。

各种比赛中大放异彩的集成模型(Random Forest/XGBoost/LightGBM/CatBoost)也被用在很多金融科技公司(这里本身是不想提到RF的,我理解它是集成模型的里程碑,但是从没在我的任何一个任务上,超越过LR模型。可能是因为我特征工程的部分被他的精度优势都做进去了,LR又因为复杂度低而稳健)。这块其实只要不具体到每一个客户究竟被哪一个特征扣了多少分的话,SHAP是可以提供解释性支持的。虽然是基于开发样本均值,这不影响根据业务逻辑判断变量趋势是否有问题,本质是还是相对透明的。而且集成模型针对业务问题,修改评价函数和损失函数也非常方便。

再用一点时间写一下自己使用集成模型的流程:

  1. 首先数值型不变,因为不需要做标准化处理,然后文本型转为woe编码;

  2. 计算IV,将大于0.5(举例)的变量抽出去做加分规则,不然模型很可能只在头部有区分能力,把对应的样本也从开发样本中去掉,有助于提高模型在中分段的区分能力;

  3. 计算相关系数,把相关系数大于0.75(举例)的变量中,IV小的那个去掉,避免特征重要性同时被削弱;

  4. 训练模型,使用SHAP删除贡献较小的特征,虽然逻辑和特征重要性差不多,但是他的一致性是个很好的性质,和书中的迭代删除效果差不多,逻辑也更简单;

  5. 计算PSI,删除开发样本和测试集以及oot上,PSI大于0.1的特征;

  6. 自动调参,和书上相同的逻辑,但是参数搜索方式建议使用贝叶斯优化或者遗传算法一类的会快一点;

  7. 逐个特征删除,个人最喜欢的一步,和书上逻辑一模一样,逐个去掉特征看oot上的ks是否提高,这一步看似使用了oot信息,但其实删特征是不会过拟合的,数据量可以的话,一般这样处理之后roc曲线几乎完全重合,线上稳定性也特别好;

  8. 从开发样本拆出30%样本,或者有测试集就直接用测试集,作为提前停止。将oot和开发样本合并,重新拟合模型,结束。

此外,对于稀疏数据,支持向量机(FM/DeepFM/xDeepFM),确实在理论上有着独到的优势,但是有多少提升还是个见仁见智的东西。只是说它存在,理论上有优势,相比于树模型,优势随着稀疏性增大而增大,但是阈值在哪,又是个默认两可的东西。

⭐️对于序列数据,现在是两种入模方法:

  • 序列特征工程,转化为结构化数据,这块在《智能风控》第二本中有详细的代码,35个函数,基本输囊括了能用上的所有角度,

  • 序列模型,比较典型的就是循环神经网络(RNN/LSTM/BiLSTM),我用过的就这三个。建议不要把隐层抽出来丢进树模型,我个人觉得是完全说不通的。原本后面接的是NN,起码也要套个LR之类的。不然效果不知道,稳定性是绝对有问题的。

⭐️对于文本数据,我只做过分类任务。

整个思路可以理解为,将一些文本数据转为词向量,或者具体的标签,用来支持其他模型。用过的模型主要是FastText/LDA/Bert,然后我就一个建议,下个预训练的Bert,在具体任务上Fine-tune一下,基本解决一切问题。还是像上面说的,搞个词向量,求求相似度还行。丢进树模型,感觉稳定性可能会差一些。

⭐️再聊聊网络数据。

其实我感觉很多公司的硬件还不支持做成实时的,所以我们来纸上谈兵,说说理论上能怎么做。和序列模型一样,我们有两种方式:

  • 网络特征工程,不用算法,把 度和各种中心度指标都计算出来,就变成结构化数据了,接下来就是丢进前面的模型。此外还有各种矩阵表示、Node2Vec啥的就不展开说了,书上该有的都有,而且我有点不知道把他们放在这里好,还是放在无监督任务里面好;

  • 网络表示学习,监督任务里面,掏出无敌大杀器GCN就完事了,阻碍它的更多是数据量。

Part2.无监督任务

无监督任务我把它分为三种吧:用户画像分析、反欺诈探索、反欺诈识别。当然反欺诈很多任务还是监督的。毕竟以无监督闻名的异常检测任务,现阶段也还是以有监督为主。

⭐️先聊聊聚类画像我是咋做的。

这一块在第二本书里面重点介绍了一下,也有代码和案例。本质就是用多种聚类算法组合,去噪增强无监督模型的稳定性,然后通过方差分析寻找簇之间的主要差异。我最常用的还是GMM。当然K-means和mean-shift也是一个好的选择。只不过有小细节需要注意一下 。

⭐️再来看反欺诈探索。

反欺诈的探索我知道的就2种方法:

  • 相关性分析,选择每类变量中最有代表性的变量出来,然后看不同类别变量的相关性,关键是找哪个本应相关却没相关,哪个应该正相关却成了负相关;

  • 离群点分析,和bad-case分析本质是一样的。想知道一些具体样本,为什么被错分。现阶段最稳定的离群检测(异常检测)方法,应该还是孤立森林吧,假设欺诈变量池有n个特征,去掉一个,用剩下n-1个特征丢进孤立森林,去看欺诈样本的召回率,这过程本质是在筛选特征,实际上还有很多思路,比如结合GMM,用这些特征去做聚类看每个簇的欺诈比例等等;

⭐️最后来看看反欺诈识别。

反欺诈识别的任务主要还是规则完成的,毕竟前面说了那么多,都只是分析过程,得到的是哪些变量可以用来作为欺诈衡量的依据,没有直接输出一个欺诈分。

模型主要还是针对网络数据来说的,聚集意味着风险 。通过社区发现,将团伙圈出来重点跟踪是一个很好的思路。这块算法用Louvian的公司比较多。其实复杂网络算法很多思路都别简单,可以看看《智能风控》第一本,个人觉得对着图挺好理解的。问题就是它还是无监督的,用来追踪不错,直接输出是否是欺诈,还是需要拍一个阈值的,比如这个团体有百分之多少的已知欺诈。然而通常都是一个欺诈都没有的,只能重点关注他们有没有开展什么多人运动。

然后很多公司,实际实操的时候还是靠监督训练把聚类结果丢进集成模型之类的,这样识别的欺诈,其实只是历史欺诈手段,现在的一个大趋势是半监督的实时欺诈检测系统,动态的更新特征,以适配与时俱进的欺诈手段。不过最近没有跟进这块,不清楚细节部分。

Part3.优化任务

⭐️采样算法,一个可做可不做,做了容易被人喷的东西。破坏解释性,破坏分布,伪科学...

总有人问多少样本可以建模,红宝书上说正负样本各1500个。但是建模的世界哪有绝对取值,就像ks高于0.2可以上线,不同模型,不同特征个数,对样本量要求也不一样。所以别纠结1400或者1600可以不可以了,问就是“好问题,但我不知道”。然后通常负样本是远少于正样本的,那我们就根据负样本的量来讨论下,分别做点啥好了。同样的,这个数就是这么一说。500还是1000说不定我每天都有个新结论。

  • 负样本在500以下,跑个决策树吧,别为难自己了,训练个模型KS 0.9,怕怕;

  • 负样本在500~1500之间,非要训练个模型,怎么办?SMOTE之类的过采样算法以及GMM之类的可以一试,去噪过程写在这里了,用孤立森林去清洗样本也一样的,具体问题要套一下异常检测适配的分析过程,然后这是针对LR模型的,而且是WOE之后的,不要把分箱分的太精细,容易线上过拟合的的部分smote之后只会放大噪声。再提一句,树模型还是不建议用SMOTE的,不合理容易出问题;

  • 负样本在1500~50000之间,正样本下采样就行了,如果担心损失信息,可以尝试基于聚类的下采样,比如Kmeans到正负样本相等之类的。

  • 负样本超过50000,随意,我觉得样本量已经对LR模型没什么影响了。个人追求变量越少越好,每次逐步回归我都只能剩下10~50个变量,不止LR,哪怕是XGBoost也是如此。

然后所有情况我都会给少数类样本加权,然后再用权重还原采样前的分布形态,不然ks报告上很多指标就有问题了。

再补充一句,正负样本1:1有助于生成的分数分布符合正态趋势。不只是因为开发样本采样之后是1:1,即使上线或者回溯大盘也会更贴近正态分布。这对于业务方交流是个好性质。我自己通常是采样到10:1的。如果分数分布不好看,还会再继续调整,毕竟业务方看着一个长尾分布(如果真实分布就是坏人多的话)的分数,还是觉得不舒服的。当然,代价是对坏人的区分能力下降,才从长尾分布变成了正态分布。

⭐️最后看看模型融合。

其实绝大多数情况下,模型的加权融合或者投票,都只是为了提高模型的稳定性。书里也提到了,遵守着好而不同的原则,通过MIC筛选差异化较大的优质模型进行融合,这种后融合的本质就是减少单个模型的波动引起的决策失误。

对于前融合的话,如果不谈神经网络中的隐层部分,基本就局限在了前文提到的,Bert从文本生成的标签做统计特征,带入评分卡,又或者类似于xgboost+lr这样的形式。前者没有什么可说的,后者个人觉得参数好好调整一下应该和xgboost本身没有特别大的区别。最开始使用这个方法其实是因为GBDT没法分布式训练,离线做这一部分,实时做lr的部分比较快。像xgboost和lightgbm其实是没有特别大的必要专门去拆解部署的。

总结

这篇文章零散地写了一些关于常用算法的想法,可能很多理解不到位的地方,还麻烦大佬们指正。顺便给即将出版的新书做预热。感谢阅读 。

盘点智能风控中的机器学习技术相关推荐

  1. 腾讯 Angel Graph 图计算框架在智能风控中的应用

    本文约6800字,建议阅读15+分钟 本文为你分享腾讯的姜亚松老师的图计算框架Angel Graph. [ 导读 ] 图计算在智能风控场景有着广泛的应用,但是图的规模和计算的复杂度往往会制约落地的使用 ...

  2. 智能风控中的全场景化的模型组合包括哪些内容

    近期某些网贷的广告,频上热搜,近有某东,远有某60,相信在大家的WX朋友圈更有大量"精彩"广告诱惑各位提前消费.于目前的政策而言,当下网贷行业的监管已达到最顶峰,网贷再也回不到巅峰 ...

  3. 生物信息学|药物发现中的机器学习技术(1)

    本篇推文引自:Advanced machine-learning techniques in drug discovery 1. 摘要:     机器学习(ML)在药物发现中的持续增长,产生了令人印象 ...

  4. 生物信息学|药物发现中的机器学习技术(2)

    本篇推文引自:Advanced machine-learning techniques in drug discovery 1. 迁移学习     如果数据量比较少,那么有一些技术可以用来规避这个问题 ...

  5. 智能家居中的物联网技术体系架构与发展现状

    物联网技术是在1999年首次被提出来的,直到2005年才正式定的.所以,物联网技术是指通过射频识别.红外感应.全球定位系统.激光扫描器等信息传感设备,按照约定的协议将任何物品与互联网连接起来,进行信息 ...

  6. 农业生产中的机器学习技术

    农业对你今天的生活有什么影响?如果你住在城市里,你可能会觉得你与生产食物的农场和田地没有多大联系,但是农业却是我们生活的一个核心部分,而我们却常常不认为是这样的. 今天的农民面临着一个巨大的挑战,即用 ...

  7. 实例 | 能源区块链、物联网技术在智能电网中的趋势及前沿应用

    近年来,移动互联网.大数据.云计算.物联网等数字信息技术得到迅猛发展,全球经济社会正在形成新的发展图景,世界各国和企业纷纷开启数字化转型之路.当前互联网数字化技术浪潮下,数字经济作为新生业态正在深刻改 ...

  8. 【智能制造】机器学习在智能制造中的应用!

    导读 制造过程中应用机器学习是进一步对制造系统进行智能赋能,实现替代或辅助管理人员和专业人员对不确定业务进行决策的能力. 文/赵熙朝 01 为什么要把机器学习 应用于智能制造 提到智能制造,不能不提到 ...

  9. 计算机在机械智能制造中的应用,机电一体化技术应用于智能制造中的优势研究...

    机电一体化毕业论文热门范文推荐10篇之第四篇:机电一体化技术应用于智能制造中的优势研究 摘要:随着科学技术手段的不断发展与更新,新的技术正不断生成,各类技术间的融合也逐渐形成优势互补.机电一体化技术是 ...

最新文章

  1. matlab练习程序(高斯牛顿法最优化)
  2. 洛谷P4016 负载平衡问题
  3. LightGBM如何保存模型?
  4. 今日头条加密参数的识别
  5. Java 8中的可重复注释
  6. jboss mysql cluster_jboss配置mysql数据库连接池
  7. JAVA入门级教学之(内存地址的引用示例)
  8. Simulink之三相半波可控整流电路
  9. 漂亮的个人团队介绍网页模板
  10. 使用mpx开发外卖小程序
  11. efs解密-Advanced EFS Data Recovery2.1-含注册KEY
  12. codeforces731E Funny Game(DP)
  13. mysql 分区表 限制_Mysql分区表使用的一些限制和需要注意的地方-阿里云开发者社区...
  14. Javascript this 的一些学习总结
  15. isfile方法_递归算法是一种直接或者间接调用自身函数或者方法的算法
  16. 工业互联网为湖南制造装上“智脑”
  17. AWS SageMaker机器学习训练营听课总结
  18. React 可视化开发工具 shadow-widget 最佳实践(上)
  19. 教你如何用两个队列实现一个栈
  20. Hspice学习资源和心得

热门文章

  1. 马赛克还原神器—Depix,真的有那么神吗?
  2. 仿豆瓣网首页(HTML+CSS)
  3. Android NDK开发(三)——常见错误集锦以及LOG使用,androidndk
  4. 多文章栏目易企CMS模板的使用
  5. 宇枫资本家庭理财七条原则
  6. 【64期分享】4款个人简历PPT模板免费下载
  7. [渝粤教育] 中国地质大学 机械设计 复习题 (2)
  8. 软件测试已经不吃香了?Sorry,职业技能教育的大幕才刚刚拉开,别再人云亦云!
  9. Windows系统如何使用命令行关机 重启
  10. 番外篇:gitlab docker版数据和仓库迁移