二等奖方案|2021 CCF BDCI个贷违约预测赛题@番禺吴彦祖 队解题思路

今日分享:中原银行「个贷违约预测」赛题二等奖获奖方案

赛题链接:https://www.datafountain.cn/competitions/530

 

团队简介

获奖团队:番禺吴彦祖

我们团队是来自华南理工19软件工程2班的同班同学,虽然我们性格各异,喜好也有所不同,但平时在一起却很合拍,学习、娱乐都形影不离。这次的比赛给了我们一个能够一起学习,一起进步的机会,虽然中间遇到种种挫折,但我们通过合理的分工、有效的沟通、成员之间取长补短,耐心努力地去克服一切困难,并最终战胜了它们。我们是一支有实力队伍,我们年经、充满活力,为了心目中那份梦想而努力追逐,持之以恒,哪怕遇见再大的风险、再大的浪,相信我们也会有默契的目光。我们队伍名称是番禺吴彦祖,相信我们永远帅气。

摘要

为进一步促进金融普惠的推广落地,金融机构需要服务许多新的客群。银行作为对风险控制要求很高的行业,因为缺乏对新客群的了解,对新的细分客群的风控处理往往成为金融普惠的重要阻碍。本文利用已有的与目标客群稍有差异的另一批信贷数据,通过迁移学习捕捉不同业务中用户基本信息与违约行为之间的关联,解决了目标客户群信息量过少的问题 。同时,利用数据量巨大的那批信贷数据,通过多层数据增强,以及和金融领域相关的知识构建更具有代表性的特征,大大提升了对用户违约预测的准确率。

关键词

迁移学习、数据增强、特称工程

数据预处理和特征工程进行数据增强

赛题主办方为我们提供train_public内部数据训练集和train_internet外部数据训练集以及test_public测试集,先对数据进行分析。

数据预处理

通过查看train_public数据信息,共10000条39个不同属性,我们做了如下预处理:

  1. 对于离散型或连续型的数值,可以直接作为模型训练数据,而除此之外的字符型类别属性、日期、以及其他文本类数据,不能直接代入模型进行处理,需要进行数值化预处理工作;对于日期类属性,我们通过分离年月日,提取多尺度特征;而对于离散的字符型以及文本类型,我们通过映射方法将他们转化为离散的数值,从而能够直接使用模型进行训练。

  2. 缺失值填充,work_year、pub_dero_bankrup等属性均有缺失值的存在,我们通过KNN对缺失值进行填充。

  3. 错误信息的处理,通过对训练集各属性的观察,我们发现在有些属性之间有着明显的依赖关系,如本赛题中的early_return与early_return_amount,,当early_return 大于0时表示有提前还款的记录,根据常识可知提前还款的数额即early_return_amount也应该大于0,但通过数据可看到train_public中存在于此结果矛盾的数据,因此我们将early_return大于0且early_return_amount等于0的数据中,early_return属性值改为1,让数据更加准确。

特征工程

特征工程目的是为了将原始数据特征转化成能够更好的反映问题本质的特征,这是我们本次比赛的工作重点。作为与金融方面相关的赛题,我们结合了金融领域的知识,做了以下特征工程,包括特征构造和特征组合:

1. 在提前还款次数中提取出是否提前还款这一特征。

通过查看原始数据中early_return与isDefault的关联矩阵发现,二者有着很大的关系,再观察该属性中是否违约的柱状分布图,发现只要early_return大于0,其对是否违约的区分作用就非常明显,因此我们新增加了是否提前还款这一特征。

2. 在贷款类型class属性中提取出是否为A类贷款

同样观察isDefault在class中的柱状分布图,发现除了在A类属性中违约概率较低,其他类别的贷款中违约概率相近,因此提取出是否为A类贷款这一属性。

相同的方法也用在是否有房上。

3. 特征组合

将scoring_high与scoring_low组合得到一个能评估用户平均分的属性

通过数据预处理及特征工程进行数据增强,让模型训练更加准确,最终也体现在成绩上。

表1:数据增强效果

模型构建

在本次赛题中我们选用了CatBoost训练模型,该模型具有以下优点:

  1. 高效的模型质量,采用默认参数就可以获得非常好的结果,减少在调参上面花费的时间

  2. 支持类别型变量,无需对非数值型特征进行预处理

  3. 准确性,提出一种全新的梯度提升机制来构建模型以减少过拟合

  4. 快速预测,即便应对延时非常苛刻的任务也能够快速高效部署模型[1]

不需要在调参上花费太多时间以及其高效的性能,符合我们本次赛题的要求,他也是我们测试的几个模型中性能最优的。

而在对模型训练的过程中,我们采用五折交叉验证,来减少数据过拟合和选择偏差的问题。

