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

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

团队简介

获奖团队:Faulty

单人参赛,广发银行机器学习工程师,主要工作是AutoML与隐私计算的研究与应用。

摘要

本赛题要求利用已有的与目标客群稍有差异的另一批信贷数据,辅助目标业务风控模型的创建,两者数据集之间存在大量相同的字段和极少的共同用户。此处需利用迁移学习捕捉不同业务中用户基本信息与违约行为之间的关联,帮助实现对新业务的用户违约预测。

赛题解决方案包括线下验证方案、迁移方案、特征工程方案、建模方案、行业解决方案等五部分。

关键词

迁移学习,违约预测,AutoML

概述

为解决来自政府、企业真实场景中的痛点、难点问题,针对赛题要求,结合项目经验,提出赛题的解决方案,主要包括五个部分:

(1)线下验证方案为小样本验证集的线下验证方案,确保在有限的提交次数外也能获得稳定的线下验证分数。

(2)迁移方案主要是为了解决在数据分布不同的情况下如何使用网贷数据扩充信贷数据,以达到超越单纯使用信贷训练数据的效果。包括权重调整方案与特征调整方案,每个方案中又包括了模型方法与手工方法。

(3)特征工程方案采用的主要思路是部分业务衍生特征配合暴力生成后进行特征筛选的模式,整个特征工程与建模过程尽量减少手工干预,降低建模门槛。

(4)建模方案采用开源AutoML框架AutoGluon,可通过一行代码实现特征预处理、多种模型的构建与调参、模型融合等一系列复杂工作,并得到较好的效果。

(5)行业解决方案针对新客群数据与负样本数据缺失问题,结合个人项目经验,提出了迁移学习以外的方案,包括联邦学习与模型可解释性。

线下验证方案

信贷数据与网贷数据分布有所差异,且不同的迁移方案会造成结果不可比,需采用与测试集分布相似的信贷训练数据作为线下验证集。由于信贷数据数据量较小,抽出一部分用于验证结果不太稳定。这里采用k-folder对信贷训练数据与网贷数据进行训练,使用信贷训练数据的OOF分数作为线下验证分数,该分数与线上结果同增同减。

图1:线下验证方案

这个方案也有例外情况,部分迁移方案会造成结果对信贷训练数据过拟合,而测试集效果不甚理想的情况。此时可以直接使用测试集进行线上测试。

迁移方案

对网贷数据迁移到信贷训练数据的方案,我们进行了两个大方向上的探索,分别是样本权重调整和特征分布调整。主要思路是让最终的训练数据分布与测试集分布相似,以达到超越单纯使用信贷训练数据的效果。

权重调整方案

权重调整方案主要关注将与测试集更相似的数据权重提升,打压与测试集相似度低的数据权重。该权重可以在模型的抽样权重参数进行调整,而权重的选择可以通过模型或专家经验进行调整。

模型方案

我们采用对抗验证的思路,将训练集与测试集作为目标值进行建模预测,评估两份数据集的总体相似程度,并通过模型分数从中筛选出与训练集中与测试集分布最相似的部分作为验证集。这里采用网贷数据与信贷数据的数据源作为目标值进行建模,每条记录的分数作为该条记录的权重输入到最终违约预测模型中。

专家经验方案

通过专家经验手工调整网贷数据与信贷数据的权重,增加信贷数据在训练集中的权重,在本赛题中需要进行实验尝试。

数据筛选方案

数据筛选方案是权重调整的一个特例,即将部分数据的权重调整为0,只将筛选后的数据子集放入模型。

筛选网贷数据

筛选网贷数据的方式很多,赛题中baseline的筛选方式为以信贷训练集单独训练模型后对网贷数据进行预测,违约概率小于0.05的数据加入到训练集之中。除此之外,还有多种维度进行筛选,如将0.05改为其它阈值、模型预测正确的数据、模型预测错误的数据、对抗验证中与信贷数据更相似的数据等等方案。该方案基于模型,实验结果会有较大差距。

