【ML】特征降维与特征学习

本篇大致是根据提出顺序由浅入深介绍

PCA(Principle Component Analysis)

用最直观的方式告诉你:什么是主成分分析PCA

对于高维、大样本,难以直观地看出某个变量变异性的大小,难以提取到最有效的特征 PCA 是一种最常用的特征降维方法,去除掉相似的特征,保留无关性最大的特征,提高数据处理速度。PCA 能够将原始数据转换为一组线性不相关的成分,通常用于数据降维、特征提取和数据可视化等领域。

将高维数据投影到低维,使数据在低维上分布的方差最大(方差小数据挨得紧,要尽量让数据在低维分散,避免重合)

缺点:对离群点很敏感,一个离群点会导致轴偏移很大

PCA 通过正交变换将一组可能相关的变量的观察值转换为一组线性不相关变量的值,这组不相关变量称为主成分。PCA 的算法步骤可以简述如下:

  1. 标准化数据:如果各个特征数据的量纲(单位)不同或数值范围相差很大,需要先对数据进行标准化处理。标准化是为了避免数据中某些特征由于其数值范围大而对结果产生过大的影响。

  2. 计算协方差矩阵:协方差矩阵表达了数据特征间的相关性。如果数据已经中心化(即减去了均值),协方差矩阵可以通过数据矩阵与其转置的乘积,除以样本数减一得到。

  3. 计算协方差矩阵的特征值和特征向量:这些特征值和对应的特征向量表征了数据的主成分。特征值越大,对应的特征向量在数据集中的重要性就越高。

  4. 选择主成分:根据特征值的大小,选择前k个最大的特征值对应的特征向量,这些特征向量被称为主成分。k的选择取决于我们希望保留原始数据多少的信息。

  5. 形成特征向量矩阵:将选定的k个特征向量组合成一个矩阵,其中每一列代表一个特征向量。

  6. 数据转换:使用特征向量矩阵来转换原始数据。这通过将原始数据矩阵乘以特征向量矩阵来完成,结果是一个新的数据矩阵,这个矩阵的每一列都是原始数据在对应主成分上的投影。

拓展
核 pca

奇异值分解(Singular Value Decomposition,SVD)

【学长小课堂】什么是奇异值分解SVD--SVD如何分解时空矩阵
SVD 是一种重要的矩阵分解技术,在信号处理、统计学、语义分析等多个领域都有广泛的应用。对于任意一个mxn的矩阵A,都可以进行奇异值分解(参考:线性代数奇异值分解)

在实际应用中,尤其是面对大数据集时,直接计算协方差矩阵并进行特征值分解(PCA的传统方法)可能非常耗时。而SVD提供了一种更有效的方式来找到主成分,特别是当数据维度很高,但我们只需要最主要的几个成分时。通过对原始数据矩阵应用SVD,而不是先计算协方差矩阵,可以更快地获得主成分,尤其是使用截断SVD(一种只计算最大的几个奇异值和对应奇异向量的方法)时。

SVD 分解中的 V 矩阵(右奇异向量)和 PCA 的协方差矩阵的特征向量相对应

流形学习

流形学习(Manifold Learning)是一种探索和利用数据内在结构的非线性降维方法,特别关注于数据可能存在于高维空间中的低维流形。流形是一个可以被视为欧几里得空间的子集的数学空间,但在局部上又类似于欧几里得空间。流形学习的基本假设是高维数据实际上是沿着某个低维流形分布的,尽管这个流形嵌入在高维空间中。流形学习的目标是揭示这个低维结构,以便于数据的可视化、降维和进一步分析。

流形学习的核心思想在于,即使数据在全局上呈现复杂的非线性结构,其局部区域内的数据点却可能通过简单的线性变换相互关联。这种方法试图通过维护数据点在高维空间中的局部邻近关系来找到一个低维表示,从而尽可能保留数据的内在结构和特性。

流形学习的一些著名算法包括:

  1. 局部线性嵌入(Locally Linear Embedding, LLE):假定每个数据点及其最近邻居点是线性相关的,通过保持这种局部线性关系来寻找数据的低维嵌入。

  2. 等度量映射(Isomap):通过保持数据点之间的测地线距离(即数据流形上的实际距离,而非高维空间中的欧氏距离)来寻找低维表示。

  3. t-分布随机邻域嵌入(t-Distributed Stochastic Neighbor Embedding, t-SNE):通过将高维数据点之间的相似性转换为概率分布,然后在低维空间中以尽可能保持这些概率分布的方式来寻找每个数据点的位置。

