前言
本文主要对特征工程中特征选择部分的部分常见方法的数学原理进行讲解,将不涉及或很少涉及代码实现或应用,阅读前请确保已了解基本的机器学习相关知识。
特征选择:
- 【特征选择】Filter – 过滤法中的数学原理 – 掘金 (juejin.cn)
- 【特征选择】Embeded/Wrapper-嵌入法与包装法中的数学原理
文章概述
在上文介绍完过滤法后,本文主要对特征选择中常用的嵌入法和包装法的原理进行介绍。
不同于过滤法,过滤法更多地基于统计学知识对特征进行评估,因此会包含大量的统计学知识;但嵌入法和过滤法更多地基于模型本身和一些逻辑判断,相比之下原理更加简单,效果却更好。
嵌入法(Embedded):特征选择和模型训练同时进行,通过使用相关机器学习模型对数据的拟合来计算各个特征的重要性,利用重要性对特征进行筛选。
包装法(Wrapper):特征选择和算法训练同时进行,相对过滤法和嵌入法拥有更高的计算成本,使用特征子集进行多次训练。
嵌入法(Embedded)
嵌入法:嵌入法是一种让模型自己决定使用哪些特征的方法,即特征选择和模型训练同时进行。在使用嵌入法时,我们会先使用某些机器学习模型对数据进行拟合,得到各个特征的权值系数,根据权值系数从大到小选择特征。这些权值系数往往代表了特征对于模型的某种贡献或某种重要性
- 例如决策树或树的集成模型中我们可以根据选择某特征进行分支的不纯度下降数,可以列出各个特征对模型建立的贡献,从而基于这种贡献对特征进行评估,找出对模型建立最有用的特征。
嵌入法原理
嵌入法判断特征重要性是根据当前场景所使用的模型本身来判断的:
- 对于树和树的集成模型,树模型会根据不纯度下降数来进行每次分支的特征选择,不纯度下降数对于树模型来说反映的就是特征重要程度,树模型在拟合数据后往往都会保留以这种方法计算得到的各个特征对于模型建立的特征重要性,嵌入法根据这些特征重要性来对特征进行筛选。
- 对于最终得到一个映射函数的模型,各个特征对应的权重系数可以反应对应特征对模型构建的重要程度,我们会根据最终的权重系数来对特征进行选择。
此外,对于使用正则化惩罚项的模型,惩罚项越大,特征在模型中对应的权重系数就越小,但模型为了最优化损失,会优先降低那些相对更不重要的特征对应的权重系数,一定程度上随着惩罚项系数的增大,特征是否重要的区分也会被权重系数表现地更为明显,并且由于正则项的存在,一些对模型影响很小的特征对应的权重系数可能会被降为 0,对于使用正则化的模型嵌入法一般会通过这种方式删去最终权重系数为0的特征。
在得到当前数据集对模型的特征重要性后,往往需要自定义设置一个阈值,重要性高于阈值的得到保留,低于阈值的舍弃,但是对于使用正则化惩罚项的模型,我们则需要设置惩罚项的系数,系数越大,最终权重系数为 0 的特征越多,筛除的特征也就越多。
嵌入法的原理非常简单,对于一个可以反映特征重要性的模型,将特征选择直接抛给模型本身来做,核心思想就是 “让模型自己决定哪些特征对自己来说更重要”。
嵌入法优缺点分析
相对于过滤法,嵌入法的优势:嵌入法的结果会更加精确到模型本身,对于提高模型性能可能有更好的效果。此外,由于考虑特征对模型的贡献程度,因此相关性弱的特征(需要相关性过滤的特征)和无区分度的特征(需要方差过滤的特征)都会因为缺乏对模型的贡献而被删除掉,相当于过滤法的进化版。
相对于过滤法,嵌入法的劣势:过滤法中使用的统计量可以使用统计知识和常识来查找范围(如p值应当低于显著性水平0.05),而嵌入法中使用的权值系数却没有这样的范围可找。权重系数为 0 的特征对模型丝毫没有作用,但当大量特征都对模型有贡献且贡献不一时,我们就很难去界定一个有效的临界值;这种情况下,模型的权重系数就是超参数,我们一般需要学习曲线(超参数各值对模型性能影响的曲线)或根据模型本身的某些性质去判断这个超参数的最佳值究竟应该是多少。
此外,嵌入法引入了机器学习模型来进行特征选择,因此其计算速度也会和待应用的模型有很大的关系,如果采用计算量大的模型,嵌入法本身也会非常耗时耗力,并且在选择完毕之后,我们还是需要自己来评估模型。
包装法(Wrapper)
包装法:包装法也是一个特征选择和算法训练同时进行的方法,与嵌入法相似,它也是根据算法或模型自身的选择来完成特征选择。但不同的是,我们往往使用一个目标函数作为黑盒来帮助我们选取特征,而不是自己确定某个评估指标或统计量的阈值。包装法在初始特征集上训练评估器,并且通过算法获得每个特征的重要性;然后从当前的一组特征中舍弃重要程度最低的特征。在所有特征中递归地重复该过程,直到特征数量达到预期要选择的数量为止。
这里的 “算法”,指的不是机器学习中的模型算法,而是专业的数据挖掘算法,即我们的目标函数,这些数据挖掘算法的核心功能就是选取最佳特征子集。
包装法原理
过滤法和嵌入法的流程在于一次训练解决所有问题,包装法则使用特征子集进行多次训练,因此包装法相对来说有着更高的计算成本。
这里介绍一个包装法中最典型的目标函数。
递归特征消除法(Recursive Feature Elimination,RFE):RFE 是一种贪婪的优化算法,是最典型的目标函数。
- 算法思想:反复创建模型,在每次迭代时保留最佳特征(或剔除最差特征),下一次迭代时,使用上一次建模中没有被选中的特征来构建下一个模型,直到所有特征都耗尽为止;最终根据保留或剔除特征的顺序来对特征进行排名,从而找到一个最佳子集。
关于特征好坏的评估,RFE通常基于剔除某特征后模型性能的变化。
包装法优缺点
相比嵌入法,包装法的优势:相比嵌入法中对模型进行一次训练然后对特征重要性进行排名,一次性训练只能得知全集上的特征重要性,包装法的迭代搜索则可以评估特征子集的增量效果,且考虑特征之间的相关性,便于移除冗余特征;可深度优化给定模型的特征子集。
例如存在高度相关的特征,若使用嵌入法,嵌入法只进行一次训练,考虑各个特征在全集下的各特征重要性,则可能会选择这样的冗余特征;而若使用包装法,包装法进行多次迭代,例如存在两个高度相关的特征 x1x_1 和 x2x_2,在第一次训练时发现 x1x_1 最重要,保留 x1x_1,然后对剩下的特征再次进行训练,结果发现差别不大,则说明特征 x1x_1 与剩下的特征中的其它特征存在高度相关,属于冗余特征,因而舍弃。
相比嵌入法,包装法的劣势:包装法由于需要多次迭代,则需要更大的计算资源,因此对于很大型的数据集不如嵌入法更实用
总结
特征选择的常见方法有过滤法、嵌入法、包装法;其中
- 过滤法:过滤法更快,算力成本最小,但相应地更为粗糙,特征筛选的效果一般不如嵌入法和包装法,我们一般使用过滤法进行初步的特征选择。
- 嵌入法:相对过滤法有更好的效果,且能应对数据量很大的情况,效果和算力成本都不错。
- 包装法:包装法有着最好的效果,但算力成本要求最大,不适合应对数据量很大的情况。
方法选择:
当数据量很大的时候,优先使用方差过滤和互信息法调整,再使用其他特征选择方法。使用逻辑回归时,优先使用嵌入法;使用支持向量机时,优先使用包装法;数据量很大时,使用嵌入法,迷茫的时候,从过滤法开始,然后具体数据具体分析,多进行尝试。