查看全课大纲(第 20 / 35 节)

特征选择综述

约 5 分钟

小象实战讲义 · 特征工程精讲与实践

在特征工程的前序环节,我们学习了如何通过各种方法(如编码、变换、衍生等)从原始数据中“无中生有”或“精雕细琢”地构建出大量新特征。然而,当特征数量从十几维膨胀到几百甚至上千维时,我们面临新的挑战:并非所有特征都对模型有益,有些甚至有害。本节将系统介绍特征选择(Feature Selection)的概念、意义及其在机器学习建模流程中的关键位置,为你理解后续具体的特征选择方法打下坚实基础。

💡 核心导读

  • 定义与定位:明确特征选择是建模流程中,在特征构建之后、模型训练之前,对特征进行筛选与精简的关键环节。
  • 核心意义:理解为何要进行特征选择,包括消除冗余、降低噪声、防止过拟合、提升训练效率和模型泛化能力。
  • 基本思路:掌握特征选择的两个基本评估维度:特征的发散性(如方差)和特征与目标变量的相关性。
  • 方法概览:初步了解特征选择的三大主流方法:过滤法(Filter)、包裹法(Wrapper)和嵌入法(Embedded)。

特征选择的定义与建模阶段

特征选择,顾名思义,是在建模过程中,从已构建的特征集合里,挑选出一个特征子集的过程。它的目标是保留对模型预测最有用的特征,同时剔除冗余、无关甚至有害的特征。

为了更好地理解特征选择所处的位置,我们回顾一下一个典型的机器学习建模流程:

  1. 数据采集与探索:获取原始数据,进行探索性数据分析(EDA),了解数据概况与分布。
  2. 数据预处理:进行数据清洗与整理,包括处理缺失值、异常值等。
  3. 特征构建:运用离散化、编码、变换、衍生等方法,从预处理后的数据中提取或构造新特征。这是一个从少到多的过程,旨在充分表征和提取数据中的有效信息。
  4. 特征选择:对构建出的大量特征进行筛选,选取最有效的特征子集用于建模。这是一个从多到精的过程。
  5. 模型训练与评估:使用选定的特征子集训练模型,并进行评估与调优。

特征选择并非在所有场景下都百分之百必要。例如,当特征维度本身不高,或计算资源极其充裕时,可以跳过此步骤。然而,在特征维度较高(几十维以上)的工业场景中,特征选择通常是提升模型效率与效果的关键一环。

特征选择的意义

为什么我们需要在特征构建之后,再进行一次特征选择呢?主要基于以下几点重要意义:

  1. 消除特征冗余,提升计算效率:数据中可能存在多个特征高度相关,它们所携带的信息大量重叠。如果全部送入模型,会消耗不必要的计算资源,显著拖慢模型训练和预测的速度。通过特征选择剔除冗余特征,可以缩短训练时间,简化模型结构。

  2. 降低噪声干扰,提升模型效果:在批量构建特征的过程中,难免会产生一些对目标变量预测帮助不大、甚至包含随机噪声的特征。这些“无用”特征会干扰模型学习真正的规律,对模型结果产生负面影响。移除它们有助于模型聚焦于关键信息。

  3. 缓解维数灾难,防止模型过拟合:当特征数量过多,尤其是相对于样本数量而言时,模型很容易陷入过拟合(Overfitting)。模型会过度适应训练数据中的噪声和偶然模式,导致在训练集上表现良好,但在未知数据(测试集或线上)上泛化能力下降。这种现象与“维数灾难”(Curse of Dimensionality)密切相关。通过特征选择减少特征维度,可以有效控制模型的复杂度,增强模型的泛化能力。

综上所述,特征选择是平衡模型性能与效率的重要手段。它帮助我们构建一个更简洁、更高效、更稳健的预测模型。

特征选择的基本思路与方法概览