流形学习的应用领域非常广泛,包括图像处理、语音识别、生物信息学和金融分析等。这些算法特别适用于那些传统的线性降维方法(如主成分分析PCA)无法揭示数据内在结构的情况。然而,流形学习也面临一些挑战,比如算法的计算成本、选择最佳参数、以及算法的可解释性。

度量学习

度量学习(Metric Learning)是机器学习中的一个重要领域,旨在通过学习数据点之间距离的最佳度量方式来改进各种任务,如分类、聚类和推荐系统。在传统的机器学习方法中,通常采用固定的度量(如欧氏距离或曼哈顿距离)来计算数据点之间的相似度或距离。然而,这些固定的度量方式可能并不总是能够有效地捕捉到数据的内在结构或关系。度量学习的目标是发现一种能够最佳地反映数据内在关系的度量方式。

主要思想

度量学习的核心思想是寻找或学习一个距离函数,这个函数能够使得相似或相关的数据点之间的距离缩小,而不相似或不相关的数据点之间的距离增大。通过这种方式,度量学习能够增强模型的泛化能力,提高其在特定任务上的性能。

常见方法

  1. 马氏距离学习(Mahalanobis Distance Learning):马氏距离是度量学习中常用的一种距离度量方式,它通过学习一个正定矩阵来转换数据空间,使得在新空间中,相似数据点的距离更近,不相似数据点的距离更远。著名的算法包括最近邻成分分析(LMNN)等。

  2. 基于三元组的度量学习(Triplet-Based Metric Learning):这种方法通过考虑数据点三元组(一个锚点、一个正例和一个负例)来学习度量,目标是使得锚点与正例之间的距离小于锚点与负例之间的距离。这种方法在深度学习和图像识别中尤其受欢迎。

  3. 深度度量学习(Deep Metric Learning):利用深度神经网络来学习数据点之间的距离度量。通过端到端的训练,深度网络能够学习到复杂的非线性变换,以发掘数据的内在特征和结构。

应用领域

度量学习在许多领域都有广泛的应用,如:

  • 人脸识别:通过学习一个有效的距离度量,以区分不同人的面部图像。
  • 推荐系统:通过度量用户和物品之间的相似度来提高推荐的准确性。
  • 文本分类和聚类:通过学习文本数据的有效度量,改进文本分类和聚类的性能。

度量学习通过提供一种灵活而有效的方式来学习数据点之间的相对关系,为提高机器学习模型的性能提供了一种强大的工具。然而,度量学习也面临一些挑战,如选择合适的损失函数、防止过拟合、以及处理大规模数据集时的计算效率问题。

Auto-encoder

自动编码器(Autoencoder, AE)是一种无监督的神经网络,它的目标是学习一种表示(编码)用于输入数据的高效表示形式(编码),然后通过这种表示来重构输入数据(解码)。自动编码器由两部分组成:编码器(Encoder)和解码器(Decoder)。

编码器

编码器部分的作用是将输入数据映射到一个隐藏层,这个隐藏层也被称为编码或潜在空间表示(Latent Space Representation)。这个过程实际上是在学习输入数据的一种压缩表示形式,这种表示通常比原始数据的维度要低,从而捕获数据的内在结构和特征。

解码器

解码器部分的作用是将潜在空间的编码映射回原始数据空间,尽量重构原始输入数据。通过比较输入数据和重构数据之间的差异,网络可以在训练过程中调整参数以最小化重构误差。

训练

自动编码器的训练目标是最小化输入数据和重构数据之间的差异,这通常通过最小化一个损失函数(如均方误差)来实现。通过这种方式,自动编码器可以学习到数据的有效和压缩的表示。

变体

自动编码器有多种变体,每种变体都有其独特的应用和优势:

  1. 稀疏自动编码器(Sparse Autoencoder):通过引入稀疏性约束于隐藏层,稀疏自动编码器可以学习到更加鲁棒的特征表示。

  2. 去噪自动编码器(Denoising Autoencoder):通过在输入数据中添加噪声,然后训练网络重构原始的未加噪声数据,去噪自动编码器能够学习到数据的稳健特征。

  3. 变分自动编码器(Variational Autoencoder, VAE):不同于传统自动编码器的确定性编码过程,变分自动编码器将输入数据映射到潜在空间分布的参数上,从而能够进行生成模型的学习。

应用

自动编码器广泛应用于数据降维、特征学习、生成模型等多个领域。它们特别适合于数据预处理、数据的可视化、以及作为其他复杂模型的一部分来学习有用的特征表示。自动编码器的能力在于它们可以通过学习重构数据来发现数据的内在结构和规律,即使在未标记的数据上也能有效工作。

赞赏