发布时间:2024-06-27 15:01
特征变量筛选是建模流程的一项重要内容,也是在风控建模中经常遇到的高频问题。尤其是当建模样本中特征字段较多的情况,合理且有效的选择变量已经成为建模流程的一种内置“标配”。针对模型训练前的特征选择,不仅直接关系到模型拟合效果的好坏,而且还影响着模型训练周期的效率。因此,特征变量的筛选,对于模型的开发产出与性能提升,是非常有必要的一个环节。从某种意义上来讲,在数据处理和模型算法一定的情况下,特征变量的选择决定了模型效果的最终表现。
对于特征变量的选择,我们在实际建模实践中会有很多种方法,而且往往都会将其综合进行应用,具体维度包括分布性(缺失率、异常率)、相关性(pearson)、共线性(VIF)、价值性(IV)、稳定性(PSI)等,这也是特征工程的常见形式。当然,这些方法是非常有效的处理思路,可以实现缩小模型训练变量池且选择性能较优字段的效果。对于以上常见特征筛选方法,都是从特征角度采用相关算法得到的结果,而本文将要介绍的几种方法是从模型角度出发,通过机器学习有监督算法输出各字段的相关评价指标,从而实现特征变量范围的筛选。这样可以与前边所述的常用方法结合起来,在实际建模过程中从更多维度考虑进行变量选择,以保证进入模型训练环节的特征性能表现更好,且针对模型的拟合程度更具有贡献性。
本文介绍的采用模型思维筛选特征的三种方法分别为:决策树模型特征重要性、回归模型方程系数、模型区分度/拟合优度。对于各方法应用的介绍,我们将围绕具体的样本数据来展开描述,建模数据部分样例如图1所示,数据包含10000条样本与22个特征,其中字段Y为目标变量,取值二分类(0/1);字段X01~X20为特征变量,取值类型为float数值型。因此,这是一个二分类模型场景,模型的实现过程可以采用逻辑回归、KNN、随机森林、XGBoost、LightGBM等算法。
图1 建模样本数据
1、决策树模型特征重要性
对于随机森林、GBDT、AdaBoost、XGBoost、LightGBM等树模型,当模型训练结束后,都可以通过调用特征变量的feature_importances_属性,得到各个特征变量的重要性系数。这种方法在实际建模中经常被采用,尤其是采用树模型来构建模型时,无需调用其他模型算法,模型训练与变量筛选可以反复进行,而且各个特征的重要性系数可以很快捷的一次性输出,便于模型变量池的有效调整。
针对本文样本数据,现通过LightGBM分类算法来训练模型,并输出特征字段的重要性系数,具体代码实现过程如图2所示,输出结果如图3所示。
图2 特征重要性系数实现
从特征重要性系数importance的排序结果可知,特征X04对模型的贡献度最高(0.06338765),而特征X12对模型的贡献度最低(0.04363732),我们可以根据这个结果选取重要性系数相对较高的变量放入模型来重新训练,以降低重要性系数较低字段对模型拟合的影响,得到性能更好的模型。为了便于从整体上直观了解各个特征重要性的分布情况,我们可以将图3结果通过柱状可视化图效果来进行展示,具体实现代码与图形输出分别如图4、图5所示。
图4 重要性系数可视化实现
2、回归模型方程系数
对于线性回归、逻辑回归等算法,模型函数结果可以通过方程来表示,而每个自变量会赋予一定的系数,这个系数值便反映了特征变量X对目标变量Y的贡献程度,也就是在模型中的重要性程度。当系数的绝对值越大时,说明对模型的预测影响较大,反之同理。我们正是根据这个原理逻辑,来通过模型训练后回归方程的系数值来评估特征变量的重要性大小。
接下来我们采用逻辑回归算法,来对模型进行训练拟合,并通过调用模型变量的属性coef_,来输出各入模变量的系数,具体代码实现过程如图6所示,输出结果如图7所示。
图6 回归方程系数实现
图7 回归方程系数输出
从回归方程输出的特征重要性系数结果可知,各特征对模型的贡献情况,除了影响程度大小之外,还有正负方向的差别。根据各特征系数绝对值分析,特征X10对模型的影响程度最大(-0.131966),而特征X07对模型的贡献度最低(0.000415708)。我们可以通过这个系数分布结果选取较为重要(系数绝对值相对较高)的特征变量,重新来训练模型以提升模型效果。为了更直观了解各特征变量的系数分布情况,我们可以通过图4代码来实现可视化图效果,输出结果如图8所示。
图8 回归方程系数可视化结果
3、模型区分度/拟合优度
针对分类模型与回归模型,我们可以通过相关性能指标来评估模型的应用性能。例如,对于分类模型,可采用KS、AUC等指标来评估模型的区分度;对于回归模型,可采用r2等指标来评估模型的拟合优度。我们正是根据模型评估的原理,将每个特征变量作为模型唯一的入模字段,这样便可以通过模型评价结果来直接反映对应特征变量的性能。
由于本文案例的建模场景为分类模型,那么我们可以通过分类算法来实现每个特征变量的模型输出,这里采用逻辑回归算法来训练模型,并选取KS指标来评估模型的区分度,具体代码实现过程如图9所示。当建模场景为回归模型时,这里可以通过回归模型的r2指标来评估各特征字段的重要性程度。
图9 模型区分度指标实现
通过以上代码将每个特征变量输入作为单独模型来进行训练,并输出对应模型的区分度评价指标KS,结果如图10所示,并通过可视化图来展示各指标分布情况,具体如图11所示。
图10 模型区分度指标输出
从以上结果可知,特征X04(0.082260)、X13(0.055127)等对应模型的区分度较高,也直接反映了这些特征变量针对目标变量的区分度较好,而对于X02、X03等特征,由于KS指标均为0,说明对目标的区分性能较差。因此,在重新训练模型时,可以考虑将特征X02、X03、X07、X12、X16、X18、X19进行删除,然后将剩余特征作为模型训练的入模变量。
综合以上内容,我们通过决策树模型特征重要性、回归模型方程系数、模型区分度/拟合优度三个维度,介绍了从模型角度来筛选模型的特征变量,在实际建模过程中,可以将这几种方法与其他特征工程方法进行综合使用,以保证模型训练拟合的准确性,从整体上提升模型的应用性能。
为了便于大家掌握本文介绍的三种特征筛选方法,我们准备了与本文同步的样本数据与python代码,给大家在实际建模工作中参考学习并实践应用,详情请移至知识星球查看相关内容。
…
~原创文章