智能风控:原理、算法与工程实践
上QQ阅读APP看书,第一时间看更新

1.2 工业建模流程

本节介绍工业中的完整建模流程,以免后续章节在对其细节进行优化时,部分读者会有疑惑。

首先来看一下在工业界建立一个机器学习模型的完整流程:

1)将业务抽象为分类或回归问题。

2)定义标签。

3)选取合适的样本,并匹配出全部的信息作为基础特征。

4)特征工程+模型训练+模型评价+模型调优(相互之间可能会有交互)。

5)输出模型报告。

6)上线与监控。

工业建模的整个流程如图1-3所示。

图1-3 工业建模流程图

1.2.1 抽象业务

在风控场景下会碰到的问题通常都可以转化为二分类问题,且通常将响应变量称为“负样本”。比如:

❏ 信用评分模型期望用于预测一个用户是否会逾期,如逾期则该用户为负样本。

❏ 营销模型期望用于预测一个用户被营销后是否会来贷款,如果贷款则该用户为负样本。

❏ 失联模型期望用于预测一个用户是否会失联,如失联则该用户为负样本。

注意,在风控业务中,只有欺诈检测不是二分类问题。因为欺诈的方法多变,从数据角度来看,应该隶属于多分类任务。关于欺诈检测,在第6章和第8章中会有相关介绍。

1.2.2 定义标签

在训练一个监督模型前,一定要得到样本集中每一个样本的标签。但是标签本身并不容易定义。在信贷评分模型中,通常只知道每个人的当前逾期情况,仅代表当前观察期内用户尚未还钱,事实上并没有真实的负样本标签。因此通常会选取一个截断点(阈值),当逾期超过某个阈值时,就认定该样本是一个负样本,未来也不会还钱。本书默认逾期15天为负样本的标记阈值,未特殊声明时,凡是被标记为响应变量(1)的客户均是逾期超过15天的客户。

在定义标签的过程中还有一个小技巧。通常负样本的定义较为简单,只要逾期大于15天即视为负样本。但逾期小于15天的人不会直接作为正样本,只会将按时还款和逾期较少的那一部分人标记为0。比如,现在将逾期超过15天的人作为负样本,将逾期少于5天和没有逾期的人作为正样本,至于逾期在5~15天之间的那些人,将他们从样本中去掉。

这是因为逾期15天和逾期14天的样本在本质上很接近,直接截断显然不合理。从分布的角度来讲,二分类问题假设样本服从二项分布。这里负样本与正样本的实际界限很模糊,去掉中间一部分“灰样本”,会使得样本分布更趋向于二项分布,对模型的学习更加有利。

通常建模过程将样本集划分为训练集(Train)和测试集(Test)。训练集用于模型学习,测试集用于检验模型是否拟合得当。“灰样本”通常放入测试集中,用于确保模型在训练结束后,对该部分样本也有区分能力。

1.2.3 样本选取

建模过程的样本选取通常需要满足以下原则:

代表性:样本必须能够充分代表总体。如此从样本中提炼的数理关系才能有效预测未来真实场景的数理关系。如消费金融场景客群可能和小额现金贷场景下的客群有所差异,因此不能直接使用不同客群作为样本建模。

充分性:样本集的数量必须满足一定要求。当样本量较小时,无法满足统计的显著性(Statistical Significance)要求。评分卡建模通常要求正负样本的数量都不少于1500个。随着样本量的增加,模型的效果会显著提升。而对于神经网络等多参数模型,通常要求样本量在50万以上,否则很难保证模型的稳定性。

时效性:在满足样本量充足的情况下,通常要求样本的观测期与实际应用时间节点越接近越好。如银行等客群稳定的场景,观察期可长达一年半至两年。然而在许多平台,很难保证样本都处在稳定的较近期的时间点上。此时可以通过迁移学习(Transfer Learning)等方法对样本进行挑选或对变量进行映射,使得早期样本与近期样本有相似的数据分布。

排除性(Exclusion):虽然建模样本需要具有代表整体的能力,但某些法律规定不满足特定场景贷款需求的用户不应作为样本,如对行为评分卡用户、无还款表现或欺诈用户均不应放入当前样本集。

虽然评分卡建模通常要求正负样本的数量都不少于1500个,但样本量也并非越大越好。当总样本量超过50000个时,许多模型的效果不再随着样本量的增加而有显著提升,而且数据处理与模型训练过程通常较为耗时。如果样本量过大,会为训练过程增加不必要的负担,因而样本量较大时,需要对样本做欠采样(Subsampling)处理。

由于负样本通常较少,因此通常只针对正样本进行欠采样。常见的欠采样方法分为:

