前海征信“好信杯”大数据算法竞赛 - H&M队【附源码】
赛题回顾
自2006年Hinton等人提出“深度学习”概念至今,深度学习在海量数据的挖掘分析中发挥了巨大的价值。然而对于越来越多的任务来说,特定垂直领域的数据并不足以支持系统建构,而迁移学习正是克服这一限制的重要思路。
微软全球资深副总裁Peter Lee博士在近期的采访中提出,如果所有的网络信息都成为机器学习系统的基础,那么系统就将通过迁移学习获得更个性化的信息,人工智能普及化将又迈出一大步。正是看准了迁移学习的巨大潜能,本次前海征信大数据算法赛事将赛题锁定在迁移学习方向,参赛选手需依据给定的4万条业务A数据及2千条业务B数据(均作脱敏处理),建立业务B的信用评分模型。
◆ ◆ ◆
团队介绍
我们团队分工比较明确,贺敏做的是极限学习机ELM、韩东升做的是JDA概率适配,刘伙玉和肖聪在单模型调参和特征上进行探索,韩韬负责的是tradaboost以及最后的模型融合。
接下来,我将从问题定义、特征工程、样本空间泛化、算法性能泛化、迁移模型介绍、模型融合和反思五方面来分享我们比赛的方法和经验。
◆ ◆ ◆
问题定义
首先阐述一下我们对迁移学习(Transfer Learning)问题的定义:
迁移学习或称归纳迁移、领域适配,是机器学习中的一个重要研究问题,其目标是将某个领域或任务上学习到的知识或模式应用到不同的但相关的领域或问题中。主要思想是从相关的辅助领域中迁移标注数据或知识结构、完成或改进目标领域或任务的学习效果。
而通过本次赛题所给出的业务数据我们可以看出,A、B为相似信贷业务。A业务数据相对丰富,为源数据。B业务数据较少,为目标数据。
◆ ◆ ◆
特征工程
此次赛题的数据脱敏,因此特征工程部分相对粗糙。主要使用统计特征和一些特征选择的技巧,对空值填-1,连续值取对数再取整。在特征选择上简单采用了xgb的feature_importances的属性对特征进行评分,选取了约400维度特征。在特征这部分具体优化能做得到多少我们并没有再去尝试。
◆ ◆ ◆
样本空间泛化
Garbage in garbage out,我们首先从数据分布上进行调整。在群里也有人反应smote效果并不好,估计一个是因为smote本身是用KNN,从距离的角度对数据进行扰动,但是这份数据过于稀疏,且更多的是category型的变量,所以效果并不明显,但是我们还是保留了这个做法,因为后期会对数据再次进行过滤。在过滤数据时,原本数据集之间差异比较大,而且A_train比B_train大太多,所以tradaboost的权重调整基本没有什么效果。因此我们做了一些适当调整,对A_train更严格,丢掉的更多。
◆ ◆ ◆
算法性能范化
调整样本权重和样本分布,降低Bias将B_test做伪标记,融合在训练数据中多模型投票,降低variance。
◆ ◆ ◆
迁移模型介绍
我们的想法是通过最小化边缘和条件分布显式降低两个不同但相关邻域之间差异。
首先最小化边缘分布之间的距离,判别面就可以对进行更为准确地预测;其次最小化条件分布差异,将领域间与标注数据相关的判别结构更好得对应起来。
上面两个ppt,我们是从特征的边缘概率分布上进行调整,算法如上可以看出边缘概率调整后近似一致。这种方法的实验效果在最右侧,可以看出使用的数据量越大,线上效果越好,但是限于计算能力,仅用了一半A_train数据。
算法框架中我们规定A_train为源域,B_train为辅助域,B_test为目标域,源域数据有大量的前业务数据,并且有对应的标注。B_train为新业务数据,特点是数少。B_test为目前的业务数据,需要建模预测的数据。
这一部分是我们从模型角度进行迁移,极限学习机(Extreme Learning Machine) ELM,是由黄广斌提出来的求解单隐层神经网络的算法,利用迁移思想对此算法进行调整,利用损失函数中的B_train和B_test的修正神经网络的参数。
◆ ◆ ◆
模型融合与反思
模型融合:
Tradaboost组合模型主要针对减小领域迁移过程出现的较大偏差问题而提出,利用Tradaboost来选择更合适的样本。
概率适配模型是通过同时降低领域间的边缘分布和条件分布使得领域数据更加相似。
极限迁移学习机模型主要侧重通过辅助域数据来调整模型参数,使得模型更加适用于目标领域。
总之,不同的模型侧重不同的角度,为了更全面的考虑问题,因此将不同的模型进行融合。
反思与总结:
优势:
逻辑思路与基础理论知识清晰扎实
框架扩展性强,选择性广对模型要求低
将不同的迁移学习思路所得模型进行融合,优势互补
缺点:
概率适配方法造成计算开销较大
数据脱敏,特征工程部分做的相对粗糙
这是我们关于本次赛题的整体思路展示,希望能对大家解决类似问题有所帮助。
作品图文 H&M队
小科:韩韬你好,首先祝贺你取得了这么好的成绩,据我所知这是国内第一次迁移类的赛题,在完成的过程中你觉得最大得难点在哪里?你和你的团队又是怎么去处理?
韩韬:第一个是迁移辅助样本和目标域差距太大。盲目迁移太容易伤害模型,我们团队从样本、特征和模型,三个角度迁移多样化考虑。尽量使得融合模型差异性最化。其实遇到的一个很尴尬的问题就是不迁移的模型有时候反而表现比迁移更容易表好。但是,我们在做的时候,还是坚持从迁移的要求来。
第二个问题是数据脱敏。这对数据的分析和业务理解难度就很大了。很多团队都发现了有一些特征之间数据上表现出很强的关联性比如很多特征会出现批量的空缺。但是这个我们也没有办法去验证,只能做一些常用的特征工程,主要精力放在模型上。
小科: 这次现场决赛中,有没有其他选手的解题思路让你们觉得印象深刻值得学习的?
韩韬:当然有啊,第一个当然是罗远飞啦。他答辩把我们绝杀了不过服气的,他在做模型的时候自己对数学的原理很清晰,他自己优化损失函数的那一手特别的惊艳。还有就是星合动力和龙樱他们吧,前者对数据哲学和业务理解讲的很多,后者模型简单实用。
小科:我看本次比赛你们,包括很多其他队伍你们都选择了选择使用TrAdaBoost学习框架,你个人觉得TrAdaBoost和AdaBoost比区别在哪里?
韩韬:我个人认为这两个本身就是针对不同任务的算法。虽然思想很相似。TrAdaboost会针对辅助样本做不同考虑,Adaboost没有这层考虑。如果用Adaboost会发现Atrain的比重会更占优势,毕竟大量的样本是a业务,但是这是和我们的目标是不一致的不过在应用TrAdaboost的时候也要根据实际问题调整,我觉得单纯调包的话上限不大。
小科:你个人有没有什么好的有效学习方式可以和大家分享的?
韩韬:第一个是学习上不要过分挑拣。现在网上课程资源很丰富。我在当一门课助教时,有很多人一直在问,什么书好?什么资料好?什么课好?我觉得过分问这些问题本身就是蛮浪费时间的。不过可能我目前水平有限吧,正处于野蛮生长的阶段,所以不用太挑。当然,到了更高阶的学习层次,就要斟酌了。
综上所有,我觉得最重要的还是对基本原理的把握吧,不论做什么,都要能潜心看一看这个领域基础是什么,这一点我本身也要能坚持。我本身也很局限,跟大多数人的情景一样。并不是因为我们团队做出一些成绩所以说的话有价值。希望大家自行斟酌取舍啦。