多步迁移学习进行数据扩充

在目前的数据挖掘项目中,数据量仍是限制模型性能的关键因素,在本赛题中同样遇到该问题,一开始我们对测试集的预测始终只使用官方提供的train_public训练集进行模型训练,虽然通过在数据增强与模型优化的种种工作,让我们取得一定的成绩提升,但始终不够理想,模型性能仍未达到要求,于是我们把重点放在了官方提供的另一个训练集train_internet上,该训练集虽然与内部训练集有着一定的特征差异,但存在大部分的相同特征,且数据量大,如果能将里面的数据迁移到我们的内部数据中,就能让模型训练更加准确,于是我们就这一想法进行了多步的迁移学习进行数据扩充。

第一步相似数据扩充

通过「对抗验证」从train_internet表中找出部分较为符合train_public表分布的数据 ,步骤如下:

  1. 将train_public数据的target设置为1,将train_internet的target设置为0,合并两个表

  2. 选择LIGHTGBM模型,训练模型分辨两个表的数据。

  3. 将训练好的模型预测概率较高的internet数据挑选出来,作为第一步数据扩充,与原始训练集train_public结合构成train_public_1,将新训练集进行模型训练,预测测试集,如表2结果,模型性能提升。

第二步正确数据扩充

使用模型对train_internet进行预测,找出能正确预测的外部训练集数据,步骤如下:

  1. 将第一步扩充后的数据train_public_1作为训练集代入CatBoost模型进行训练,训练完模型对train_internet数据进行预测,预测结果如图1。

  2. 取阈值0.05,我们发现isDefault在0~0.05部分的数据预测结果完全正确,这部分数据可以迁移作为我们训练集的一部分,取得数据与train_public_1结合构成train_public_2, 对测试集进行预测。结果如表2,模型性能进一步提升。

图1:train_internet预测结果分布图

测试集分类预测:

由于3.2中使用了train_internet中预测正确的数据进行迁移学习扩充训练数据,但是通过查看该部分数据发现,所有数据中的early_return全部为0,即说明该部分数据在区分是否违约时仅仅依赖该属性就可以进行分类,这显然不符合原始训练集train_public中的分布,因此我们使用分布预测测试集。

  1. 将测试集划分成有提前还款与无提前还款两部分,命名为test_public_1,test_public_2.

  2. 对于两部分测试集分别使用不同的训练集进行模型训练,对于test_public_1我们选择使用的train_internet预测结果为0~0.05中的数据,该数据中全为提前还款,结合train_public_1构成train_public_3

  3. 而对于test_publice_2我们使用train_internet预测结果为0.03~0.10的数据,里面含有未提前还款的数据,结合train_public_1构成train_public_4

  4. 将预测出来的结果合并,结果如表2,性能相较于统一预测的结果,性能提高

将测试集迁移称为训练集,第三步数据扩充

由于模型此刻已经达到一定的性能,预测结果较为准确,因此我们尝试将测试集中的在一定阈值内的数据迁移至训练集,进行进一步的数据扩充,步骤如下:

  1. 将3.3预测出来的测试集进行分类,取出预测结果小于0.5的数据集,并将预测结果设为0,取出预测结果大于0.68的数据集,并将预测结果设为1,一起加入到训练集train_public_1中,作为新的train_public_1训练数据。

  2. 重复3.2, 3.3的数据扩充,测试集分类预测,得到最终的提交结果,为了避免过多的测试集作为训练数据而造成模型过拟合,我们只进行了一次的测试集数据迁移,得到最终的模型最优性能。结果如表2.

表2:多不迁移学习进行数据扩充

致谢

首先要感谢我的赛题指导老师,华南理工大学软件学院的蔡毅老师,蔡毅老师作为我的数据挖掘授课教师,其有趣的授课方式为我打开了一道通往数据的大门,让我对身边无处不在的数据充满了兴趣。蔡毅老师还鼓励我们将理论知识用于实践,参加本次比赛,在比赛中运用理论知识,真切感受数据的魅力,同时对我们的赛题进行指导与知识分享,让我们能一步步的克服困难。其次我要感谢的是身边一起努力的这群同学,本次比赛我们有很多同学参加,大家在比赛中积极讨论,互相学习,互相帮助,正是有了这种良好的学习氛围,才让我们充满斗志,不惧挑战。最后要感谢CCF_BCDI赛事主办方以及中原银行的工作人员,是你们给了我这样一个机会,去学习新的知识,面对新的挑战,才能有了突破。

感谢所有参与本次比赛的同学与幕后工作人员,给了我一个如此美好的比赛环境,让我们能公平竞争,共同进步,感谢!

参考

  • [1]. Andrey Gulin. CatBoost官方文档

—End—

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值