为了提高机器学习算法的能力,我们需要抽取有效、稳定的特征。
传统的特征提取是通过人工方式进行的,需要大量的人工和专家知识。一个成功的机器学习系统通常需要尝试大量的特征,称为特征工程(Feature Engineering).但即使这样,人工设计的特征在很多任务上也不能满足需要。
因此,如何让机器自动地学习出有效的特征也成为机器学习中的一项重要研究内容,称为特征学习 (Feature Learning),也叫表示学习(Representation Learning)。特征学习在 一定程度上也可以减少模型复杂性、缩短训练时间、提高模型泛化能力、避免过拟合等。
一、传统的特征学习:
人为设计准则、选取,传统的特征学习分为两种:特征选择和特征抽取。
1、特征选择(Feature Selection):
在机器学习中,特征选择(Feature Selection)指的是从原始数据中挑选出对预测目标最有用的那部分特征,同时剔除那些冗余、噪声较多或无关的特征。这样做的主要目的是提高模型的性能和泛化能力,同时降低模型的复杂度和计算成本。
子集搜索 - 一种直接的特征选择方法为子集搜索(Subset Search):
假设原始特征数为 𝐷,则共有 2^𝐷 个候选子集。特征选择的目标是选择一个最优的候选子集。 最暴力的做法是测试每个特征子集,看机器学习模型哪个子集上的准确率最高。
但是这种方式效率太低。常用的方法是采用贪心的策略:由空集合开始,每一轮添加该轮最优的特征,称为前向搜索(Forward Search);或者从原始特征集合开始,每次删除最无用的特征,称为反向搜索(Backward Search)。
在包装方法中,特征选择本质上就是一个子集搜索问题,即在所有可能的特征子集中寻找一个最优子集;而过滤方法和嵌入方法则采用不同的策略,但目标都是为了确定对模型预测最有帮助的特征。
(1)特征选择的意义
- 提高模型性能:去除无关或冗余特征,可以减少噪声对模型的干扰,提高模型的准确性。
- 降低过拟合风险:特征数量过多可能导致模型过拟合,通过选择最相关的特征,可以让模型更专注于真正重要的信息。
- 减少计算成本:减少输入特征的维度可以降低模型训练和预测时的计算负担。
- 增强模型解释性:较少的特征有助于理解模型决策的依据,便于解释和应用。
(2)特征选择的方法
常见的特征选择方法主要可以分为三类:过滤法(Filter Method)、包裹法(Wrapper Method) 和 嵌入法(Embedded Method)。
-
过滤法(Filter Method)
- 基本思想:独立于模型,对每个特征与目标变量之间的相关性进行评估,然后选择得分较高的特征。
- 常用方法:
- 相关系数:如皮尔逊相关系数,用于衡量连续变量之间的线性相关性。
- 互信息:衡量两个变量之间的依赖关系,适用于非线性关系。
- 卡方检验:通常用于分类问题,评估每个特征与目标类别之间的关联强度。
- 方差筛选:剔除方差低(变化小)的特征。
-
包裹法(Wrapper Method)
- 基本思想:将特征子集选择问题作为搜索问题,通过在给定模型上反复训练,选择使模型性能最优的特征组合。
- 常用方法:
- 前向选择(Forward Selection):从空特征集开始,逐步添加能使模型性能提升最大的特征,直到没有显著改进为止。
- 后向消除(Backward Elimination):从全特征集开始,逐步剔除对模型性能影响最小的特征,直到去除任何特征都会使性能下降为止。
- 递归特征消除(Recursive Feature Elimination, RFE):不断训练模型并移除最不重要的特征,直到达到预设特征数量或性能最佳。
-
嵌入法(Embedded Method)
- 基本思想:特征选择过程嵌入到模型训练中,同时进行参数估计和特征选择。
- 常用方法:
- 正则化方法:例如Lasso回归(L1正则化),在优化目标中加入正则项,使得部分不重要的特征的系数收缩到零,从而实现自动特征选择。
- 树模型特征重要性:例如决策树、随机森林等模型,通过训练过程中评估特征对预测的贡献,进而筛选出重要特征。
2、特征抽取
(1)我们先看看特征抽取和特征选择的本质区别是什么 ?
特征抽取和特征选择都是为了改善模型性能、降低数据维度、提高效率,但它们的本质区别在于:
-
特征选择:
直接从原始特征中挑选出一部分与目标最相关的特征,其本质是一个子集选择问题。它不改变原始特征的表达方式,只是剔除那些冗余或无关的特征,从而降低数据维度。例如,在一个有100个特征的数据集中,可能通过相关性分析或正则化方法(如Lasso)选择出其中最重要的20个特征用于训练模型。 -
特征抽取:
则是通过一定的变换将原始数据转换到一个新的特征空间,在这个过程中会生成全新的特征表示。其目标是从原始高维数据中提取出最具信息量的低维表示,同时保留原始数据的主要特性。例如,使用主成分分析(PCA)可以将原始数据转换为若干个正交的主成分,这些主成分是原始特征的线性组合,能够解释大部分数据的方差。
总结:
- 特征选择是在原始特征集合中挑选出一个子集,不改变特征的表达形式;
- 特征抽取则是通过数学变换将原始数据映射到新的特征空间,从而生成新的特征表示。
两者都旨在降低数据维度和提高模型性能,但特征抽取更侧重于通过转换找到更有效的表示,而特征选择则关注于筛选最有用的原始特征。
(2)特征抽取:
特征抽取(Feature Extraction)是构造一个新的特征空间,并将原始特征
投影在新的空间中得到新的表示.以线性投影为例,令 𝒙 ∈ R^𝐷 为原始特征向量, 𝒙′ ∈ R^𝐾 为经过线性投影后得到的在新空间中的特征向量,有
𝒙′ = 𝑾𝒙,
其中𝑾 ∈ R^𝐾×𝐷 为映射矩阵.
特征抽取(Feature Extraction)是机器学习和数据挖掘中的一个关键步骤,其主要目标是从原始数据中提取出能够有效表征数据本质信息的特征或表示,从而使得后续的模型训练和预测更加准确和高效。它通常涉及降维、数据变换或从数据中提取潜在表示等过程。下面详细说明特征抽取的概念及常见方法:
(3)特征抽取的概念
-
定义:
特征抽取是将原始数据转换为一组新的、更有信息量且通常维度较低的特征的过程。这些新特征应尽可能保留原始数据中与任务(如分类、回归等)相关的重要信息,同时剔除噪声和冗余信息。 -
意义:
- 降维与去噪:在高维数据中,直接使用原始特征可能导致维度灾难和过拟合,通过特征抽取可以减少特征数量,同时提高模型的泛化能力。
- 提高效率:降维后的数据维度较低,既降低了计算复杂度,也便于可视化和解释。
- 增强信息表达:通过变换原始数据,往往能发现原始特征之间的内在关系,获得更具辨识度的特征表示。
(4)常见的特征抽取方法
特征抽取的方法通常可以分为传统统计方法和基于深度学习的方法,具体方法视数据类型而定:
1.针对数值数据和图像数据的传统方法
-
主成分分析(PCA, Principal Component Analysis):
通过线性变换将数据投影到一组正交基上,选择解释数据方差最多的若干个主成分。PCA可以降维并去除冗余信息,常用于探索数据的结构。 -
线性判别分析(LDA, Linear Discriminant Analysis):
除了降维,还试图最大化类别之间的分离度,常用于分类任务中的特征抽取。 -
独立成分分析(ICA, Independent Component Analysis):
用于将多变量信号分解为相互独立的成分,适用于信号处理等领域。
2.针对文本数据的特征抽取方法
-
TF-IDF(Term Frequency-Inverse Document Frequency):
衡量一个词在文档中出现频率的同时,降低在所有文档中普遍出现的词的权重,从而得到更具代表性的词汇特征。 -
词嵌入(Word Embedding):
通过将词语映射到连续低维向量空间(如 Word2Vec、GloVe、FastText 等),捕捉词与词之间的语义和上下文关系,从而获得更丰富的文本表示。
3.基于深度学习的特征抽取
-
自动编码器(Autoencoder):
利用神经网络将输入数据编码为低维表示,再解码回原始数据。中间隐藏层的激活值通常作为数据的抽象特征表示。 -
卷积神经网络(CNN):
尤其在图像处理任务中,CNN 能够自动从图像中提取层次化特征,如边缘、纹理、形状等。 -
预训练语言模型:
如BERT、GPT等,在自然语言处理任务中,通过预训练获得的深层次特征可以直接作为文本的特征表示。
(5) 示例说明
示例 1:文本情感分析中的特征抽取
假设我们有一组电影评论数据,任务是判断评论是正面还是负面。原始评论文本非常高维且稀疏。
- 步骤:
- 预处理:对文本进行分词、去除停用词等处理。
- 特征抽取方法:
- 使用 TF-IDF 方法计算每个评论中每个词的权重,得到一个向量表示;
- 或者利用预训练的词嵌入模型(如 Word2Vec 或 BERT)将每个词转换为低维向量,再通过求平均、池化等方式得到整个评论的向量表示。
- 结果:得到每条评论的低维向量,这些向量可以作为输入特征用于训练情感分类器(例如逻辑回归或神经网络)。
示例 2:图像识别中的特征抽取
假设我们需要识别手写数字。
- 步骤:
- 原始数据:图像数据通常为像素矩阵,维度很高。
- 特征抽取方法:
- 使用传统方法,如主成分分析(PCA)对图像进行降维,提取主要的视觉特征;
- 或者使用卷积神经网络(CNN)自动从图像中提取局部特征(如边缘、角点等),通过卷积和池化层逐步获得更抽象的特征表示。
- 结果:得到图像的低维特征向量或多层特征表示,作为分类器(如全连接神经网络或 SVM)的输入,实现手写数字的识别。
(4) 总结
- 特征抽取的意义:将原始数据转换为更具信息量、更低维度的表示,帮助模型更有效地学习和泛化。
- 对应的方法:根据数据类型,常用的方法有 PCA、LDA、TF-IDF、词嵌入、自动编码器、CNN 等。
- 应用场景:从文本情感分析到图像识别,再到语音处理等,特征抽取在各类机器学习任务中都扮演着关键角色。
这种方法不仅提升了模型的性能,还能帮助我们更好地理解数据的内在结构和语义。
二、与传统特征学习相对应的是深度学习方法
传统的特征抽取一般是和预测模型的学习分离的。我们会先通过主成分分析或线性判别分析等方法抽取出有效的特征,然后再基于这些特征来训练一个具体的机器学习模型。
如果我们将特征的表示学习和机器学习的预测学习有机地统一到一个模型中,建立一个端到端的学习算法,就可以有效地避免它们之间准则的不一致性. 这种表示学习方法称为深度学习(Deep Learning,DL).深度学习方法的难点 是如何评价表示学习对最终系统输出结果的贡献或影响,即贡献度分配问题。目前比较有效的模型是神经网络,即将最后的输出层作为预测学习,其他层作为表 示学习。
深度学习方法是一类通过多层神经网络结构自动学习数据特征的算法和技术,其主要方法和模型包括但不限于以下几类:
-
前馈神经网络(Feedforward Neural Networks, FNN)
- 最基本的深度神经网络形式,其中信息从输入层经过隐藏层最终传到输出层,常用于简单分类和回归任务。
-
卷积神经网络(Convolutional Neural Networks, CNN)
- 主要用于处理图像、视频等具有空间结构的数据。通过卷积层、池化层和全连接层自动提取局部特征和层次化特征。
- 应用领域包括图像识别、目标检测、图像分割等。
-
循环神经网络(Recurrent Neural Networks, RNN)
- 适用于序列数据(如文本、语音、时间序列等),通过循环结构处理时间上的依赖性。
- 常见变体包括长短时记忆网络(LSTM)和门控循环单元(GRU),这些结构能够解决标准 RNN 在长序列中梯度消失或爆炸的问题。
-
自编码器(Autoencoders)
- 一种无监督学习方法,通过构建编码器—解码器结构,将高维数据压缩到低维表示,再从低维表示重构原始数据。常用于降维、去噪和特征学习。
- 变种有稀疏自编码器、变分自编码器(VAE)等。
-
生成对抗网络(Generative Adversarial Networks, GANs)
- 由一个生成器和一个判别器组成,通过两者的对抗训练来生成与真实数据相似的新数据。
- GAN 已在图像生成、图像修复、风格迁移等任务中取得显著成果。
-
Transformer 及其变体
- 最初由 Google 提出的 Transformer 架构主要用于自然语言处理任务,基于自注意力机制处理序列数据,能够捕捉长距离依赖性。
- 典型应用包括 BERT、GPT、T5 等预训练语言模型,这些模型在文本生成、机器翻译、问答系统等领域取得了很大成功。
-
图神经网络(Graph Neural Networks, GNNs)
- 处理图结构数据的深度学习方法,通过节点、边和全局属性之间的消息传递机制,捕捉图中复杂的关系结构。
- 应用于社交网络分析、推荐系统、化学分子结构分析等领域。
-
深度强化学习(Deep Reinforcement Learning, DRL)
- 将深度学习与强化学习相结合,用于解决决策和控制问题。深度神经网络用于近似策略或价值函数,指导智能体在环境中通过试错学习最优策略。
- 应用包括游戏(例如 AlphaGo)、机器人控制、自动驾驶等领域。
深度学习方法覆盖了从基础的前馈神经网络到专门针对图像、文本、序列数据设计的卷积网络、循环网络,再到生成模型(如GAN、变分自编码器)和图结构模型(如GNN),以及结合决策过程的深度强化学习。它们共同的目标是利用多层结构自动从数据中提取复杂特征,解决传统机器学习中需要手工设计特征的问题。
这些方法各有侧重点和适用场景,在实际应用中,根据任务的数据类型、复杂性以及对模型解释性的要求,可以选择合适的深度学习模型进行训练和部署。
本文先总结性的列出深度学习的这些方法,后面我们逐一来学习和掌握。