2020第二届厦门国际银行数创金融杯建模大赛冠军方案

老肥码码码

共 3338字,需浏览 7分钟

 ·

2021-12-18 23:09

遥想当年,由于工作繁忙没来得及参加第一届厦门国际银行赛,心中存有些许遗憾,作为多年的风控行业从业者,我们希望把自己工作积累的经验成功应用在数据挖掘比赛中,在这一届的比赛中,我们做到了,也拿到了冠军。希望业内人士也可以利用空闲时间多多参与比赛,提升自己的同时也是检验自己的业务能力不是吗?虽然本次赛事的周期持续较长,但在这里还是要感谢主办方,话不多说,下面我们将分享我们的建模冠军方案。


数据解析

本次数创金融杯建模大赛算法部分主要预测的是银行客户的账户资金变动情况。具体为,通过充分挖掘客户过去几个季度的账户状态、资金余额、账户行为与人口属性,预测下一季度账户资金较本季度的变动情况,变动分为1:提升、0:维稳、-1:下降。

1. 数据初步探索
首先,我们对整体客户的关键属性进行了分析,具体如下所示。

关键发现:
  • 1.客群中主要以41-60的中年人为主,高等级的白金与钻石客户占了总体的约15%,3个需预存的标签类别中,提升人群高达64%,最少的是下降人群,占15%;

  • 拥有活期存款的客户占比最大,为总体的97.5%,其次为结构性存款,占40.5%;占比最少的是资管与定期类产品,分别占总客户数的2.4%与1.9%。

  • 季度末存款产品个数主要以1-2个为主,约占70%。


2. 关键问题拆分
根据以上题目设定,可以将该赛题主要拆分为以下几个关键问题:
(1) 训练集如何选取?
(2) 线下验证方式该如何设置?
(3) 由于数据量较小,哪些维度特征能够最有效、最泛化地预测下季度客户资金的变化情况?
(4) 特征的提取方式:是否需要进行时间划窗?如何避免特征穿越的信息泄露?
(5) 模型采用多分类还是回归?
(6) 对于kappa 评价指标,是否存在后处理优化的空间?

针对以上问题,我们进行了一些简单的数据探索与分析,得到了以下初步结论:

(1) 训练集如何选取
主办方提供了3、4 季度的客户作为训练集,后一年的1 季度客户作为测试集。
  • 若线下训练时将3 季度的样本包含在内,3 季度样本会有相当大一部分特征无法构造,如客户上季度的资金、特征情况、上季度与当前季度差异等。

  • 若线下训练不包含3 季度样本,则会损失一些训练样本,而优势是4、1季度样本特征可以都包含客户上季度的特征情况。

通过分析客户的留存率,我们发现,3、4 季度的重叠客户数占到了3 季度客户数的90%,占4 季度的82%。这说明4 季度样本客户大部分都能提取到其上季度对应特征情况,且加入3 季度样本并不会给整体样本带来许多新客户。

同时,通过一版简单的baseline 比较,我们发现,如我们所设想的,只包含4 季度样本,且包含当前季度与上季度客户资金差异的模型,即上述提到的方法2),效果更好。
(2) 线下验证方式
对4 季度训练集使用5 折交叉验证的方式进行线下验证,通过观察分析,该验证方式与线上提交的分数结果差异非常小,且始终保持一致。

(3) 由于数据量较小,如何找到最有效、最泛化的特征维度?
这次赛题的数据量较小,4 季度训练样本约为7.6 万,在这种情况下,若一味地堆砌特征,一定会给模型带来非常多的噪声。因此,我们使用特征组的概念,一组组10 几个地添加特征,观察线下交叉验证与线上分数的情况,同时进行充分地特征筛选,保证每组特征是有效,而不是冗余的。

(4) 特征的提取方式:如何提取特征?如何避免特征穿越带来的信息泄露?
特征的提取一直是算法竞赛最重要的部分之一。在此次竞赛中,我们秉持着特征值必须在不同样本间公平可比这一思想,构造了所有特征组。举例来说,我们想统计客户的动账总次数,当有的客户只有4 季度的行为数据,而有的客户3、4 季度数据都有,那么简单的对客户历史动账次数进行加和,就不能充分地表达这个维度的特征信息。为了公平可比,可以对该特征进行滑窗,分别构造一组上季度动账次数加和,与另一组过去两个季度动账次数加和,从而充分表达客户行为。