随机欠采样:直接将正样本欠采样至预期比例。

分层抽样:保证抽样后,开发样本、验证样本与时间外样本中的正负样本比例相同。

等比例抽样:将正样本欠采样至正负样本比例相等,即正样本量与负样本量之比为1∶1。

需要注意的是,采样后需要为正样本添加权重。如正样本采样为原来的1/4,则为采样后的正样本增加权重为4,负样本权重保持为1。因为在后续计算模型检验指标及预期坏账时,需要将权重带入计算逻辑,才可以还原真实情况下的指标估计值,否则预期结果与实际部署后的结果会有明显偏差。而当负样本较少的时候,需要进行代价敏感加权或过采样(Oversampling)处理。实际应用中需要经过严格的数据清洗来保证效果稳定,这一内容将在第5章详细介绍。

在金融领域有一个概念叫时间窗口,一个用户的时间窗口分为观察期和表现期。

观察期是指用户申请信贷产品前的时间段。在该时间段内进行特征的生成。

表现期是定义好坏标签的时间窗口,如果在该时间窗口内触发坏定义,就是坏样本,反之就是好样本。

如设定用户在到期3个月内未还款,即认为用户为负样本,则称表现期为3个月。如在用户贷款前12个月的数据切片中抽取用户的历史行为表现作为变量,用于后续建模,则称观察期为12个月。样本时间窗口如图1-4所示。

图1-4 样本时间窗口

选择样本时,应保证观察期足够长,从而保证有充分的数据用于特征生成。此外还需要注意样本的表现期能否充分暴露风险,即用户自逾期开始是否已有15天(本书定义的表现期)的贷后表现。观察期足够长有利于用户画像的建立与数据挖掘,而表现期足够长有利于风险暴露。由于观察期与表现期此消彼长,因此在实际建模中,要根据现有数据的情况设立合适的观察期与表现期。

在时间窗口确定之后,数据集也会固定下来。数据集在建模前需要划分为3个子集:开发样本(Develop)、验证样本(Valuation)和时间外样本(Out of Time, OOT)。其中开发样本与验证样本使用分层抽样进行划分,以保证两个数据集中的负样本占比相同。通常开发样本与验证样本的比例为6∶4。而时间外样本通常使用整个建模样本中时间切片的最后一段样本。预测模型的本质是使用历史数据对未来的数据进行预测,因此在实际应用中,更关注模型对未来样本的预测能力,以及模型的跨时间稳定性。通常模型检测指标需要大量数据,以使得统计结果满足基本统计学假设,所以以每月数据的整体进行统计呈现。建模人员期望模型的预估表现,与模型上线后第一次报表呈现有最大的相似度。因此使用与其时间距离最接近的一整月数据进行评测。

在选取样本时,上一节提到,会将一些杂糅样本去除,以便于模型学习。这种思路的方法其实很多,上一节介绍的去除“灰样本”属于基于业务的样本清洗方法,此外还可以通过一些无监督算法进行筛选。第6章中会介绍如何使用异常检测方法进行样本清洗。

1.2.4 特征工程与模型调优

用来解释现象发生的单一特性或者一组特性被量化之后,就被统一称为特征(或变量)。特征工程是指对特征进行处理与相互组合交叉的过程。

模型中的变量通常有两种类型,分别是连续型变量(Continuous Variable)与离散型变量(Discrete Variable)。

❏ 连续型变量是指该变量为观察数据所得的实际数值,并没有经过群组处理。例如,客户的出生日期为1973年10月24日,以2009年12月31日为计算时点,则该客户的年龄为36岁。

❏ 离散型变量是指质性变量或类别型变量。例如,将客户接受教育程度分为“中学及以下组”“大学组”及“研究生及以上组”。或者将变量实际数值进行分组处理,例如,将客户年龄进行分组处理:20~29岁为年龄群组一,30~39岁为年龄群组二。如果客户年龄为36岁,则归到年龄群组二。

在实际建模过程中,最重要的是数据、特征和模型。本书会深入挖掘信贷风控和欺诈检测领域特征的构造方式,包括基于业务的手动特征工程构造和通过一些算法对特征进行交叉衍生,并为每一类特征推荐最合适的算法和更好的表达。

模型优化是指通过对特征和模型进行调整,使模型表现达到当前最优的过程。通常调参对模型的提升不会有质的变化,更合适的变量与模型选择会带来更大的收益。实践中,通常会针对数据挑选接受度更高的模型,并引入通过模型自动组合特征的机制。这有助于数据信息的挖掘。而多模型的融合机制可以极大地降低模型的方差(Variance),这有助于增强模型的泛化能力。模型优化的主要内容在第7章进行介绍。

