分类
交易者指南

NN模型在金融风控场景中的应用

使用图网络进行应用程序分类

机器学习在金融风控的经验总结!

由于这样的特殊性,在Kaggle比赛、推荐等领域中大发光彩的机器学习算法,却容易在金融风控场景中「水土不服」。道理很简单,不是算法不够强大,而是没有抓住金融风控的核心:「可解释性、稳定性」。因为是有关“NN模型在金融风控场景中的应用 钱”的安全,风控建模是比较严谨的,保证模型在可掌控、可理解范围内,包括如何评估数据、如何设计模型、如何进行特征工程以及后续模型开发和监控都有一套体系框架;而由于风险滞后性,模型上线后会运行很长时间,故对模型稳定性的要求其实要高于预测能力。

如何减少水土不服呢?下面笔者从数据质量评估模型设计特征工程线上监控环节介绍下在金融风控场景实践的一些经验和踩过的坑。

一、数据质量评估:数据是万坑之源

1.线上线下一致性评估

「数据回溯的坑」

「不熟悉业务的坑」

「计算逻辑的坑」

2.其他评估项

「数据时间项检查」

「主键是否唯一」

过往每一家公司都遭遇过这种情况:离线数据可能存储时存在重复插入的现象,导致主键不唯一,导致计算“求和”、“次数”等指标会出错。实际为避免这种情况,习惯使用count(distinct key)替代count(key),或事先通过group by 去重。

「缺失值/异常值处理」

二、模型设计:如何让你的模型更贴近业务

1. 好坏用户定义

如何定义好坏用户其实是有“套路的”NN模型在金融风控场景中的应用 ,首先介绍下图的时间轴中的三个术语:「观察点」「表现期」「观察期」

  • 观察点:用于构建样本集的时间点,不同环节定义不同,比较抽象,这里举例说明:如果是申请模型,观察点定义为用户申贷时间,取19年1-12月所有的申贷订单作为构建样本集;如果是贷中行为模型,观察点定义为某个具体日期,如取19年6月15日在贷、没有发生逾期的申贷订单构建样本集。
  • 表现期:定义好坏标签Y的时间窗口,信贷风险具有天然的滞后性,因为用户借款后一个月(第一期)才开始还钱,有得可能还了好几期才发生逾期。
  • 观察期:构造特征的相对时间窗口,例如用户申请订单前12个月平均消费金额。设定观察期是为了每个样本的特征对齐,长度一般根据数据厚度决定。

机器学习在金融风控的经验总结!

机器学习在金融风控的经验总结!

「样本划分」

  • 首先按时间将分成训练-验证集和测试集(Out of Time,OOT)
  • 然后将训练-验证集随机划分成训练集(In the Sample, INS)和验证集(Out of Sample,OOS)
  • 通过INS训练模型,OOS调参,最终以OOT的效果为准,同时要保证这三个数据集的KS相差不大。

「行业通用模型的样本如何设计」

  1. 特殊样本处理:特殊月份单独拿出来作为测试集/单独建模模型,如暴雷潮、疫情期间的样本。
  2. 时效性:筛选样本的时候,样本的发生日期不宜过早(比如近2年内),各月份样本量相对均衡,且确保有足够的表现期。
  3. 代表性:样本需要来自稳定合规的业务,能反应所在细分市场主流的业务场景,另外避开单一地域限制,剔除局部地域业务为主的合作方样本。
  4. 稳定性:各合作方的样本在各省份上的样本量分布与真实人口分布一致;各合作方在各月份的坏样率要相对稳定。
  5. 样本相对均衡:不同业务场景的样本量要相对均衡,如消金、银行、现金贷场景的样本量要相当。

2.模型选型:LR真的很差劲吗

  1. 仅在建模环节使用机器学习模型替代LR,这样一来就不用进行繁琐的用户分群、特征分箱转换等步骤,但是整个评分卡框架不变,包括样本定义、特征分析、模型设计、模型分析等
  2. 机器学习用于构造特征,如embedding, 这个在下面特征工程模块具体展开。

3.效果评估:KS表是与业务沟通效果最好的方式

  • Rank:将模型预测的用户违约概率进行排序,并等分成k组,(k根据样本规模一般取5、10、20)
  • #Total:每一组用户总数
  • #Bad:每一组坏用户本数量
  • %Total_bad:每一组坏用户在所有坏用户中占比
  • Cum_%_Total_Bad、Cum_%_Total_Good:累积好坏用户占比
  • K-S:每一组的KS=|Cum_%_Total_Bad-Cum_%_Total_Good|,模型的KS值=每一组KS的最大值。

「KS表还有哪些比较有价值的信息呢?」 例如可以看预测风险最高一组是否可以直接拒绝,又如看预测风险最低一组决策进行决策是否可以审批通过。

NN模型在金融风控场景中的应用

团伙欺诈识别-中介地点转移

使用图网络进行应用程序分类

【北航庄福振分享】NN模型在金融風控場景中的應用

