sklearn学习-特征选择过滤法,嵌入法,Wrapper包装法

本文围绕Python特征选择方法展开,介绍了特征工程需先理解业务,阐述了Filter过滤法(包括方差过滤、相关性过滤等)、嵌入法和Wrapper包装法。指出过滤法快速但粗糙,包装法和嵌入法精确但计算量大。还给出不同场景下方法的优先选择建议,提及特征工程还有更高级方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、特征工程的第一步是:理解业务

在这里插入图片描述

二、Filter过滤法

1、方差过滤 VarianceThreshold

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
我们怎样知道,方差过滤掉的到底时噪音还是有效特征呢?过滤后模型到底会变好还是会变坏呢?答案是:每个数据集不一样,只能自己去尝试。这里的方差阈值,其实相当于是一个超参数,要选定最优的超参数,我们可以画学习曲线,找模型效果最好的点。但现实中,我们往往不会这样去做,因为这样会耗费大量的时间。我们只会使用阈值为0或者阈值很小的方差过滤,来为我们优先消除一些明显用不到的特征,然后我们会选择更优的特征选择方法继续削减特征数量。

2、相关性过滤

在这里插入图片描述

在这里插入图片描述

可以观察到,所有特征的p值都是0,这说明对于digit recognizor这个数据集来说,方差验证已经把所有和标签无关的特征都剔除了,或者这个数据集本身就不含与标签无关的特征。在这种情况下,舍弃任何一个特征,都会舍弃对模型有用的信息,而使模型表现下降,因此在我们对计算速度感到满意时,我们不需要使用相关性过滤来过滤我们的数据。如果我们认为运算速度太缓慢,那我们可以酌情删除一些特征,但前提是,我们必须牺牲模型的表现。接下来,我们试试看用其他的相关性过滤方法验证一下我们在这个数据集上的结论。

3、F检验

在这里插入图片描述

4、互信息法

在这里插入图片描述

5、总结

三、嵌入法

在这里插入图片描述
从图像上来看,随着阈值越来越高,模型的效果逐渐变差,被删除的特征越来越多,信息损失也逐渐变大。但是在0.00134之前,模型的效果都可以维持在0.93以上,因此我们可以从中挑选一个数值来验证一下模型的效果。

在这里插入图片描述
得出的特征数目依然小于方差筛选,并且模型的表现也比没有筛选之前更高,已经完全可以和计算一次半小时的KNN相匹敌(KNN的准确率是96.58%),接下来再对随机森林进行调参,准确率应该还可以再升高不少。可见,在嵌入法下,我们很容易就能够实现特征选择的目标:减少计算量,提升模型表现。因此,比起要思考很多统计量的过滤法来说,嵌入法可能是更有效的一种方法。然而,在算法本身很复杂的时候,过滤法的计算远远比嵌入法要快,所以大型数据中,我们还是会优先考虑过滤法。

四、 Wrapper包装法

在这里插入图片描述
在这里插入图片描述
明显能够看出,在包装法下面,应用50个特征时,模型的表现就已经达到了90%以上,比嵌入法和过滤法都高效很多。我们可以放大图像,寻找模型变得非常稳定的点来画进一步的学习曲线(就像我们在嵌入法中做的那样)。如果我们此时追求的是最大化降低模型的运行时间,我们甚至可以直接选择50作为特征的数目,这是一个在缩减了94%的特征的基础上,还能保证模型表现在90%以上的特征组合,不可谓不高效。同时,我们提到过,在特征数目相同时,包装法能够在效果上匹敌嵌入法。试试看如果我们也使用340作为特征数目,运行一下,可以感受一下包装法和嵌入法哪一个的速度更加快。由于包装法效果和嵌入法相差不多,在更小的范围内使用学习曲线,我们也可以将包装法的效果调得很好,大家可以去试试看。

总结

至此,我们讲完了降维之外的所有特征选择的方法。这些方法的代码都不难,但是每种方法的原理都不同,并且都涉及到不同调整方法的超参数。经验来说,过滤法更快速,但更粗糙。包装法和嵌入法更精确,比较适合具体到算法去调整,但计算量比较大,运行时间长。当数据量很大的时候,优先使用方差过滤和互信息法调整,再上其他特征选择方法。使用逻辑回归时,优先使用嵌入法。使用支持向量机时,优先使用包装法。迷茫的时候,从过滤法走起,看具体数据具体分析。
其实特征选择只是特征工程中的第一步。真正的高手,往往使用特征创造或特征提取来寻找高级特征。在Kaggle之类的算法竞赛中,很多高分团队都是在高级特征上做文章,而这是比调参和特征选择更难的,提升算法表现的高深方法。特征工程非常深奥,虽然我们日常可能用到不多,但其实它非常美妙。若大家感兴趣,也可以自己去网上搜一搜,多读多看多试多想,技术逐渐会成为你的囊中之物。