本书将尽量避免使用表现较差的网格搜索(Grid Search)等调参方法,而是从业务角度出发,介绍一种自动化调参策略。

1.2.5 上线监控与评估报表

在实际场景下,一个模型做好之后,最终要被部署到线上。通常这部分主要进行的是变量的核对工作。其核心在于通过统计手段构造模型报告,继而对模型的效果进行评估,并在上线后按照月度监控相应指标。

1.模型报告

典型的模型报告如图1-5所示。

图1-5 模型报告模板

标准模型报告构建方法如下:

1)将测试样本的集合按照预估评分进行升序排列。

2)将样本等频切分(分箱后每一箱的人数相同)并分布到20箱中。

3)计算每一箱中的相应指标。

图1-5所示的每一列都表示具体每一箱样本的整体表现。

第1列表示每一箱中样本子集的KS(Kolmogorov-Smirnov)值。KS值通常用来描述模型的正负样本的区分能力,是风控领域最常用的指标。通常取得最大值的箱越靠前,表示该模型的效果越好。

第2列为负样本个数。随着箱编码的增加,该列值应呈现严格递减趋势,但通常模型并不能保证严格递减。比如图1-5中,编号为8的箱(实则为第9箱)比编号为7的箱(实则为第8箱)的负样本个数要多。这种情况表明模型的排序能力出现波动。出现该现象的箱编码越靠前,说明模型的排序能力越弱。

第6列为捕获率(Capture Rate)。其计算方法为,当前箱的负样本累计个数除以样本集中负样本总数。捕获率常用于度量模型抓取负样本的能力。风控模型通常选择一个阈值对申请客群进行截断,因此期望在阈值以下的捕获率越大,模型的效果越好。

第7列为当前箱中负样本的占比。由于是等频分箱,该列所反映的排序能力与第2列的负样本个数相同。其余列是用于辅助计算上述列的辅助列,通常不需要特别关注。

模型部署后可能会遇到很多问题,初学者在这里会有很多困惑。下面来为读者讲解一些模型训练之后会遇到的问题以其解决思路。

2.常见问题及解决思路

(1)模型训练效果很差

出现这种情况,通常的问题是模型特征没有做好,没有挖掘出更有价值的特征。当然也不排除数据质量很差的可能性,所以这时候应该从数据和特征两方面着手,首先重新做特征工程,然后尝试扩充数据集。

(2)训练集效果好,跨时间测试效果不好

因为风控在大多数场景下使用历史数据来预测未来的数据,所以通常除了将样本集按照一定比例(如7∶3或6∶4)划分为训练集和测试集以外,还会预留出一部分比上述数据集更“新”的样本,也就是时间外样本集

如果测试集和跨时间测试效果都不好,就说明这是一个很明显的过拟合问题。可以尝试减少模型的复杂度,比如减少特征的数量,做一些特征筛选;或者减少树模型的深度等。

如果在测试集上表现较好,但在时间外样本集上表现不好,此时称这种情况为模型的跨时间稳定性较差。这通常是因为特征的跨时间稳定性不够好造成的。特征的跨时间稳定性用于表示,随着时间的推移单个特征的取值分布是否有较大波动。这时候可以考虑去掉一些稳定性较差的特征。具体的稳定性衡量方法在第2章中介绍。

(3)测试集和跨时间测试效果都很好,上线之后效果不好

这种情况下,仍然不能排除过拟合的嫌疑。跨时间测试效果好,可能只是预留出的这一部分时间外样本集和训练数据集比较接近所造成的假象。可以再取出一部分更“新”的数据集来训练以对模型进行调整。

还有一种可能是线上模型的特征做错了,和线下的特征逻辑不一致。这种状况需要仔细核对特征逻辑。

(4)上线之后效果好,几周之后分数分布开始下滑

这种情况基本上可以认为是特征的稳定性问题,解决方案主要聚焦在特征的跨时间稳定性上。这时由于模型表现较差,通常需要进行模型重构(Rebuild),即从数据准备开始,重新建模。

(5)没有明显问题,但模型每个月逐步失效

这是工业界模型普遍存在的问题,目前比较常规的解决方式是通过频繁迭代来更新模型,即模型迭代(Refit)。只要一直使用比较新的样本,就可以保证在未来的几个月模型效果让人满意。

有一些学习方式可以减少这种问题的影响,比如在线学习(online-learning)就可以解决这个问题。但某些场景下在线学习是不适用的,比如风控评分模型如果做成在线学习,贷前的审批通过率会持续波动,这对业务分析人员和策略制定人员都很不友好。在欺诈检测中可以使用在线学习。