← 返回题目列表

特征选择有哪些方法?Filter、Wrapper、Embedded 怎么区分?

高频 中等 第 11 / 25 题 更新于 2026/07/28
特征工程特征选择过滤法嵌入法

简化版

特征选择是从原始特征里挑出对目标最有用的子集,目的是降维、去噪、防过拟合、提速、增强可解释性。三大类方法:Filter(过滤法)——按统计指标(方差、相关系数、卡方、互信息)打分排序,和模型无关、快、但忽略特征间组合Wrapper(包裹法)——把模型当黑盒,用「加减特征看模型效果」搜索最优子集(如 RFE、前向/后向),效果好但极慢、易过拟合Embedded(嵌入法)——特征选择嵌在模型训练里(L1 正则让系数变 0、树模型的特征重要性),效率和效果的平衡,工业最常用

详细版

三类方法对比:

类别代表方法是否用模型速度是否考虑特征组合过拟合风险
Filter 过滤方差、相关系数、卡方、互信息、IV否(单特征打分)
Wrapper 包裹RFE、前向/后向选择、遍历搜索是(反复训练)
Embedded 嵌入L1(Lasso)、树的特征重要性、正则是(训练即选择)部分

为什么要做特征选择:

  • 对抗维度灾难 / 过拟合:无关特征多会让模型学到噪声。
  • 提速降本:特征少,训练和推理都快、存储省。
  • 增强可解释性:留下真正重要的特征,模型更好理解。
  • 去冗余去噪:删掉重复、无关、纯噪声的特征。

要点: Filter 快但盲(不看特征组合、不看模型);Wrapper 准但贵;Embedded 训练顺带完成,最实用。

完整版教学

一、为什么要专门做特征选择——不是特征越多越好

新手常以为「特征越多信息越多、模型越准」,其实相反:

  • 维度灾难 + 过拟合:无关或噪声特征越多,模型越容易把噪声当规律,泛化变差,尤其样本不够多时。
  • 训练/推理变慢、成本变高:每多一维都要计算和存储。
  • 可解释性变差:几千个特征没人说得清模型在看什么。
  • 共线性 / 冗余:重复表达同一信息的特征互相干扰。

特征选择就是从原始特征集里挑一个更小、更有用的子集,在不明显损失(甚至提升)效果的前提下,换来更快、更稳、更可解释的模型。注意它和降维(PCA)不同:特征选择是保留原始特征的一个子集(可解释),降维是把特征组合成新特征(不可解释)。

二、Filter 过滤法:先用统计指标筛一遍

思路:完全不依赖模型,只用统计指标给每个特征打分,排序后取 Top-K 或卡阈值。常见指标:

  • 方差过滤:方差接近 0 的特征(几乎所有样本取值一样)没区分度,直接删。
  • 相关系数(Pearson):衡量特征与目标的线性相关,适合连续特征、连续目标。
  • 卡方检验(Chi-square):衡量类别特征与类别目标的相关性。
  • 互信息(Mutual Information):能捕捉非线性依赖,比相关系数更通用。
  • IV / WOE:风控里衡量特征对二分类目标的区分能力。

优点:快、和模型解耦(选完可用于任何模型)、不易过拟合。 缺点

  1. 只看单特征与目标的关系,忽略特征间的组合效应——两个单独看都弱、组合起来很强的特征会被误删;两个都强但高度冗余的特征会被同时保留。
  2. 打分标准和最终模型无关,Filter 认为好的特征,模型未必用得好。

所以 Filter 常作为第一道粗筛(先砍掉明显没用的),再交给后面更精的方法。

三、Wrapper 包裹法:让模型来评判特征子集

思路:把模型当成黑盒评估器,直接用「某个特征子集训练出的模型效果(如交叉验证得分)」来评价这个子集好不好,通过搜索找最优子集。

  • 前向选择:从空集开始,每轮加入「使效果提升最大」的一个特征,直到不再提升。
  • 后向消除:从全集开始,每轮删掉「删了效果损失最小」的特征。
  • RFE(递归特征消除):反复训练模型、按重要性删掉最差的特征、再训练,逐步逼近目标特征数。

优点:直接以「模型效果」为目标,能考虑特征间的组合/交互,选出的子集对该模型往往最优。 缺点

  1. 极慢:要反复训练模型很多次,特征多时组合爆炸。
  2. 易过拟合:反复用同一批数据挑特征,可能过拟合到验证集,要用嵌套交叉验证防。
  3. 和特定模型绑定:为模型 A 选的特征换到模型 B 未必好。

