前言

特征工程与特征提取

之前混淆了特征工程特征提取的区别,以为是一个东西,实际上是不一样的。所以有时看到深度学习的论文使用特征选择算法时有点懵,这不是机器学习的东西吗?混淆了机器学习和深度学习的本质特征,搞得很乱,需要梳理一下。

机器学习中的特征工程

特点:必须手工选择特征

机器学习依赖手工设计特征,在机器学习工作流中占据重要地位,大多数传统机器学习算法(如逻辑回归、支持向量机、随机森林)对输入特征的表达形式敏感,需要通过手工设计特征来提高模型性能。

特征工程的作用:

  1. 降维和去噪:去掉不相关或冗余的特征以减少计算复杂度。
  2. 特征转换:将原始数据转换为适合模型的输入形式(如归一化、标准化)。
  3. 提升性能:通过合理的特征提取和构造,显著提升模型的准确性和泛化能力。

深度学习中的特征工程

特点:可以自动完成特征提取

特定场景下仍需手工特征工程,例如很多论文中使用了特征选择算法来选取最有特征,那是在深度学习模型之前进行的,将选取的特征放入深度学习模型之中进行特征提取。

深度学习的优势:

  1. 自动特征提取:通过多层非线性变换(如卷积层、池化层),从原始数据中学习出有效的特征表示。
  2. 适应复杂特征:擅长从高维数据(如图像、语音、文本)中自动提取复杂特征。

深度学习是否需要特征工程?

可以灵活选择。深度学习模型具有自动特征提取的强大能力。在某些特定任务中,手工特征工程可以与深度学习结合使用,以提升性能和效率。例如处理稀疏、高维或包含大量噪声的数据时,可以进行特征工程清除噪声、异常值或无效数据。如果直接对原始数据进行特征选择,可能会因为数据质量问题导致选择的特征不准确。

特征选择 vs 特征提取

  • 特征选择(Feature Selection):
    • 目标是从现有特征中选择最有用的特征,剔除冗余或无关特征。
    • 这是一个显式的、独立于模型的操作,通常在数据预处理阶段完成
  • 特征提取(Feature Extraction):
    • 在训练过程中会自动学习新的特征表示,这些特征是从输入数据中提取的、对分类任务最有用的深层表示。
    • 这种过程并不是直接选择输入数据中的原始特征,而是通过多层非线性变换生成新的高维特征。

为什么深度学习仍需特征选择?

即使深度学习具备强大的特征提取能力,结合特征选择仍然有以下好处

  • 降低输入维度
  • 减少不相关或冗余特征,提高训练效率,降低计算资源消耗
  • 减少噪声影响
  • 手工筛选掉与目标任务无关的特征,提升模型的泛化能力。
  • 加快收敛速度
  • 输入更有用的特征有助于模型更快地学到关键模式。

如果不进行特征选择,直接将原数据传入神经网络,深度学习也不会进行特征选择而是进行特征提取吗?

如果不进行特征选择,直接将原始数据传入深度神经网络,深度学习不会显式地进行特征选择,而是通过其多层结构自动进行特征提取

深度学习的核心能力在于自动特征提取不进行显式特征选择。它能够从原始输入数据中学习到适合特定任务的特征,而无需手工设计或选择特征。直接将原始数据传入深度神经网络,可以充分利用深度学习的特征提取能力,但会出现上述提到的多种问题,例如影响训练效率、导致欠拟合、泛化能力受限等。

总结

方面 机器学习特征工程 深度学习特征提取
定义 手工设计和选择特征 自动从数据中学习特征表示
依赖领域知识 高度依赖 较少依赖
自动化程度
处理高维数据 需要降维或特征选择 能直接处理高维数据
结果依赖性 特征选择质量直接影响结果 数据质量和模型结构共同决定
适用场景 数据规模较小或领域知识丰富的场景 数据规模大或特征复杂的场景

维度 特征选择 特征提取
定义 从现有特征中选择子集,不改变原始特征。 将原始特征转换为新的、更高效的特征表示。
是否生成新特征 否,仅选择已有特征。 是,生成新特征表示。
常见方法 互信息、随机森林、L1正则化等 PCA、CNN、t-SNE等。
适用场景 数据包含冗余特征,维度较高,需要降维。 需要构造新的特征以捕获数据的潜在模式或结构。
结果 精简后的原始特征集。 全新的特征表示,通常是低维或高抽象特征。

二者的区别

一句话总结:特征选择是“从中挑选”,特征提取是“生成新特征”

  • 特征选择是从现有的特征集合中挑选出对任务最有用的特征,去除冗余或无关特征,以简化模型输入,减少计算复杂度,提高模型的泛化能力。
  • 特征提取是将原始特征转换为新的、更紧凑的特征表示,生成新的特征空间。通过构造新特征捕获数据的内在结构或模式,提高模型的表示能力。

  • 特征选择不改变特征本身,仅选择其中的子集。
  • 特征提取生成新的特征,可能改变特征的表示方式或维度。

使用AE降维属于特征提取还是特征选择?

将原始数据输入到自动编码器(Autoencoder, AE)中进行降维,并将降维后的数据输入到深度学习模型中进行训练,这个过程属于特征提取(Feature Extraction),而不是特征选择。

自动编码器通过训练生成的低维特征表示是新的特征,通常是原始特征的非线性组合,并非从原始特征中直接挑选出来的子集。

自动编码器降维后生成的特征可以理解为:

  1. 新特征空间
    • 它是原始特征的重新表示,捕获了数据的主要模式或特征。
    • 例如,图片的像素值经过自动编码器后,可能生成“边缘强度”、“纹理模式”等新特征。
  2. 压缩特征表示
    • 保留了原始数据的大部分信息,但维度更低。
    • 例如,将100维数据压缩到10维后,这10个新特征可能是原始特征的主要线性或非线性组合。

虽然自动编码器输出的维度数量是固定的,但这些维度是基于全新的特征空间生成的,而不是从原始特征中直接挑选出来的。

特征提取生成新特征的案例

案例1:主成分分析(PCA)

数据场景

  • 原始特征:三种水果的重量(苹果、橙子、香蕉)。
  • 数据:
苹果 橙子 香蕉
100 150 50
120 130 60
90 140 55

过程

  1. 计算特征的协方差矩阵。
  2. 通过特征值分解找到投影方向。
  3. 将原始数据投影到主成分方向,生成新特征“水果重量的综合表示”。

新特征

  • 主成分1:所有水果的平均重量。
  • 主成分2:苹果与香蕉重量的对比。

案例2:图像分类中的卷积神经网络(CNN)

数据场景

  • 输入:一张 28×28 的手写数字图片。

生成新特征的过程

  1. 低层特征提取

    • 第一层卷积核提取边缘特征(例如“横线”或“竖线”)。
    • 生成的特征可能是一个边缘特征图。
  2. 中层特征提取

    • 第二层卷积提取简单形状特征(例如“圆形”或“方块”)。

    • 生成的特征是形状特征图。

  3. 高层特征提取

    • 第三层卷积提取数字的整体特征(例如“数字0的圆环形”)。

    • 输出特征可以表示为一个高维向量,每个值代表不同的特征强度。