引入测试集数据

赛题中一个baseline将部分测试集数据加入到训练集,效果有所提升。其原因应该是信贷数据违约情况较少,在模型判断违约概率较低时正确率非常高。该方案可通过调整阈值获取稳定的提升。

特征调整方案

通过对各个基础特征进行EDA或使用PSI对特征稳定性进行验证,都可以得出网贷数据与信贷数据中分布不同的特征。特征调整方案聚焦于分布不同的特征,将两个数据集中分布有差异的特征进行调整。

分箱方案

可以对分布有差异的特征进行等频/等距分箱,减少分布差异带来的影响。在实际场景中我们可以通过业务经验进行切分,如贷款评分这个特征,当我们假设客群类似,只是分数体系有所差别的时候,可以简单地对两个数据集的信用分分别采用等频分箱然后合并。但当我们认为网贷用户比信贷用户更为不可靠的时候,我们也可以将网贷用户的评分分箱做一定的调整后映射到信贷分箱中。在本赛题中,由于缺少背景信息,则要通过建模的效果来决定采用哪种分箱方案。

数据仿真假设

这里的发现源于对数据探索过程中的疑问,贷款金额这个特征的数据中会呈现某种奇怪的形式。比如贷款金额中存在17272.72727这类不太可能出现的金额数,同时数字上出现两位循环模式。这样的数字模式一般是整数除11后出现的,我估计这与数据模拟仿真有一定联系。当数字乘11后,再除9-12后,会出现大量在网贷数据中出现过的贷款金额。于是我有一个猜测,这些数据是根据网贷数据进行转换后产生的。同样的模式也出现在了贷款利率、债务收入比、周转余额、循环额度利用率、贷款评分中。从分布的形态、参数看,这个假设具备一定的合理性。

依据这个假设,可以衍生出两种处理方案。

还原特征方案

最直观的方式就是对这些仿真数据进行还原。这具备一定可行性,以贷款评分为例,通过对网贷数据的观察,我们认为它满足如下三个条件:

  1. 这个数为整数

  2. 这个数大概率出现在网贷数据的贷款金额中

  3. 这个数字以0或5结尾

这样即可通过穷举模式进行计算与还原特征。但是这个方法在多数特征中无法生效,因为较多情况下满足条件的转换并不止一个。仅有像贷款评分这类整数部分以0或5结尾的数据会比较容易还原。

图2:通过穷举还原信贷分数

调整网贷特征方案

从贷款评分的调整方法看,这种仿真调整与结果并没有相关性,并且调整之间也有一定独立性。于是我们可以在网贷数据上进行同样的调整,让数据变为相同分布。

提前还款特征处理方案

提前还款相关特征是赛题中与结果相关度最高的特征,同时也是网贷与信贷数据分布差异较大的特征,这里进行单独讨论。提前还款相关特征中存在统计规律,其中3月内还款与总还款额呈现出均匀分布,而还款次数呈现以3为中心的分布。与此同时数据中出现了还款次数为0而还款金额不为0的情况,我们假设这三个特征有某种生成关系,其表征的信息量有冗余。将三个特征合并为是否有提前还款一个特征后,其模型效果优于对三个特征进行各类衍生,也可以间接验证这个假设。

特征工程方案

特征工程采用的主要思路是业务衍生特征配合暴力生成交叉统计特征,之后进行特征筛选的模式,采用这样模式是出于工作原因,希望整个特征工程与建模过程尽量减少手工干预,降低建模门槛。

特征筛选

采用置换特征重要性(Permutation Feature Importance)作为特征筛选方法,通过将每个特征随机排列后重新让模型预测,得出相应的分数变动。

该方法是模型无关的方法,适用于各种模型。同时可以针对不同数据子集单独进行评估,更好的区分模型在不同数据分布上的效果。

图3:置换特征重要性

模型方案