同时,为了避免特征信息泄露,构造的特征不能用到下一季度的任何信息。另外,每构造一组新特征,我们就会计算该组特征内每个特征训练集与测试集的PSI,若线下交叉验证提升非常多,但存在PSI 非常大的特征,那么我们并不会提交,会先分析、解决这个可能存在泄露的特征。

(5) 模型采用多分类还是回归?
由于标签-1,0 ,1 存在着类似顺序关系,回归模型可能也是一种方式,但据线下交叉验证Kappa 的情况,我们发现多分类模型还是优于回归模型。

(6) kappa 评价指标的后处理优化空间
根据Kappa 的计算方法,我们分析发现,例如若将某样本真实标签1 错误地预测成-1,其损失会比错误预测成0 大的多。因此,这里理论上是存在着后处理优化空间的,后续方案介绍中会有部分着重介绍我们的后处理方法。

特征工程

1. 标签定义分析
首先来看我们基于数据的理解,对于标签中资金状态里的资金一词最贴近的计算方式尝试。


关键发现与后续特征思路
  • 计算尝试的结果非常符合业务逻辑:定义中的“资金”一词,最接近的是客户X1-X8的资产加和(且去除X7),即客户账户中所有正向资金的加和;

  • 另一方面,经分析,贷款金额初步可以认定对于客户趋向于提升客群是起反作用的;

  • 基于以上发现,后续构造特征时,优先构造最接近标签定义的特征,即优先构造正向总金额类的特征,且需与贷款金额作区分,从而避免构造冗余特征,使模型波动太大。


2.特征构造基本思想与特征组概览
基本思想:
  • 特征值必须在不同样本间公平可比这一思想,在构造客户各类统计特征时需要使用滑动窗口的方法

  • 所构造特征不能引入未来信息,造成信息泄露;可以辅助PSI等特征稳定性指标评估所构造的特征组

  • 构造特征时,尽可能以总金额代替各类子金额,使特征的信息更全面、泛化


详细特征组如下:



建模与后处理

我们使用5 折交叉验证的方式训练5 个不同的lgb 模型,对测试集分别做出概率预测,并取平均。

在kappa 评估算法中,若将某样本真实标签1错误地预测成-1,其损失会比错误预测成0 大的多。这也使得针对于kappa 的后处理优化成为了本道赛题最为重要的环节之一。

对本次赛题的后处理,我们有如下思考与原则:
  • 多分类模型对于每一个样本,都会给出各个类别的概率,在预测时,通常直接选取概率最大的那个类别作为模型对样本的预测类别;而对于kappa 评估指标,后处理的优化空间是,给3 个类别的概率不同权重,找到加权后的最大概率值,作为样本的预测类别,从而使得Out of fold 整体样本的kappa 结果最优。那么如何寻找3 个类别各自的概率权重,成为了后处理的关键。

  • 我们认为,后处理必须以线下Out of fold 为依据;

  • 后处理存在着一定不稳定性,必须在构造特征完后,再进行该部操作,不能以后处理结果作为新特征组的好坏判断依据;

  • 单次对Out of fold 整体样本的权重搜索,可能存在过拟合的问题,为了更为泛化,尝试使用在每折中各自搜索权重,并将5 次权重取平均,作为泛化后的3 个类别的权重。


我们的最优单模型使用了135 个特征,后处理优化后线上可以达到约0.497的分数,该模型一直保持着最后2 周A 榜第一。在最后几天中,后续的队伍开始了组队与融合尝试,但我们的单模型仍能保持在Top3 的水平,最后我们将该模型与另一个线上0.495的模型进行融合,根据线下找到最优融合比例,进行提交。最终A 榜成绩0.49877,B 榜成绩0.49899,非常稳定,获得初赛第一。

最后分享些打比赛的想法,数据挖掘比赛其实也是竞技的一种,既然是竞技,所以就需要在参与比赛前积累些基础,边做边学也未尝不可。不要一个比赛结束了都没有形成自己的一套解决问题的思路,虽然一套思路也不能适用于所有场景,但这对培养个人的独立思考能力还是很重要的。另也请谨记竞技的前提是公平、公正、公开,用自己的知识水平和业务理解去打败对手才会获取最大的成就感,谢谢各位的阅读。

——END——

浏览 176
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报