<think>好的,我需要确定Relief算法属于过滤法包装法还是嵌入法中的哪一种。首先,我应该回忆这三种特征选择方法的定义特点,以及Relief算法的工作原理。 过滤法(Filter Methods)是在模型训练之前独立进行特征选择的方法,通常基于数据的统计特性,如相关系数、卡方检验、互信息等。它们不依赖于任何机器学习模型,直接评估特征的重要性。 包装法Wrapper Methods)使用某个特定的机器学习模型来评估特征子集的性能,通过不断选择不同的特征子集并评估模型效果,找到最佳组合。这类方法通常计算成本较高,但可能得到更好的性能,例如递归特征消除(RFE)遗传算法。 嵌入法(Embedded Methods)在模型训练过程中自动进行特征选择特征选择作为模型训练的一部分。例如,Lasso回归通过正则化惩罚项自动选择特征,决策树类模型根据特征的重要性进行选择。 接下来,我需要了解Relief算法的具体机制。Relief算法通过给每个特征赋予权重来评估其重要性。它通过比较同类异类样本之间的特征差异来更新权重,权重高的特征被认为更重要。这个过程不依赖于特定的分类器,而是基于数据本身的邻近关系进行计算。 考虑到Relief算法在特征选择过程中不需要训练具体的分类模型,而是直接分析数据样本之间的关系,因此它应该属于过滤法。它独立于后续的模型,仅根据数据的内在属性评估特征,这与过滤法的定义一致。而包装法需要依赖模型评估特征子集,嵌入法则在模型内部进行选择,这两者都不符合Relief的工作方。因此,结论是Relief属于过滤法。</think>**Relief算法属于特征选择中的过滤法(Filter Method)**。以下从原理、对比应用三个层面详细说明: --- ### **一、核心原理与过滤法的契合** 1. **特征权重更新机制** Relief通过**统计近邻样本差异**动态调整特征权重: - **同类别近邻(Hit)**:若当前样本与同类别近邻在某个特征上差异大,说明该特征区分同类能力弱,降低其权重; - **异类别近邻(Miss)**:若与异类别近邻差异小,说明该特征区分不同类别能力弱,同样降低权重。 *计算公示例*: $$\text{Weight}(F_i) = \text{Weight}(F_i) - \frac{\text{diff}(F_i, x, \text{Hit})}{m} + \frac{\text{diff}(F_i, x, \text{Miss})}{m}$$ 其中$m$为迭代次数,$\text{diff}$为特征差异度量。 2. **独立性验证** Relief**无需训练具体分类模型**,直接基于样本距离关系评估特征,符合过滤法**与模型解耦**的核心特点。 --- ### **二、与其他方法的对比** | **方法类型** | **特征评估依据** | **是否需要模型训练** | **计算效率** | **典型代表** | |--------------|------------------------|----------------------|--------------|-----------------------| | **过滤法** | 数据统计量/样本相似性 | 否 | 高 | Relief、卡方检验 | | **包装法** | 子集在模型上的性能 | 是 | 低 | RFE、遗传算法 | | **嵌入法** | 模型内部参数或损失函数 | 是 | 中 | Lasso、决策树GINI系数 | *关键差异*: - Relief与卡方检验同属过滤法,但**卡方检验依赖统计假设检验**,而Relief基于**特征在近邻空间中的判别力**; - 相较于包装法(如RFE需反复训练模型),Relief**无需迭代优化特征子集**,计算成本显著降低。 --- ### **三、遥感应用示例** 1. **高光谱波段选择** Relief可识别对地物分类敏感的波段。例如在农作物分类中,Relief可能赋予**红边波段(705-750 nm)**更高权重,因其对叶绿素含量敏感。 2. **时序特征筛选** 在土地利用变化检测中,对NDVI时序曲线提取统计特征(如均值、方差),Relief可自动筛选出**生长季峰值幅度****秋季下降速率**等关键时序特征。 --- ### **四、优缺点总结** - **优点**: - 兼容连续型离散型特征; - 对特征间的非线性关系有一定捕捉能力(优于方差过滤等简单方法)。 - **缺点**: - 对噪声数据缺失值敏感; - 未显考虑特征冗余性(需结合其他方法去冗余)。 --- ### **操作建议** 1. **Python实现**: 使用`sklearn-relief`库快速计算特征权重: ```python from relief import ReliefF fs = ReliefF(n_neighbors=5) fs.fit(X, y) print(fs.feature_importances_) # 输出特征权重 ``` 2. **参数调优**: - 调整`n_neighbors`(近邻数)平衡计算效率与稳定性; - 对大规模数据,可先进行分层抽样提升速度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值