建模方案采用开源AutoML框架AutoGluon,可通过一行代码实现特征预处理、多种模型的构建与调参、模型融合等一系列复杂工作,并得到较好的效果。

多模型融合

AutoGluon框架中的表格数据模块可以自动训练包括LightGBM、CatBoost、XGBoost、TabularNeuralNet、Extra Trees、Random Forest、KNearestNeighbors等一系列模型,并根据效果自动进行模型融合。为便于生产上线工作,框架提供模型蒸馏功能简化模型,对生产环境十分友好。

图4:AutoGluon的自动模型融合

模型效果

我们在行内进行的测试中,AutoGluon优于专家建模1%-3%,对比新手有5%-10%的提升。本赛题中成绩为0.90474308,排名第二。

图5:赛题模型方案

行业解决方案

针对这个赛题对新客群数据的缺失的解决方案,除了迁移学习之外,我们认为还可以通过联邦学习引入外部数据与挖掘内部数据两个方向去提出解决方案。

引入外部数据

联邦学习使数据可用而不可见的特性让企业间实现合法合规的数据共享,目前联邦学习可以引入三大运营商、银联、字节、腾讯等数据,其数据覆盖面足够广,且用户刻画足够深入。银行可以从中获取大量新户数据,对贷前风险管控有较大作用。一些细粒度的行为数据,也可以很好地补充银行在这方面的数据缺失,对存量客户的贷中管控仍有很大意义。新网银行发起的银行同业实时联合风控联盟是一个较好的案例,联盟成员通过隐私计算共享实时多头数据,优化贷前与贷中的风险管控。

挖掘内部数据

由于缺少可解释性,风控模型往往不会使用复杂模型。可以采用SHAP等模型可解释工具对单条黑样本进行分析,为业务提供模型洞见。结合业务经验与模型洞见,业务专家可以更快发现少量黑样本背后的规律,充分利用现有黑样本信息,进而缓解黑样本不足带来的问题。

参考

  • [1] Zygmunt Z.,Adversarial validation,http://fastml.com/adversarial-validation-part-one/

  • [2] OrangeGet,样本扩充法,

  • https://discussion.datafountain.cn/articles/detail/582

  • [3] 庐州小火锅,零基础风控学习赛TOP方案,https://blog.csdn.net/qq_31367861/article/details/111145816

  • [4] Aaron Fisher, Cynthia Rudin, Francesca Dominici,Model Class Reliance: Variable Importance Measures for any Machine Learning Model Class,https://arxiv.org/pdf/1801.01489

  • [5]Nick Erickson, Jonas Mueller, Alexander Shirkov, Hang Zhang, Pedro Larroy, Mu Li, Alexander Smola,AutoGluon-Tabular: Robust and Accurate AutoML for Structured Data

    ,https://arxiv.org/abs/2003.06505

—End—

二等奖方案|2021 CCF BDCI个贷违约预测赛题@Faulty 队解题思路相关推荐

  1. 一等奖方案|2021 CCF BDCI个贷违约预测赛题@雅俗共赏 队解题思路

    今日分享:中原银行「个贷违约预测」赛题一等奖获奖方案 赛题链接:https://www.datafountain.cn/competitions/530 团队简介 获奖团队:雅俗共赏 翟亚雷,现就读于 ...

  2. 贷款违约预测--赛题理解

    比赛连接https://tianchi.aliyun.com/competition/entrance/531830/introduction 赛题理解: 赛题以金融风控中的个人信贷为背景,根据贷款申 ...

  3. 【算法竞赛学习】金融风控之贷款违约预测-赛题理解

    Task1 赛题理解 赛题以金融风控中的个人信贷为背景,要求选手根据贷款申请人的数据信息预测其是否有违约的可能,以此判断是否通过此项贷款,这是一个典型的分类问题.通过这道赛题来引导大家了解金融风控中的 ...

  4. 零基础入门金融风控之贷款违约预测—赛题理解

    赛题数据 赛题数据来自某信贷平台的贷款记录,总数据量超过 120 万条,包含 47 列变量信息,其中 15 列为匿名变量.从中抽取 80 万条作为训练集,20 万条作为测试集A,20 万条作为测试集B ...

  5. 2022AIWIN大赛-发债企业的违约风险预警赛题Baseline

    转自AI Studio,原文链接:2022AIWIN大赛-发债企业的违约风险预警赛题Baseline - 飞桨AI Studio 1 赛题背景 自2014年我国债券市场"刚性兑付" ...

  6. 【比赛向】东京证卷交易所预测-赛题理解(Kaggle_2022_Structured Data)

    [比赛向]东京证卷交易所预测-赛题理解(Kaggle_2022_Structured Data) 比赛地址:https://www.kaggle.com/competitions/jpx-tokyo- ...

  7. 2021年 美国大学生数学建模竞赛 赛题发布!【英文原文 中文翻译】

    原文链接[微信公众号:校苑数模   ]:2021年美国大学生数学建模竞赛赛题发布! 原文链接[微信公众号:校苑服务号]:[中文翻译]2021年美国大学生数学建模竞赛赛题! [2021美赛赛题(英文原文 ...

  8. 天猫用户重复购买预测赛题——赛题理解 + 数据探索

    天猫用户重复购买预测赛题--赛题理解 + 数据探索 理论知识 1. 赛题信息 2. 评估指标 AUC 3. 查看数据样例 4. 缺失值查看 5. 查看数据分布 6. 探究影响复购的各种因素 理论知识 ...

  9. 第一次认真的二手车交易价格预测--赛题分析

    二手车交易价格预测--赛题分析 数据比赛步骤 一. 赛题分析 1.1 学习目标 1.2 了解赛题 1.2.1 赛题概况 1.2.2 数据概况 train.csv 1.2.3 预测指标 一般问题评价指标 ...

最新文章

  1. MDX学习笔记(整理) MDX语法
  2. 一个参数一个Excel表,让你玩转Pandas中read_excel()表格读取!
  3. JavaScript 模块化七日谈
  4. Matlab gatool使用方法
  5. 查看mysql字段的编码_MySQL查看和修改字符编码的实现方法
  6. iangularjs 模板,AngularJS模板中的三元运算符
  7. bash 函数内部变量_使用源命令将函数和变量导入Bash
  8. c/c++ 内存对齐
  9. HTML Agility Pack 搭配 ScrapySharp,彻底解除Html解析的痛苦
  10. 用 Python 创建你自己的加密货币(附源码)
  11. 【深入浅出通信原理-学习笔记】通信系统概述
  12. 在线流程图和思维导图开发技术详解(一)
  13. cupsd进程_CUPS 简介
  14. 大学计算机课程制作生日卡片,计算机《制作生日贺卡》教学设计.doc
  15. 魔术表演的核心秘密(一)——开篇简介
  16. java对接钉钉发送消息通知
  17. 深度解析京东个性化推荐系统
  18. 茅山煤矿轶事(三)--拖拉机
  19. mybatis的<choose>和<otherwise>使用
  20. 进入IT互联网行业一定要报培训班嘛?

热门文章

  1. 开源软件贡献者Top 10!第一名当之无愧!
  2. dubbo启动报错 用法: appletviewer options url 这个是为什么
  3. VMware为Linux生成新的Mac地址(克隆虚拟机时可以用)
  4. S32K144 bootloader 方案设计
  5. 【精准三点定位求解汇总】利用Python或JavaScript高德地图开放平台实现精准三点定位(经纬度坐标与平面坐标转换法求解、几何绘图法求解)
  6. 【学习日记】接口安全
  7. 抖音短视频SEO优化排名方法
  8. matlab数据采集柜,MATLAB数据采集工具箱
  9. mysql 快速查询变更记录_MySQL学习笔记(7)—— MySQL 查询/更新数据记录
  10. 汽车软件刷新——当前安全访问策略的缺陷及改进方案