在进行特征选择时,我们主要从两个基本角度来评估一个特征的价值:

  • 特征是否发散:如果一个特征取值几乎没有变化(例如方差接近0),意味着这个特征在所有样本上都差不多,无法帮助区分不同样本。这样的特征应该被剔除。一个常见的例子是某个特征几乎全是同一个常数,或者某个取值占比超过90%。
  • 特征与目标的相关性:与目标变量相关性高的特征,通常包含更多对预测有用的信息,应当优先保留。除了方差法,大多数特征选择方法都侧重于从相关性角度进行考量。

基于不同的实现策略,特征选择方法主要分为三类:

  1. 过滤法(Filter Methods):

    • 思路:独立于任何机器学习模型,仅根据特征的统计性质(如方差、与目标的相关性)进行筛选。
    • 方法:包括方差筛选、相关系数法、卡方检验、互信息法等。
    • 特点:计算速度快,但未考虑特征之间的相互作用,也可能忽略特征与模型组合后的效果。
  2. 包裹法(Wrapper Methods):

    • 思路:将特征选择过程视为一个特征子集搜索问题,使用一个特定的机器学习模型(如逻辑回归)来评估不同特征子集的性能。
    • 方法:典型算法如递归特征消除(Recursive Feature Elimination, RFE)。
    • 特点:考虑特征间的相互作用及与模型的配合,通常能获得更好的性能子集,但计算成本高昂,因为需要多次训练模型。
  3. 嵌入法(Embedded Methods):

    • 思路:特征选择过程与模型训练过程融为一体。模型在训练的同时,会自动进行特征选择。
    • 方法:最常见的是在模型中加入正则化项(如L1正则化),使得不重要的特征对应的系数趋于零,从而实现特征选择。
    • 特点:平衡了过滤法和包裹法的优点,效率较高且考虑了模型特性。

在后续小节中,我们将对这三种方法进行详细的原理讲解与代码实践。

📝 动手练一练

  1. 概念辨析:假设你有一个包含100个特征的数据集,经过初步分析,你发现其中10个特征的方差几乎为0,另外有5对特征(10个)之间的相关系数超过0.95。仅从过滤法的基本思路出发,你认为至少可以移除多少个特征?为什么?
👉 点击查看参考答案

至少可以移除 15 个特征。

  • 方差接近0的特征(10个):根据“特征是否发散”的原则,这些特征无法区分样本,应全部移除。
  • 高相关特征对(5对,共10个):每对高度相关的特征携带的信息大量重叠,保守策略是每对保留一个、移除另一个,共可移除5个。
  • 总计:10 + 5 = 15 个。注意不建议把某一对的两个特征全部移除——在不知道它们与目标相关性时,两个都删可能把这一维度的信息彻底丢掉。
  1. 场景思考:在一个在线广告点击率预测项目中,特征工程师构建了上千维特征。项目经理要求模型必须能在毫秒级别返回预测结果。此时,你会优先考虑使用过滤法、包裹法还是嵌入法进行特征选择?请简述理由。
👉 点击查看参考答案

优先考虑过滤法,其次考虑嵌入法。

  • 理由:线上推理对速度和延迟有极高要求(毫秒级)。过滤法独立于模型,计算速度最快,筛选后的特征子集可以显著降低模型推理时的计算复杂度。嵌入法(如带L1正则化的模型)在训练时完成特征选择,最终的模型本身只使用部分特征,推理速度也较快。包裹法需要多次训练模型来评估特征子集,计算成本最高,且其筛选出的子集虽然可能性能最优,但对应的模型在推理速度上不一定是最优的,在严格延迟限制下可能不是首选。

本章小结

本节作为特征选择章节的开篇,为我们勾勒出了特征选择的整体图景。我们明确了特征选择是建模流程中承上启下的关键步骤,理解了它对于提升模型效率、效果和泛化能力的重要意义,并初步认识了过滤法、包裹法和嵌入法这三大主流技术路线。

📋 行动清单

  • 定位流程:在脑海中清晰绘制出包含“特征选择”环节的完整机器学习建模流程图。
  • 理解意义:能够向他人清晰阐述在什么情况下需要进行特征选择,以及它能带来的三大核心好处。
  • 方法初识:记住特征选择的三种基本方法(过滤、包裹、嵌入)及其最核心的特点。

—— 小象教研组