⑴ 特征选择之经典三刀
特征选择是数据科学和机器学习领域中至关重要的环节。这一过程旨在从海量特征中提取关键且有价值的特征,以优化模型性能和提升准确性。本文将探讨特征选择的原理、经典方法及其应用,以帮助读者理解如何在模型训练中进行有效的特征选择。
在构建模型时,特征选择解决的核心问题是判断哪些特征与目标变量相关,哪些特征可能无关或冗余。这一问题本质上是组合优化问题,涉及到在大量特征中寻找最优子集。
特征选择方法主要分为三种:Filter、Wrapper 和 Embedded。
Filter 方法是一种过滤式特征选择方法,它独立于后续学习器,通过计算特征与目标变量之间的相关度进行选择。常用的方法有皮尔逊相关系数、Gini 系数、信息增益、方差校验等。方差表示数据分布的发散程度,通常认为方差较小的特征对模型贡献较小;皮尔逊相关系数衡量特征间的线性相关性。
Wrapper 方法将特征选择过程与分类器封装在一起,通过交叉验证评估特征子集的性能。实现方式包括前向搜索和后向搜索,其中递归特征消除(Recursive Feature Elimination)是一种常见的后向搜索方法,通过逐步剔除最不重要的特征来优化模型。
Embedded 方法利用分类器本身的特性进行特征选择,如通过 L1 或 L2 正则化实现特征稀疏化。L1 正则化具有稀疏性,容易淘汰不重要特征;L2 正则化可以使特征权值趋于平均,解决不稳定问题。树模型如随机森林也可以作为特征选择的工具,通过计算属性对模型不纯度或精确度的影响来评估特征重要性。
本文还提供了一个特征分析工具,实现了上述方法的评估,包括 Pearson 相关系数、方差、递归特征消除、稳定性选择、L1 和 L2 正则化以及基于随机森林的特征重要性计算。
特征选择在数据预处理阶段至关重要,有助于减轻维数灾难问题,提高模型性能,同时增强对数据特征的理解,尤其是在安全等关键领域。通过优化特征集,可以有效降低学习难度,提升模型的准确性和泛化能力。
总之,特征选择是提升机器学习模型性能的关键步骤。本文介绍的Filter、Wrapper和Embedded方法提供了多种策略,帮助数据科学家和机器学习工程师在特征工程中做出明智的选择。希望这些方法能帮助您在实践中优化模型,实现业务增长和数字化转型。
⑵ 特征选择总结之 过滤式特征选择(附代码)——单变量过滤式特征选择方法总结
特征选择总结中的单变量过滤方法,主要包括以下几种方法:
sklearn库中提供了这些方法的实现,但在使用时需注意公式和计算细节,如卡方检验只计算部分情况,Fisher得分针对连续特征,而WOE和IV值则针对离散特征。在实际应用中,应根据问题特性和模型需求选择合适的特征选择方法。
⑶ 特征选择的相关性过滤
我们希望选出与标签有关且有意义的特征,因为这样的特征携带更多的信息,如果特征与标签无关,只会浪费计算内存,可能还会给模型带来噪声,在sklearn中有三种常用的方法来评判特征与标签之间的相关性:卡方,F检验,互信息
1.1卡方过滤
卡方过滤是专门针对离散型标签(即分类问题)的相关性过滤,卡方检验类feature_selection.chi2计算每个非负特征与标签之间的卡方统计量,并依照卡方统计量由高到低为特征排名,再结合feature_selection.SelectKBest这个可以输入“评分标准”来选出前K个分数最高的特征的类,我们可以借此除去最可能独立于标签,与我们分类目的无关的特征。
另外,如果卡方检查中检测到某个特征中所有的值都相同,会提示我们先使用方差过滤。
1.2 K参数的选取
实际中的数据量会很大,模型很复杂的时候也许不允许我们先跑一遍模型看看效果,而是希望最开始就能选择一个最优的超参数K,可以使用学习曲线。
通过这条曲线,我们可以观察到,随着K值的不断增加,模型的表现不断上升,这说明,K越大越好,数据中所有的特征都是与标签相关的。但是运行这条曲线的时间同样也是非常地长,接下来说一种更好的选择k的方法:看p值选择k
卡方检验的本质是推测两组数据之间的差异,其检验的原假设是“两组数据是相互独立的”。卡方检验返回卡方值和P值两个统计量,其中卡方值很难界定有效的范围,而p值,我们一般使用0.01或0.05作为显著性水平,即p值判断边界,具体如表格所示
从特征工程的角度,我们希望获取卡方值很大,p值小于0.05的特征,即和标签是相关联的特征,而调用SelectKBest之前,我们可以直接从chi2实例化后的模型中获得各个特征所对应的卡方值和p值。
1.3 F检验
F检验,又称ANOVA,方差齐性检验,是用来捕捉每个特征与标签之间的线性关系的过滤方法,它即可以做回归也可以做分类,因此包含feature_selection.f_classif(F检验分类)和feature_selection.f_regression(F检验回归)两个类,其中F检验分类用于标签是离散型变量的数据,而F检验回归则用于标签是连续性变量的数据。
和卡方检验一样,这两个类都需要和SelectKBest连用,并且我们也可以直接通过输出的统计量来判断我们到底要设置多大的K值。F检验在数据服从正态分布是效果会非常稳定,因此如果使用F检验过滤,我们会先将数据转化成正态分布的方式。
F检验的本质是寻找两组数据之间的线性关系,其原假设是“数据不存在显著的线性关系”,它返回F值和P值两个统计量,和卡方过滤一样,我们希望选取P值小于0.05或是0.01的特征,这些特征与标签是显著线性相关的,而P值大于0.05或是0.01的特征被 我们认为是与标签没有显著线性关系的特征,应该被删除,以F检验的分类为例,在数字数据集上进行特征选择。
k=300,跟原特征数一样,说明没有任何的特征的p值大于0.01,所有的特征都是与标签相关的,因此不需要相关性过滤。
1.4 互信息法
互信息法是用来捕捉每个特征与标签之间的任意关系(线性关系和非线性关系)的过滤方法,跟F检验一样,可以做回归也可以做分类,并且包含两个类feature_selection.mutual_info_classif和feature_selection.mutual_info_regression(互信息回归),这两个类的用法和参数都和F检验一模一样,不过互信息法比F检验更加强大,F检验只能够找出线性关系,而互信息法可以找出任意关系。
1.5 过滤法总结
通常来说,会先使用方差过滤,然后使用互信息法来捕捉相关性,不过了解各种各样的过滤方式也是必要的。所有信息被总结在下表: