在日常建模场景中,针对样本数据的特征工程处理,我们往往会实施特征衍生,尤其是面向特征变量较少的情况,特征变量池的扩展已经成为一个必然步骤。但是,对于特征衍生的处理,我们需要适当把握一个平衡点,也就是性能与效率要相对合理。特征衍生的对建模的有效性是毋庸置疑的,但是一味的扩大增加特征字段数量,会逐渐影响特征进一步处理的性能与效率,需要耗费较大的资源与时间,例如特征筛选、特征分析、模型训练等环节。
对于合理衍生加工新的特征字段,需要综合考虑客观的特征衍生方法、样本数据情况,以及主观的数据分析思维、实际建模经验等。因此,要较好的完成特征衍生工作,并不是简单通过几行代码跑出很多字段就可以了,而是要采用合适的方法、合理的思路来构建符合当前场景的特征,这才是实际场景最重要也是最需要的。
1、特征衍生概述
特征衍生的方法有很多,常见的可以概括为5种,分别为常规统计衍生、时序特征衍生、多项式特征衍生、交叉组合衍生、分组汇总衍生。其中,常规统计衍生、时序特征衍生的方法应用较为广泛,例如常规统计衍生的累加、和差、占比等,时序特征衍生的近3个月、近6个月、近1年等。在番茄知识星球过往的文章里,我们结合实际案例给大家全面介绍过这两种方法,各位小伙伴可以回溯查看。同时,为了便于大家全面系统掌握各类特征衍生方法,以提高数据挖掘与数据建模能力,番茄风控会陆续对其他3种方法进行介绍,包括多项式特征衍生、交叉组合衍生、分组汇总衍生,而本文先对多项式特征衍生的方法来全面解析。
首先来简单熟悉下多项式特征衍生的概念与逻辑,从名称也可以直观了解其中的思路,也就是通过数学多项式的结构对原始特征进行多字段重组,至于字段维度的多少可以自由定义,当然维度数值越大,特征衍生字段也会呈现指数型增加。例如现有特征x0、x1、x2,若衍生维度设置为2,则新字段有x0x1、x0x2、x1x2、x0^2、x1^2、x2^2等。
通过以上关于特征衍生的背景介绍,以及多项式特征衍生的描述,接下来我们将围绕具体的实例样本数据,来采用多项式方法来实现特征字段的衍生加工,并对衍生特征的性能效果进行多方位评估,以便于大家在实际建模场景中参考应用。
2、样本数据分析
本文选取的实例样本数据包括10000条样本与6个特征,部分数据样例如图1所示,其中id为样本主键;x0、x1、x2、x3为特征变量,取值类型均为连续数值型;target为目标变量,取值二分类(0/1),样本特征的统计分析描述分布如图2所示。
编辑
添加图片注释,不超过 140 字(可选)
图1 样本数据样例
编辑
添加图片注释,不超过 140 字(可选)
图2 特征统计分析描述
3、特征衍生加工
在Python环境中,可以采用sklearn.preprocessing库PolynomialFeatures()函数来实现特征变量的衍生,这里简单介绍下函数PolynomialFeatures()内置的几个自定义参数:
(1)degree:默认值为2,控制多项式的自由度;
(2)interaction_only:默认值为False,若指定为True,则新字段不会出现特征自身结合的项,例如原始特征x不会生成x^2、x^3等;
(3)include_bias:默认值为True,若指定为False,则新字段不会出现字段1。
采用以上方式对样本特征变量池(x0、x1、x2、x3)进行衍生加工,具体实现过程如图3所示,生成的衍生字段数据集(poly_X)部分样例如图4所示。
编辑切换为居中
添加图片注释,不超过 140 字(可选)
图3 特征衍生加工
编辑
添加图片注释,不超过 140 字(可选)
图4 衍生字段样例
以上的多项式特征衍生过程,我们是将自由度degree设置为3,最终得到的特征数量为34个,其中4个为原始特征,也就是生成了30个新的特征字段。对于衍生自由度的定义,在实际场景中一般取2或3便可,自由度的取值太大会使新字段的维度很多,一方面不利于数据资源的处理,影响算法任务的性能与效率,另一方面由于特征加工逻辑类似,相当一部分字段的相关性很强完全可以相互替代。
此外,从图4衍生特征的样例结果可以看出,部分字段的取值是比较大的,例如特征x3^2,由于本例的自由度定义为3,则字段x3^3的值域范围更大(具体参见输出数据集),如果自由度取值设置更大,则相关字段的取值会特别大。因此,对于多项式方法衍生的特征字段,我们往往会对其进行标准化处理,这样使得特征取值更符合实际场景需要。但是,这里需要注意的是,对特征变量进行标准化时,不要对原始特征进行处理,除非场景的额外具体需要,我们这里标准化的目的只是希望将新衍生特征字段的取值分布,转换为更合理的形态。针对新衍生特征的标准化处理,具体实现过程如图5所示,输出结果样例如图6所示。
编辑
添加图片注释,不超过 140 字(可选)
图5 衍生特征标准化实现
编辑
添加图片注释,不超过 140 字(可选)
图6 衍生特征标准化结果
4、特征衍生评估
当完成特征衍生形成新的特征变量池后,并不会将所有字段直接放入模型进行变量拟合,而是需要对新衍生特征的性能进行评估,这样不仅有利于对特征衍生的效果验证,而且便于模型训练前的特征筛选。因此,针对本例衍生的新的特征字段,我们有必要对其性能效果进行分析,这里采用最常用的两种方法,分别是特征相关性分析、特征预测性分析。其中,特征相关性指的是每个特征变量与目标变量的关系,具体量化指标为pearson系数等;特征预测性指的是特征变量对目标的贡献程度,对应量化指标为IV值,下面我们将按照这2个维度,依次对新衍生的特征字段进行分析。
(1)特征相关性分析
特征相关性分析是评估新衍生特征与目标变量(target)的相关程度,这里通过常用的pearson系数来实现,取值(绝对值)越大说明当前特征与标签的相关性越强。为了证明新衍生特征字段的有效性,我们分别输出原始特征、衍生特征与目标变量的相关性系数,具体实现过程如图7所示。
编辑
添加图片注释,不超过 140 字(可选)
图7 特征相关性分析
根据以上过程得到原始特征、衍生特征与目标变量的相关性系数结果分别如图8、图9所示,为了便于展示分析,对于衍生特征的相关性展示系数较大的部分特征。
编辑
添加图片注释,不超过 140 字(可选)
图8 原始特征与目标相关性
编辑
添加图片注释,不超过 140 字(可选)
图9 衍生特征与目标相关性
由以上特征相关性系数结果可知,可以获取2个主要关键信息,第1个信息是原始特征与目标变量的最大相关性系数绝对值为0.174968,对应特征为x3,而衍生特征与目标变量的最大相关性系数绝对值为0.185374,对应特征为x2x3^2;第2个信息是原始特征的相关性系数(绝对值)大于0.1以上的只有x3,而衍生特征相关性系数(绝对值)大于0.1以上的有9个,此外大于0.07以上的也有很多,详见生成的具体数据集。通过以上两点可以说明,新衍生的特征字段与目标变量有较好的相关性,说明特征衍生是有效的。
(2)特征预测性分析
特征预测性分析是通过特征IV指标来量化分析的,IV值越大说明特征对目标的预测能力越强,当然这也是特征变量与目标变量相关性的另一种体现。这里同样为了对比分析,我们依次输出原始特征、衍生特征的IV值,具体实现过程如图10所示,其中对于衍生特征,此处仅展示部分字段来进行说明,输出结果如图11所示。
编辑
添加图片注释,不超过 140 字(可选)
图10 特征预测性分析
编辑
添加图片注释,不超过 140 字(可选)
图11 特征IV值对比
以上衍生特征IV值分布结果仅为部分特征,若分析其他衍生特征可参见本文附带代码,这里为了便于分析,选取新衍生特征x0^2x1、x0^2x2等6个字段作为样例。通过原始特征与衍生特征的IV值结果可知,原始特征IV最大值为0.236,对应字段为x3,而衍生特征IV最大值为0.265(在当前6个特征范围),对应字段为x2^2x3,其预测性是明显由优于原始特征的。此外,相比原始特征IV的最小值0.169,新衍生特征多数都是高于这个阈值的。因此,从特征预测性角度分析,同样说明了特征衍生的有效性。
综合特征相关性与特征预测性这2个维度的分析结果,反映了本文针对样本原始数据的多项式特征衍生,得到的新字段与目标变量有较好的相关程度,而且普遍优于原始特征的性能,说明特征衍生的有效性与合理性,这也正是实际业务场景需要的。
为了便于大家对多项式方法衍生特征的进一步熟悉与理解,本文额外附带了与以上内容同步的python代码与样本数据,供大家学习参考,详情请移至知识星球参考相关内容。
编辑切换为居中
添加图片注释,不超过 140 字(可选)
更多详细内容,有兴趣的童鞋可关注:
编辑切换为居中
添加图片注释,不超过 140 字(可选)
...
~原创文章
温馨提示:注:内容来源均采集于互联网,不要轻信任何,后果自负,本站不承担任何责任。若本站收录的信息无意侵犯了贵司版权,请给我们来信(j7hr0a@163.com),我们会及时处理和回复。
原文地址"风控模型算法,建立风控模型是什么工作":http://www.guoyinggangguan.com/xedk/150131.html。

微信扫描二维码关注官方微信
▲长按图片识别二维码