特征选择与特征提取(ML vs DL)
前言
特征工程与特征提取
之前混淆了特征工程与特征提取的区别,以为是一个东西,实际上是不一样的。所以有时看到深度学习的论文使用特征选择算法时有点懵,这不是机器学习的东西吗?混淆了机器学习和深度学习的本质特征,搞得很乱,需要梳理一下。
机器学习中的特征工程
特点:必须手工选择特征
机器学习依赖手工设计特征,在机器学习工作流中占据重要地位,大多数传统机器学习算法(如逻辑回归、支持向量机、随机森林)对输入特征的表达形式敏感,需要通过手工设计特征来提高模型性能。
特征工程的作用:
- 降维和去噪:去掉不相关或冗余的特征以减少计算复杂度。
- 特征转换:将原始数据转换为适合模型的输入形式(如归一化、标准化)。
- 提升性能:通过合理的特征提取和构造,显著提升模型的准确性和泛化能力。
深度学习中的特征工程
特点:可以自动完成特征提取
特定场景下仍需手工特征工程,例如很多论文中使用了特征选择算法来选取最有特征,那是在深度学习模型之前进行的,将选取的特征放入深度学习模型之中进行特征提取。
深度学习的优势:
- 自动特征提取:通过多层非线性变换(如卷积层、池化层),从原始数据中学习出有效的特征表示。
- 适应复杂特征:擅长从高维数据(如图像、语音、文本)中自动提取复杂特征。
深度学习是否需要特征工程?
可以灵活选择。深度学习模型具有自动特征提取的强大能力。在某些特定任务中,手工特征工程可以与深度学习结合使用,以提升性能和效率。例如处理稀疏、高维或包含大量噪声的数据时,可以进行特征工程清除噪声、异常值或无效数据。如果直接对原始数据进行特征选择,可能会因为数据质量问题导致选择的特征不准确。
特征选择 vs 特征提取
- 特征选择(Feature Selection):
- 目标是从现有特征中选择最有用的特征,剔除冗余或无关特征。
- 这是一个显式的、独立于模型的操作,通常在数据预处理阶段完成
- 特征提取(Feature Extraction):
- 在训练过程中会自动学习新的特征表示,这些特征是从输入数据中提取的、对分类任务最有用的深层表示。
- 这种过程并不是直接选择输入数据中的原始特征,而是通过多层非线性变换生成新的高维特征。
为什么深度学习仍需特征选择?
即使深度学习具备强大的特征提取能力,结合特征选择仍然有以下好处:
- 降低输入维度
- 减少不相关或冗余特征,提高训练效率,降低计算资源消耗
- 减少噪声影响
- 手工筛选掉与目标任务无关的特征,提升模型的泛化能力。
- 加快收敛速度
- 输入更有用的特征有助于模型更快地学到关键模式。
如果不进行特征选择,直接将原数据传入神经网络,深度学习也不会进行特征选择而是进行特征提取吗?
如果不进行特征选择,直接将原始数据传入深度神经网络,深度学习不会显式地进行特征选择,而是通过其多层结构自动进行特征提取。
深度学习的核心能力在于自动特征提取, 不进行显式特征选择。它能够从原始输入数据中学习到适合特定任务的特征,而无需手工设计或选择特征。直接将原始数据传入深度神经网络,可以充分利用深度学习的特征提取能力,但会出现上述提到的多种问题,例如影响训练效率、导致欠拟合、泛化能力受限等。
总结
| 方面 | 机器学习特征工程 | 深度学习特征提取 |
|---|---|---|
| 定义 | 手工设计和选择特征 | 自动从数据中学习特征表示 |
| 依赖领域知识 | 高度依赖 | 较少依赖 |
| 自动化程度 | 低 | 高 |
| 处理高维数据 | 需要降维或特征选择 | 能直接处理高维数据 |
| 结果依赖性 | 特征选择质量直接影响结果 | 数据质量和模型结构共同决定 |
| 适用场景 | 数据规模较小或领域知识丰富的场景 | 数据规模大或特征复杂的场景 |
| 维度 | 特征选择 | 特征提取 |
|---|---|---|
| 定义 | 从现有特征中选择子集,不改变原始特征。 | 将原始特征转换为新的、更高效的特征表示。 |
| 是否生成新特征 | 否,仅选择已有特征。 | 是,生成新特征表示。 |
| 常见方法 | 互信息、随机森林、L1正则化等 | PCA、CNN、t-SNE等。 |
| 适用场景 | 数据包含冗余特征,维度较高,需要降维。 | 需要构造新的特征以捕获数据的潜在模式或结构。 |
| 结果 | 精简后的原始特征集。 | 全新的特征表示,通常是低维或高抽象特征。 |
二者的区别
一句话总结:特征选择是“从中挑选”,特征提取是“生成新特征”
特征选择是从现有的特征集合中挑选出对任务最有用的特征,去除冗余或无关特征,以简化模型输入,减少计算复杂度,提高模型的泛化能力。特征提取是将原始特征转换为新的、更紧凑的特征表示,生成新的特征空间。通过构造新特征捕获数据的内在结构或模式,提高模型的表示能力。
特征选择不改变特征本身,仅选择其中的子集。特征提取生成新的特征,可能改变特征的表示方式或维度。
使用AE降维属于特征提取还是特征选择?
将原始数据输入到自动编码器(Autoencoder, AE)中进行降维,并将降维后的数据输入到深度学习模型中进行训练,这个过程属于特征提取(Feature Extraction),而不是特征选择。
自动编码器通过训练生成的低维特征表示是新的特征,通常是原始特征的非线性组合,并非从原始特征中直接挑选出来的子集。
自动编码器降维后生成的特征可以理解为:
- 新特征空间:
- 它是原始特征的重新表示,捕获了数据的主要模式或特征。
- 例如,图片的像素值经过自动编码器后,可能生成“边缘强度”、“纹理模式”等新特征。
- 压缩特征表示:
- 保留了原始数据的大部分信息,但维度更低。
- 例如,将100维数据压缩到10维后,这10个新特征可能是原始特征的主要线性或非线性组合。
虽然自动编码器输出的维度数量是固定的,但这些维度是基于全新的特征空间生成的,而不是从原始特征中直接挑选出来的。
特征提取生成新特征的案例
案例1:主成分分析(PCA)
数据场景:
- 原始特征:三种水果的重量(苹果、橙子、香蕉)。
- 数据:
| 苹果 | 橙子 | 香蕉 |
|---|---|---|
| 100 | 150 | 50 |
| 120 | 130 | 60 |
| 90 | 140 | 55 |
过程:
- 计算特征的协方差矩阵。
- 通过特征值分解找到投影方向。
- 将原始数据投影到主成分方向,生成新特征“水果重量的综合表示”。
新特征:
- 主成分1:所有水果的平均重量。
- 主成分2:苹果与香蕉重量的对比。
案例2:图像分类中的卷积神经网络(CNN)
数据场景:
- 输入:一张 28×28 的手写数字图片。
生成新特征的过程:
低层特征提取
- 第一层卷积核提取边缘特征(例如“横线”或“竖线”)。
- 生成的特征可能是一个边缘特征图。
中层特征提取:
第二层卷积提取简单形状特征(例如“圆形”或“方块”)。
生成的特征是形状特征图。
高层特征提取:
第三层卷积提取数字的整体特征(例如“数字0的圆环形”)。
输出特征可以表示为一个高维向量,每个值代表不同的特征强度。



