在日常开发风控模型的过程中,针对建模样本数的原始数据,我们往往会对特征字段进行处理,以优化模型拟合变量池的构建体系,为模型训练做好必要的数据准备。当特征数量比较少时,可以通过特征衍生方式扩大特征变量的规模;当特征数量比较多时,可以通过特征筛选方式保留性能较优的变量。其中,对于特征变量的筛选,本质上是降低特征群体的维度,具体可以通过特征的相关性(pearson)、共线性(VIF)、预测性(IV)、贡献性(importances)等多种方法,来完成特征的性能分析与字段选择,从而实现了特征从多维到低维的转化,有效提升了模型训练的效率。
针对样本特征从多维到低维的过渡,在数据处理过程中可以通过更系统的降维算法来实现,常见的有PCA(主成分分析)、LDA(线性判别分析)等。尤其是在样本特征字段非常多的情况下,PCA方法可以有效实现降维,因此在实际建模场景中应用较为广泛。为了便于大家理解并熟悉PCA的算法原理与效果分析,本文结合具体样例,来介绍下样本特征PCA降维应用的实现过程,同时采用XGBoost算法来对比特征变量降维前后的模型拟合性能。
1、PCA算法原理
PCA(Principal components analysis),主成分分析,一种无监督的特征降维方法,在数据冗余压缩、数据噪音消除等样本处理的情况中应用广泛。PCA的算法原理大致包括以下几个步骤:
(1)将原始数据(m条样本+n维特征)转置生成n行m列的矩阵X数据;
(2)将数据X的每行数据(代表1个属性字段)进行零均值化,即每行的样本元素值减去相应行数据的均值;
(3)算出协方差矩阵C=(1/m)XXT;
(4)算出协方差矩阵C的特征值及对应的特征向量;
(5)将特征向量按对应特征值大小按列排成矩阵,取前k列组成矩阵P;
(6)Y=PTX即为降维到k维后的数据。
PCA作为最常用的特征降维方法,在建模样本的分析处理过程中自然发挥了很好的作用,表现出比较明显的优点,但也在存在一定的不足,因此在实际应用中,务必要结合样本分布情况以及业务客观需求,来决定是否采用特征PCA的处理方法,这里简要概况下PCA的主要优缺点:
(1)PCA优点:只需要根据特征的方差来衡量字段包含的信息量,不会受到其他因素的干扰;各个主成分数据之间的正交过程,可以有效消除原始数据成分相互影响的情况;原理逻辑较为简单,主要过程为特征值的分解,易于实现效率较高;样本数据经过特征降维后,可以明显提升模型拟合训练的效率。
(2)PCA缺点:特征降维后得到的新变量,在业务理解上没有较合理的解释意义,并不像原始特征具有较明确的含义;方差表现较小的非主成分并不能说明对样本的区分度较差,可能存在对样本差异的重要贡献信息,而根据方差大小选择降维的范围会对后续模型精度有一定程度的影响。
2、特征降维分析
通过上文简单熟悉了特征降维PCA的实现逻辑与特点表现后,接下来我们重点围绕具体样本数据,来实现特征PCA的处理过程,并对降维前后的模型性能进行对比分析。实例样本数据包含5000条样本与16个特征字段,部分样例如图1所示,其中ID为样本主键,X01~X14为特征变量,取值类型为数值型;Y为目标变量,取值二分类,分别为0和1。
图1 样本数据
根据以上样本数据,我们来对特征进行降维处理,在python环境中,可以通过调用sklearn.decomposition.PCA函数实现。对于PCA的重要参数n_components,直接决定了降维的特征数量,此参数取值类型主要有4种情况:
(1)int整数(大于0):指定降维的特征维度数量;
(2)float小数(0~1):指定主成分方差之和的最小比例阈值;
(3)mle字符:采用MLE算法根据特征方差分布选择一定数量主成分特征;
(4)默认不输入:系统自行判断n_components=min(样本数,特征数)。
在实际场景中,最常用的类型主要是前两种情况,即指定降维的维度数量或方差和占比,我们将通过这两种方式来分别实现特征降维。在实现样本的特征降维之前,我们先从整体上来了解下样本所有特征数据投影后的方差分布,也就是直接指定参数n_components为样本特征数量14,具体实现过程如图2所示。
图2 主成分方差分布实现
以上在实现主成分维度的方差分布时,其中explained_variance_可以输出PCA降维后各主成分的方差值,方差取值越大,说明对应主成分的重要性表现越强;而explained_variance_ratio_可以得到降维后各主成分的方差值占总方差值的比例,方差比例取值越大,说明主成分的重要性越明显。通过以上方式,得到的样本数据主成分的方差分布信息具体如图3所示。
图3 主成分方差分布结果
由以上结果可知,样本数据投影后的前5个主成分的方差比例分别约为85.54%、6.21%、3.80%、2.24%、1.10%,已经占据了所有成分方差信息的98.89%,很大程度代表了原始样本数据的特征信息。因此,我们这里可以选定符合当前数据分布的特征降维数量为5,然后来实现样本特征降维的过程,具体如图4所示。
图4 特征降维实现(降维数量)
按照指定降维数量得到的主成分方差分布如图5所示,可以看出这5个主成分的方差信息正是前边图3所有主成分的前5个取值结果,这也是按照主成分体现样本信息的贡献度大小决定的。假设降维数量n_components设置为3,对应得到的结果则是取前3个主成分。
图5 特征降维主成分方差
此外,根据以上过程最终生成的新特征可以通过transform()函数实现的,其部分数据样例如图6所示。当然,如前边所述,降维处理后的新特征字段没有较好的业务解释意义。
图6 特征降维数据
为了进一步理解特征降维的实现效果,下面我们采用指定主成分方差之和最小比例阈值的方法来完成特征降维,也就是指定参数n_components为小数,这里我们将其设置为0.99,代表特征降维后的主成分方差和要满足99%以上,已很大程度代表了原始数据的信息,具体实现过程如图7所示,降维后主成分的方差分布如图8所示。
图7 特征降维实现(方差比例)
图8 特征降维主成分方差比例
在指定降维主成分方差之和最小比例阈值99%的情况下,最终降维的数量为6,对应的方差占比之和满足0.99以上。从以上结果可以看出,这种指定参数方式的好处是可以有效保证降维后主成分包含的原始信息度,能够控制在需求的阈值以上,但不能直接指定特征降维的数量。
3、降维效果对比
通过以上分析,我们先后采用指定降维数量与指定方差占比两种常用方式,实现了样本数据的特征降维。同时,从最终结果来看,降维效果表现较好,不仅较大幅度减少了特征的维度,而且很大程度保留了原始数据信息。但是,在实际场景中,围绕建模样本数据的特征降维处理,其目的是为了提升后续模型拟合训练的效率。因此,为了说明特征降维的有效性与合理性,我们来对比下特征降维前后的模型性能表现。这里采用XGBoost算法来实现,由于样本数据的目标变量Y为二分类情况,则可以通过XGBClassifier分类算法来构建模型。此外,我们选取准确率accuracy指标来评估特征降维前后的模型效果,具体实现过程分别如图9所示。
图9 特征降维前后模型效果
通过以上模型对比分析,得到特征降维前后的模型准确率accuracy分别为0.9014、0.9016,二者指标性能表现是非常接近的,可见特征降维后仍然可以保持原始特征数据训练的模型效果,主要原因为特征降维的处理过程较大程度的保留了原始数据信息,这也正是我们在实际业务场景中需要得到的效果。
综合以上内容,我们从实际场景入手,系统的介绍了PCA主成分分析在特征降维过程的原理逻辑与处理过程。同时,结合具体数据样例,详细分析了PCA降维的实现方法,重点描述了通过指定降维数量与指定方差占比两种常用方式,来获取特征降维的结果。此外,我们采用XGBoost分类算法模型,对比了特征降维前后的模型性能效果,最终也很好验证了特征降维对建模样本数据处理的有效性。
为了便于大家进一步熟悉并掌握PCA特征降维的实现方法与应用过程,本文额外附带了以上内容同步的样本数据与python代码,供大家参考学习,详情请移至知识星球查看相关内容。
另外跟模型相关的内容,还有以下的M训练营课题,课程详情如下:
以上课程点击左下角【阅读原文】进行了解。
一.课程课程老师介绍
本次课程由番茄风控的从业多年的风控模型专家老师,开班授课。
M老师
老师介绍 :
①多年消费金融风控模型从业,历任模型经理,专家岗,擅长信贷风控模型;
②某大企金融线模型团队长Leader,头部金融科技事业部经理;
③风控模型专家岗,擅长信贷风控模型的全流程的开发与搭建;
二.课程授课时间:六月份
第一次:6月29日上午9:30-12:00
第二次:6月30日上午9:30-12:00
第三次:7月6日上午9:30-12:00
第四次:7月7日上午9:30-12:00
三.授课形式:远程直播授课
官方企业微信号,扫码添加