四、Embedded 嵌入法:训练模型时顺便完成选择

思路:把特征选择嵌进模型训练过程,训练完成的同时就得到了特征重要性/取舍。两大代表:

  • L1 正则(Lasso):在损失里加 λΣ|wᵢ|,会把不重要特征的系数直接压成 0,非零系数对应的就是被选中的特征。这是「训练即选择」的经典例子(原理见 L1/L2 正则专题)。
  • 树模型的特征重要性:随机森林、GBDT、XGBoost 训练后能给出每个特征的重要性(按分裂带来的纯度增益 / 使用次数),据此筛选。

优点效率和效果兼顾——只训练一次(或少数几次)就完成选择,比 Wrapper 快得多,又比 Filter 更贴合模型、能部分考虑特征交互。工业界最常用缺点:和具体模型(及其正则强度)绑定;树的重要性对高基数特征有偏好(易高估),Lasso 在特征高度相关时会随机只留一个

五、三类方法怎么配合用——实战流程

它们不是互斥的,实战常串起来用

① Filter 粗筛:先删掉零方差、与目标几乎无关、明显冗余的特征(快、省后续算力)

② Embedded 精选:用 Lasso / 树重要性 在剩余特征上做主力筛选

③ Wrapper 微调(可选):特征已不多时,用 RFE 等在小范围里搜最优子集

④ 结合业务:保留业务上确知重要、可解释的特征,剔除会造成泄露的特征

六、几个高频追问

  • 特征选择 vs 降维(PCA)区别? 选择是保留原始特征子集(可解释、可回溯业务含义);PCA 是线性组合出新特征(不可解释,但能压缩相关信息)。要可解释选前者,纯压缩可用后者。
  • 相关系数高的两个特征删哪个? 它们冗余,保留和目标更相关、或业务更可解释的那个,另一个删掉降共线性。
  • 特征选择要不要放进交叉验证? 必须放进 Pipeline,在每一折的训练部分内部做选择,否则「用全量数据选特征」会造成数据泄露、评估虚高。
  • Filter 会不会误删有用特征? 会——它看不到特征组合,所以别只靠 Filter,配合 Embedded 更稳。

七、用数字和工程流程校验理解

从 1000 个候选特征中先用 Filter 降到 100 个,再用 L1 或树模型 Embedded 方法缩到 30 个,最后对少量候选做 Wrapper 搜索,比直接枚举 2^1000 个子集现实得多。选择过程必须嵌入交叉验证,否则会高估效果。

对象/方案核心机制选择或风险
Filter统计量独立于或弱依赖模型快,但可能漏掉交互
Wrapper反复训练评估特征子集针对模型但计算昂贵
Embedded训练过程中完成选择效率与模型偏好折中

把面试题落到可执行流程:

remove leakage/constant/duplicate
 -> filter coarse screening
 -> embedded selection
 -> nested CV evaluate final pipeline

先用全量数据选特征再交叉验证会把验证折信息泄露进选择结果;特征选择本身也必须在每个训练折内完成。

八、常见误区与追问

  • 误区:相关系数低的特征一定无用。 它可能通过非线性关系或与其他特征交互产生预测价值。
  • 误区:树的 feature importance 高就代表因果重要。 重要性只描述模型预测贡献,还可能受高基数和相关特征偏置影响。
  • 追问:RFE 属于哪类方法? 它反复训练模型并递归删除特征,属于 Wrapper。
  • 追问:L1 为什么属于 Embedded? 选择效果在模型目标优化过程中由稀疏系数直接产生。
  • 追问:强相关特征怎么处理? 可按稳定性、成本和业务含义保留代表项,并检查选择在不同折中的一致性。

九、加强记忆

记忆时抓住这条主线:特征选择目的是降维去噪、防过拟合、提速、增可解释,做法分三类,抓住「要不要用模型、慢不慢、看不看特征组合」就能区分:Filter 过滤——纯统计指标(方差/相关/卡方/互信息)打分,不用模型、最快、但只看单特征忽略组合,当粗筛;Wrapper 包裹——把模型当黑盒,靠加减特征搜索最优子集(RFE、前后向),看组合、效果好但极慢易过拟合Embedded 嵌入——训练即选择(L1 让系数变 0、树的特征重要性),效率效果平衡、工业最常用。实战是「Filter 粗筛 → Embedded 精选 →(可选)Wrapper 微调 → 结合业务」,且选择必须放进交叉验证的每一折防泄露。别忘了它和 PCA 降维的区别:选择保留原始特征(可解释),降维组合出新特征(不可解释)