特征提取是将数据转换为计算系统可用的可测量属性或表征的过程。在机器学习中,这些特征为预测、分类或其他分析任务提供输入。特征提取器可以将文本转换为数值向量,通过局部模式描述图像,或将已有测量值投影到新的坐标系中。这种变换既可以由设计者指定,也可以从数据中学习得到;其目的是以适合后续处理的形式呈现数据中有用的结构。(scikit-learn.org)
范围与相关概念
特征提取器可以表示为映射 ,其中 是一个观测, 是其表征, 表示所有可调参数。有些映射没有需要学习的参数,另一些映射则从样例中获得参数。随后,下游预测器以 而非原始输入为处理对象。这种分工可以是显式的,例如在预处理流水线中;也可以存在于联合训练的神经网络内部。(deeplearningbook.org)
特征提取不同于特征选择:特征选择保留已有属性的一个子集,而特征提取则构造或编码一种表征。特征工程是一项范围更广的实践活动,涵盖特征的设计、变换和组织。当得到的表征具有更少的坐标时,降维与特征提取有所重叠,但特征提取不一定会降低维数。例如,一篇文档可能被转换为一个包含数千个词汇坐标的向量。表征学习专门研究如何从数据中发现表征,而不是手动定义表征的全部性质。(scikit-learn.org)
人工设计的表征
在自然语言处理中,词袋模型通过词元出现的次数来表示文档,通常不考虑词元的顺序。分词与词元化决定计数所采用的单位,这些单位可以是词、子词或其他单位。词频—逆文档频率(TF–IDF)利用词项在整个文档集合中的分布广度信息来调整计数。这类表征通常存储在稀疏矩阵中,因为大多数文档只包含词汇表中的一小部分词项。其简单性使它们在计算上很实用,但忽略顺序也限制了它们所能保留的语言信息。(scikit-learn.org)
特征哈希通过哈希函数将符号形式的特征名称映射到固定数量的坐标上。它无需维护完整的特征名称字典,也能处理此前未见过的名称。不过,不同特征可能映射到同一个坐标,从而发生碰撞。因此,所选择的表征维数既影响存储需求,也影响不同属性混杂在一起的程度。(scikit-learn.org)
在计算机视觉中,人工设计的描述子对视觉属性进行概括,而不是将每个像素都视为独立属性。方向梯度直方图描述子先计算图像梯度,再将梯度方向汇总为局部直方图,并对相邻区域组成的区域组进行归一化。得到的向量通过不同方向上的强度变化来描述局部外观。归一化可以降低描述子对某些光照变化的敏感性,但这种表征仍然取决于区域大小、方向分箱数量等设置。(scikit-image.org)
统计特征提取
主成分分析(PCA)构造一组彼此正交的方向,使每个方向依次解释中心化数值数据中尽可能多的方差。仅保留部分主成分即可得到低维表征。若 ,其投影可写为
其中, 是拟合得到的均值, 的各列是保留的主成分方向。PCA 可以通过奇异值分解计算。(sklearn.org)
PCA 是一种无监督学习方法:其常规形式只使用输入测量值,不使用目标标签。因此,保留高方差方向与保留对某项预测任务最有用的信息,并不是同一个目标。特征缩放也很重要,因为采用不同数值尺度的变量可能对主成分方向产生不同程度的影响。仅进行中心化并不能使这些变量的尺度标准化。PCA 的主成分是原始属性的组合,因此,紧凑的表征可能不如原始测量值直观易懂。(sklearn.org)
神经网络学习的特征
在深度学习中,网络中间层的激活值可用作学习得到的特征。卷积神经网络可以为最终的分类器提供图像表征,生成特征的各层与该分类器一起训练。在监督学习中,表征由带标签的任务及其损失函数塑造,而不只是由独立指定的描述子决定。(docs.pytorch.org)
自编码器则学习一对编码器和解码器,尝试重构输入。其内部编码可以作为提取出的表征。限制编码维数或施加其他训练约束,可以抑制简单复制输入的行为,并促使模型形成有用的结构。不过,成功重构输入本身并不能证明该编码对另一项分类任务而言是最优的。(deeplearningbook.org)
在迁移学习中,预训练网络可以作为固定的特征提取器使用:其参数保持冻结,同时利用其输出来训练新的预测层。这与微调不同,后者会针对新任务更新部分或全部预训练参数。固定特征提取将表征的复用与新预测器的学习分开,而微调则允许表征本身发生变化。(docs.pytorch.org)
评估与流水线完整性
特征提取是经拟合的分析系统的一部分,而不只是前期的格式处理操作。在常规的归纳式评估中,词汇表、词项权重、均值和投影方向等学习得到的量,都是根据训练数据估计的。随后,将拟合好的变换原样应用于测试集。如果利用留出的观测数据来估计这些量,就可能引入数据泄漏(机器学习),使性能估计过于乐观。(scikit-learn.org)
在交叉验证过程中,依赖数据的特征提取步骤要在每一折的训练数据上分别拟合。因此,评估衡量的是特征提取器与下游模型组合后的表现。部署时,系统必须沿用训练时的变换、坐标含义和预处理约定;否则,看似有效的数值输入可能实际表示另一个特征空间。流水线将这些依赖关系明确呈现出来,有助于保持拟合过程与后续使用的一致性。(scikit-learn.org)