信贷风控实战(五)——特征工程
特征工程通常指的是通过数据处理方法,从数据源进行数据抽取和整合,并在此基础上挖掘出更深层次的数据来补充和完善数据样本的过程。在传统的机器学习中特征工程对模型效果的影响非常大,很多算法最终结果的好坏取决于特征工程的结果。接下来,依次按照数据准备、数据处理、特征衍生和特征筛选四个环节对信贷风控建模中的特征工程的过程和方法进行简单的介绍。
一、数据准备
信贷风控场景下的建模,主要是对用户的信用风险和欺诈风险进行评估,因此数据准备往往也要围绕反映用户信用和欺诈风险的角度进行开展,通常针对用户的信用和欺诈风险的评估,一般需要准备一下几个方面的数据:
基本信息:个人基本信息主要包括:年龄、性别、学历、籍贯、手机号、家庭信息、工 作信息等。
金融信息:收入、流水、资产证明等。
多头信息:多头指得是用户在多家平台的贷款情况。
消费信息:电商数据、出行数据、点评数据、外卖数据等。
埋点数据:用户在App上的操作行为数据、设备及网络信息等。
平台历史表现:对于非新客,其在当前平台上的历史表现数据,如历史申请笔数、历史放款笔数、历史累计放款量、最大单笔借款、最大最小预期天数等。
外部数据:外部厂商的行业黑灰名单、征信数据、风险评分等。
二、数据处理
从数据源采集到的数据,一般不能直接用于建模,需要先对这些数据做一些处理,才能应用到后期的建模过程中去,在信贷风控建模的实践中一般需要进行以下的数据处理操作:
去重:在有些建模场景下,同一个客户的数据只能存在一条,而在数据源头上往往因为各种原因,不可避免存在数据重复的情况,所以需要对这些重复数据进行去重。去重的一般原则为保留最新的一条记录,或者保留维度缺失最少的一条记录,不同的场景下需要根据实际情况进行去重。
缺失值处理:缺失值处理的方式一般有两种:删除和填充。删除:例如当某个字段的数据缺失超过50%,可以选择将该字段直接删除。或者很少数量的样本某些字段缺失时,可以将这些少数量的样本删除。对于缺失值填充,主要有3种方式:(1)均值填充(2)极大似然估计(3)多重插补。
归一化:对于数值类型的特征,归一化可以将所有数据都统一映射到一个固定的数值区间内,以消除数据特征之间量纲的影响,加速模型训练的规程等。常用的归一化方式有:
(1)线性函数归一化:
(2)0均值归一化:
其中和分别为原始特征的均值和标准差。
离散编码:对于部分离散型特征,有些模型无法接受非数值型的输入,因此需要对这些离散型的类别特征进行编码,常见的编码方式有:
(1)序号编码:按照离散型特征的实际意义,采用序号由小到大的方式进行编码。
(2)one-hot编码:使用稀疏特征的方式对类别特征进行01编码。但是one-hot对于类别较大的特征不建议使用,会造成特征高维和稀疏性问题。
(3)二进制编码:二进制编码主要是在序号编码的基础上,采用二进制的方式对需要进行重新编码。相比较one-hot,可以解决维度问题和稀疏性问题。
(4)WOE编码:WOE(Weight Of Evidence,证据权重)是一种对原始变量进行编码的形式,其定义为:其中表示类别中正样本在整体中的占比,表示类别中负样本在整体中的占比。这里需要注意到是,WOE编码不仅可以用在离散型变量上,还可以应用在连续性变量上,前提是需要对连续性变量进行分箱,这个后面会继续聊。
三、特征衍生
目前在工业界有两种比较主流的建模思路:(1)复杂特征+简单算法:以常规机器学习算法为代表,如线性回归、逻辑回归、决策树等,这些算法对特征要求较高,且往往需要建模人员具有较丰富的行业经验,同时模型很多时候将可解释性放在比较重要的位置。(2)简单特征+复杂算法:以深度学习为代表,如深度神经网络(DNN)、卷积神经网络(CNN)以及循环神经网络(RNN)等,这些算法对特征工程的要求非常低,只要有足够的数据量和计算资源即可,但是由于其算法的复杂性,其可解释性往往不高,在实际的业务中,往往会采取复杂算法构造特征+简单算法的方式进行融合建模,以提高模型在业务上的可解释性。业内常用的特征衍生方案主要有如下几种:
特征交叉:特征交叉可以轻松地挖掘出更深入的特征,对于原始特征较少的场景,可以通过特征两两交叉的方式(也可以交叉完之后再交叉,一般复杂的会越来越高)从基础特征中挖掘出指数级的高维度特征。但是由于特征交叉具有一定的盲目性,且会导致维度的暴涨,一般在特征交叉完成之后,配合特征选择,来找到比较由小的交叉组合特征。
跨时间聚合:对于信贷风控等金融场景,跨时间维度的数据聚合在一定程度上具有较高的可解释性,是早起银行及信贷机构常用的特征衍生方法之一。
网络特征提取:复杂网络是图计算在工业界的典型应用之一,通过设计符合业务场景的schema,可以将用户数据连接到一张巨大的网络之中,并基于这个复杂网络进行特征提取,进而补充特征维度,常用的复杂网络特征有:介数、中心度、聚类系数、群组信息等。以及一些1-hop、2-hop甚至更高hop的关联聚合结果等。
Embedding:Embedding的基本思想来源于自然语言处理中的word2vec,通过训练一个浅层的神经网络,用低维特征来表征样本。常用的embedding方式有基于文本的embedding,如word2vec, doct2vec等将原始的文本信息进行低维稠密的向量化,以提取数值化的特征。还有一种就是在上面的复杂网络的基础上,采用graph embedding的方式进行特征挖掘。embedding生成的特征由于其算法的复杂,解释性往往不高,一般融合到基本特征中进行联合建模。
四、特征筛选
在信贷风控建模中,我们通常需要判别一个特征对模型效果的贡献程度,并挑选出贡献度大的特征用来建模。这里我们经常用到的主要是两种:WOE和IV。它们主要用来判断变量的预测强度,通过WOE和IV我们可以挑选高预测度的样本入模。
WOE:在上面的离散型特征编码的章节中,我们提到过WOE编码,WOE是一种用于进行特征衡量的指标之一,其中我们后面要说的IV也是基于WOE得到的,所以我们再来看一下WOE,WOE的计算公式如下:
其中表示类别或者分箱中正样本在整体中的占比,表示类别中负样本在整体中的占比。其中WOE值为正数表示当前细分分组的坏账率好于平均,为负数表示当前细分分组坏账率高于平均。针对离散变量,我们通过统计每种离散特征的取值在真是样本中的分布即可得到当前特征的每个取值的WOE值,而针对连续型的特征,现需要进行分箱,然后才能对每箱进行WOE的计算,其计算公式跟上面的公式是一样的,这里需要终点关注的是如何进行分箱。因为分箱逻辑的不同,最后得到的WOE在每个分箱上的映射结果也肯定是不一样的。
分箱的本质是将连续变特征离散化,以便于将其应用到一些常用的树模型中。分箱的方式有很多种,主要分成两种,一种是无监督分箱,一种是有监督分箱。其中无监督分箱不考虑样本的实际标签,而有监督分箱是在样本标签的基础上利用各种衡量指标进行启发式的分箱。下面介绍几种常见的分箱方式:
(1)自定义分箱(无监督分箱):自定义分箱一般采用专家经验或者先验知识针对某些特殊类型的数据进行划分,如年龄,收入等。
(2)等距分箱(无监督分箱):即根据特征的取值范围[min, max],将样本按照等间距的方式进行分箱,其中是分箱数。如果样本在当前特征上不是均匀分布的(一般都不是),每个分箱中的样本数据差异较大。
(3)等频分箱(无监督分箱):根据特征的值进行排序,然后按照等样本数的方式,每个样本构成一个箱。
(4)聚类分箱(无监督分箱):对当前特征的值采用k-means的方式进行聚类,每个cluster的样本构成一个分箱。
(5)最小熵分箱(监督分箱):最小熵分箱是典型的自顶向下的分箱方法。它的主要思路如下:
step 1. 对当前特征值进行统计并排序。
step 2. 依次将待分箱变量的每个取值作为划分点,分别计算当前划分点下两个子集的条件熵并加权求和。
step 3. 选择条件熵加权和最小的值所在的点,作为划分点。
step 4. 分别对step 3中划分得到的两个子集重复step 2 和 step 3,直到箱体数目达到预定值。
(6)卡方分箱:与最小熵分箱相反,卡方分箱是一种自底向上的分箱方法。它的主要思路如下:
step 1. 对当前特征值进行统计并排序,初始情况下,每个值都是一个独立的分箱。
step 2. 按顺序计算相邻两个分箱的卡方值。
step 3. 合并卡方值最小的两个相邻分箱,然后将其作为一个新的分箱。
step 4. 重复step 2 和 step 3,直到箱体数目达到预定值。
(7)Best-KS分箱:Best-KS分箱与最小熵分箱一样,是一种自顶向下的监督分箱方法,区别就在于确定划分点的评判指标不同。最小熵采用的是条件熵值,而bestKS采用的KS值。它的主要思路如下:
step 1. 对当前特征值进行统计并排序。
step 2. 依次将待分箱变量的每个取值作为划分点,分别计算当前划分点下两个子集的KS值。
step 3. 选择KS值最小的值所在的点,作为划分点。
step 4. 分别对step 3中划分得到的两个子集重复step 2 和 step 3,直到箱体数目达到预定值。
(8)负样本占比最大化分箱:负样本占比最大化分箱是一种基于等频分箱的有监督的分箱方法。该方法也是一种基于启发式的自底向上的分箱方法。该方法的主要思路如下:
step 1. 对样本进行排序后,使用等频分箱,一般先分很多箱。
step 2. 相邻箱之间按照负样本占比差异最大化原则进行合并。
step 3. 达到指定的分箱数后停止。
IV:IV(Information Value)值考虑了分箱中样本占整体样本的比例,相当于对WOE的加权求和。
其中表示类别或者分箱中正样本在整体中的占比,表示类别中负样本在整体中的占比。这样我们就可以得到整体的IV值:
其中m表示当前变量的分箱数,或者是枚举值的个数。
理论上来讲,某个特征的IV值越大,说明该特征的预测能力也就越强。但在建模的实践中,我们并不总是使用IV值大的特征来搭建模型,因为这会使模型变得不太稳定。通常IV值较大的特征可以直接加入规则。具体来说,IV值和相应的含义如下表所示。
IV范围 | 特征质量 |
---|---|
<0.02 | 该特征基本不具有预测能力 |
0.02~0.1 | 该特征预测能力较弱 |
0.1~0.3 | 该特征预测能力中等 |
0.3~0.5 | 该特征预测能力较强 |
>0.5 | 该特征预测能力极强 |