ATEC蚂蚁金服支付风险大赛初赛经验分享

大赛背景

基于移动互联网的线下支付、保险、理财等新金融业务快速发展,互联网金融行业不断突破创新。与此同时,潜伏在网络暗处的黑产势力也不断升级,并威胁着整个行业,其中以信息泄露导致电子账户安全最为严重,并且愈演愈烈之趋势。黑客窃取的用户信息包括社保号码、地址、信用卡信息等,并利用这些泄露信息尝试登陆盗取账号资金或盗刷银行卡,直接导致银行和第三方支付公司的用户蒙受大量经济损失。

此背景下,蚂蚁金服本次大赛希望围绕信息泄露导致账户安全威胁为课题,面向行业征集最智慧的安全解决方案,引领互联网风控核心技术发展。

大赛的地址:蚂蚁金服支付风险大赛

该地址有相应的试题介绍和数据下载。

初赛

首先拿到数据,300个特征,标签名称都没有,直接全部丢到lgb模型里面,按照默认参数,跑了一个baseline,成绩0.27,感觉还不错。

接下来按照常规流程先进行数据探索。

数据探索

先看训练数据集标签,极不平衡。

标签分布如下:

《ATEC蚂蚁金服支付风险大赛初赛经验分享》 标签分布

因此,当时就考虑可以采用常用的处理非平衡数据集的方法。

然后就查看了下数据的缺失分布:

《ATEC蚂蚁金服支付风险大赛初赛经验分享》 缺失分布

发现特征的缺失具有共性,基本上可以认为具有同样缺失数量的特征由一个原始特征衍生而来。

所以

  • 筛选特征第一步:特征缺失值较多的可以考虑拿掉,我初期是拿掉缺失80%以上的特征。

然后看具体的每个特征的数据分布:

《ATEC蚂蚁金服支付风险大赛初赛经验分享》 3.png

利用上面的方式可以查看每个特征在正常样本和非正常样本上的分布差别。

  • 筛选特征第二步:如果分部趋近一致,说明该特征提供的增益有限,可以将该部分特征拿掉。

再分析特征的相关特性:

《ATEC蚂蚁金服支付风险大赛初赛经验分享》 4.png

重点分析了缺失值相同的特征,查看两两特征之间的相互关系。

之后对特征做相关性矩阵:

《ATEC蚂蚁金服支付风险大赛初赛经验分享》 5.png

  • 筛选特征第三步:将相关性高于0.85以上的特征拿掉。

最后,参考了论坛里大家的一些方法,把训练集和测试集的数据分布放一起看数据的风险分布变化:

《ATEC蚂蚁金服支付风险大赛初赛经验分享》 6.png
《ATEC蚂蚁金服支付风险大赛初赛经验分享》 7.png

红色为训练集分布情况,黄色为测试集分布情况。分布差异较大的特征可以拿掉,如上图的f20和f266。

《ATEC蚂蚁金服支付风险大赛初赛经验分享》 8.png

训练集和测试集分布较近似的特征,可以考虑保留。

  • 筛选特征第四步:将训练集和测试集分布差异较大的特征拿掉。

经过以上四步骤的筛选,能七七八八筛选掉一些特征,接下来就可以尝试不同的模型训练过程。

尝试方法

lgb调参

先试下筛后的特征,用lgb默认参数跑出来的效果,可以到0.31。

SMOTE

一般对于非平衡数据集的采样方法有2种:过采样和欠采样

过采样对训练样本样本数量较少的类别进行采样,合成新样本放入训练集来缓解类不平衡。SMOTE就是比较经典的过采样方法。SMOTE根据两两样本之间的距离空间,随机生成新样本。这里有一篇比较好的介绍SMOTE的文章:SMOTE

欠采样则相反,它对训练样本里样本数量较多的类别进行向下采样,抛弃未选中的样本,从而达到正负样本相对均衡。

我直接调用imblearn的smote包进行训练,结果并不好,成绩甚至有下降。因此暂时放弃这个方向。

迁移学习

总结之前的思路和论坛里的经验,可以判断训练集和测试集的分布并不一致,单纯用经典的机器学习算法可能并不能得到很好的结果。因此考虑了了一个比较新的方向:迁移学习

迁移学习就是为了解决训练数据和测试数据分布不一致的情况。迁移学习可以从现有的数据中迁移知识,用来帮助将来的学习。比较经典的算法正是交大校友戴文渊大神提出的tradboost算法。

但理想很丰满,现实太骨感,tradoost的结果也不容乐观。

而自己倒偶然想到了一个方法:

用过去一个月的数据训练出来模型,做下一个月的预测;将下一个月的预测结果作为特征放入下一个月的训练中进行训练,从而得到迁移的模型,做最终结果的预测。然鹅结果一塌糊涂,过拟合严重。。。随弃

聚类方法

这个方法有点数据穿越的意思,我把训练集和测试集放在一起,采用无监督学习聚类(k_means),将数据集划分成10份样本。分别对这10份样本建模预测,结果可以提升到0.36,但是再提升就很困难,而且10个模型的调参太繁琐,最后这个方法还是放弃了。

半监督学习

考虑训练集里有一部分灰样本,尝试了比较简单的无监督算法。先用有标签样本训练模型,然后用模型预测灰标签数据,然后根据预测结果设定阈值,再讲超过阈值的数据丢回训练集训练模型,去预测测试集。结果提升不明显。

尝试了种种以上方法后,成绩提升仍不明显,仍在0.37一下,感觉到了瓶颈。

百思不得其解,于是不得不重新回到数据,后来经一个哥们提醒,找到了一个牛逼的缺失比例值,用lgb默认参数train出来的结果线上可以到0.39。。。(在此,特别鸣谢这个哥们,不然很有可能进不去复赛了

所以,不得不说,模型再好,抵不过特征选的好。

后面接下来就比较顺利了,尝试不同的lgb参数组合,成绩开始稳步提升,顺利进入复赛。

初赛总结

其实也做了很多数据分析和方向方法的摸索,但是前期效果并不理想,这里也是一个教训:在未找到合适的特征集合之前,随便就切换方向其实是一种时间上的浪费。在基本的方法还未得到一个可靠的结果之前,要考虑自己特征集合的选择是否有问题。而在得到较为可靠的结果之后,就要多方向尝试,试遍所有可能的方案(这是我们复赛的坑)。

    原文作者:越来越低调
    原文地址: https://www.jianshu.com/p/2b02608a9dce
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