我們的評價指標是採用真實工業場景裡面比較關注的低用戶打擾率時的召回率,即我們在給出結果時,希望對前面頭部的百分之多少的用戶打電話告訴他們這可能是一個欺詐行為。例如打1000個電話,這1000個應該都是有欺詐行為,即這個比例應該是越高越好的,因此我們採用的評價指標更關注於ROC曲線的頭部(FPR

我們提出了這種層次可解釋網絡。首先我們提出了一個特徵層面、事件層面的可解釋性網絡來對這個欺詐檢測。右邊的圖片是我們提出的一個框架,同樣的,前面是我們對這個特徵進行編碼。Field-level Extractor是對事件的表示。事件表示完之後,是對序列的表示。還有一個我們叫做Wide layer。Wide layer是單純用特徵去學的線性分類器,我們這邊串聯後用多層感知機來去做。這裡面的可解釋性就體現在從單領域的模型裡面有兩個可解釋,一個是哪些字段 、哪些特徵是比較重要的,以及序列當中哪些歷史事件比較重要的。

對於每一步,第一個Look-up embedding,我們實際上是對這個特徵值進行一個向量的轉化。我們把這個轉化分為類別型的、數值型的轉化規則,採用這個式子去做轉化。Field-level Extractor是對事件的一個表示,前面的工作我們只考慮了即兩兩特徵之間的交互,顯示哪個特徵比較重要,我們加了一個wit,這個wi相當於是說針對這個特徵,在T時刻它的特徵的重要性的歸一化。對於事件,它同樣有一個事件重要性的表達式,也就是UT,UT就是下面的表達式。下面還有Wide layer對白名單進行學習,即我們用線性分析去學習,最後預測跟學習問題,我們同樣也是用MLP還有包括sigmoid函數,來把它映射到0跟1之間,用交叉熵來去學習整個學習問題,這個是L(θ)。

我們又提出一個遷移學習框架,剛才說到可能不同地域或者不同場景,數據有些是少的、有些是多的。我們希望由(數據)少的來幫助(數據)多的。我們把少的叫做Target Events,數據量多的叫做源領域或者Source Events。在這裡,我們希望去學到源領域和目標領域特有的一些知識,還有它們兩個共享的一些東西。我們希望這個Source可以共享一些知識去幫助Target學習及一些預測。從幾方面來考慮,在我們場景裡面,一個是Embedding策略、為什麼要提出Embedding策略、共享和你特有的行為序列的抽取,還有包括你的領域的注意力。也就是在一定程度上解釋說我這個領域幫助了我的Target問題、幫助了多少、我們怎麼去對齊不同領域之間的一個分佈,也就是Aligning Distributions。可解釋性就體現在Domain Attention的角度。

同樣的,我們在這個數據集上面也採用了某電商平台上面的數據集,此次我們在這個數據集上加了一個數據集比較少的情況,即它可能只有幾百、幾千的一個正例,負例可能十幾萬。同樣的,我們把數據最少的作為Target Events去做我們的實驗。對於bassline,我們同樣也是選擇W&D、NFM、LSTM4FD還有M3R這樣的Fraud baseline去做我們的基礎模型。我們先看一些單領域的實驗結果,也是採用低用戶打擾的召回率作為我們的評價指標。

携程金融大数据风控算法实践

Fork me on GitHub

好坏用户定义:这一点可能是A卡甚至是互金大部分风控模型的最基础最核心的工作。对样本标签的定义,需要与实际业务场景、策略目标相一致,并综合考虑不同定义下的样本量。比如在现金分期场景中,可以画一下用户回款率(或者滚动率)和逾期天数趋势分布曲线,用户逾期N天以后回款率或者滚动率便已经趋于稳定(梯度平稳),则可以N天以上逾期作为筛选坏样本的依据。在某些场景下,如曾经的Payday Loan,由于整个业务周期只有半月或1个月,为加快模型迭代速度,有时甚至会定义7+甚至1+逾期用户为坏客户。在一些银行场景中,出于坏账计提考虑,可能定义90天以上逾期为坏客户。总之,好坏用户的定义不能纯靠人工经验,应该以场景的数据为基础,进行数据分析之后确定。

样本规模与算法演进:携程金融的业务最早开始于2015年,模型进行了多个版本的迭代。下面的表格展示的是拿去花业务中,我们A卡模型的演进。业务初期,样本数据量极少,往往根据相关业务经验确定使用的特征和规则;随着数据的慢慢积累,开始采用部分精细特征,使用简单的机器学习算法训练;当样本数据量积累到百万级以上,我们尝试采用神经网络算法进行特征自动提取或者end-to-end的风控模型训练;从18年上半年开始,我们升级到更加先进的迁移学习体系,未来会持续落地更多的前沿算法。总之,携程金融的风控模型优化的过程,实质是紧随着业务从无到有、从小到大,数据量由少变多,特征由粗到细,模型由简单到复杂,效果由一般到突破的过程。

Fig . 6 携程金融拿去花业务A卡模型演进

模型的评估与监控:模型建立后,需要对模型的预测能力、稳定性进行评估。看模型效果不能只看KS,KS定义是从0-1概率之间好坏样本累计概率最大差值,实际应用中一般不会直接取这个阈值(cutoff)作为策略,因为在这种cutoff下,通过率可能会很低;风控不能不管业务,举个极端的例子,通过调整cutoff,风控几乎可以做到任意想要的逾期率,但这样通过率就很低了,业务规模可能只停留在极少数资质优秀的客户;所以评估模型时,基于风险的评估及基于业务的评估是必须的。因此,模型评估可分为三层: