Advertisement

【3】An Overview of PCA and its Applications in Machine L

阅读量:

作者:禅与计算机程序设计艺术

1.简介

Principal Component Analysis (PCA) 是一种无监督降维技术。它通过识别数据集中的共性特征并提取核心元素,在新的低维度空间中进行表达。在处理高维度且无标签的数据方面,PCA表现出色。它适用于多种机器学习场景,如分类、回归和聚类任务。本文旨在系统探讨 PCA 方法及其应用领域,并涵盖图像数据、文本信息以及时间序列等多种类型的数据分析方法。此外,在深入分析 PCA 算法实现过程中存在的挑战及其解决方案的基础上,本研究还探讨了其优缺点及潜在改进方向。

2.PCA基本概念

2.1.问题定义

设给定的数据集为X=\left\{x_i\right\}_{i=1}^n \in \mathbb{R}^{m}, 其主成分为通过线性变换将高维空间映射至低维子空间Z, 以保持原始数据的最大变异数得以实现。换言之, PCA通过寻找最佳投影方向来使数据尽可能均匀地分布在这些方向上。

2.2.PCA的基本想法

PCA的核心概念是在原始数据中寻求最重要的方向,即确定方差最大化的方向。

从本质上讲,在应用主成分分析法时,我们倾向于选择能够最大程度地保持原始数据集特异性的那些方向.这一做法具有重大的意义,因为如果忽视掉这些最大化方向上的分量,那么降维后的数据将不可避免地失去原始数据中最关键的信息.这样一来,在实际操作中,我们会优先考虑并保留这些重要性较高的方向,然后再逐步引入其他可能的相关性较低的方向进行补充.

第二部分中提到主成分分析法主要沿着数据的最大方差方向展开分析,并非基于极大似然估计的方向推导。这一方向即为通过极大似然估计所得的结果(maximum likelihood solution)。然而需要注意的是,在实际应用中极大似然解容易受到噪声干扰的影响。因此在实际应用中我们通常会选择奇异值分解(SVD)的方法来实现主成分分析这一过程,并且这种方法通常用于处理这种计算需求较高的情况。作为一种常用的矩阵分解技术这种方法在实际应用中有着广泛的应用

第三,在属性分析视角下,PCA属于无监督学习范畴。由于在PCA过程中无需明确标注真实标签信息,并且能够自动识别数据中的潜在结构特征。因此,在实际应用中无需执行特定的训练步骤。此外,在多维度数据处理方面,则基于特征提取的性质使得其与单变量算法相比具有显著优势

第四部分指出,主成分分析法属于线性学习方法。主成分分析法基于方差最大化原则运作,在此框架下它仅能揭示数据中的线性关联。然而,在面对非线性分布的数据时,主成分分析法可能会因为无法全面捕捉到数据的整体结构而导致预测精度下降或算法失效。

2.3.PCA的几何意义

在最优化领域中,主成分分析法主要采用二范数作为衡量标准。其几何意义是通过线性变换将原始数据投影至其覆盖的空间中,从而形成一个由该空间凸包所定义的超曲面。这种超曲面在其覆盖空间中的位置参数即对应于该数据集的质量中心。

通过主成分分析法(PCA),原始数据被投影至一个新的子空间。这个子空间是由线性代数中的超平面所定义的,并且是根据给定数据点所限定的空间范围确定的。在这些约束条件下计算与超平面之间的最短距离等同于计算这些点与该子空间的内积。通过寻找满足所有约束条件下的最优子空间,主成分分析法能够识别出原始数据集的最大方差方向,并将这些数据点映射至新的低维子空间中以降低复杂度和维度。

2.4.PCA的代价函数

PCA的目标函数就是最大化各个方向上的方差,即:

在本研究中,在这里我们定义θ=(W,λ) 作为主成分分析(PCA)模型的关键参数,在此过程中z_i = (z_{ij}) 对应于第i个样本在第j个主成分方向上的投影坐标值。其中w_j 代表其对应的主成分系数向量。特别地,在该模型中引入了一个正则化系数λ ,其作用在于调节需要额外引入的偏差项以避免维度过高所带来的方差过高的问题。通过这一设计策略可以使得模型整体表现更加稳定并且预测效果更为理想。

值得注意的是,在PCA模型中仅存在一个最小化的目标函数未被实现,并不包含任何最大化的目标函数。此外,在这种情况下,PCA模型所涉及的参数\theta尚处于未确定状态;然而,在目标函数J(\theta)中却包含了可调节的所有相关参数。由此可见,则可通过采用梯度下降算法、拟牛顿优化方法或共轭梯度计算方式等多种途径来求得全局最优解\hat{\theta}

2.5.PCA的条件独立性

我们考虑给定的一组样本X={x(1),...,x(n)}。我们的目标即为确定一个变换矩阵W, 以便满足以下约束条件: 其中符号C′代表C的转置矩阵, W′代表其转置矩阵, d即为数据维度数, e_i则代表第i个数据点所对应的噪声项。特别地, I_d被定义为了d维单位矩阵。

假设通过主成分分析得到的矩阵W满足条件\mathbf{C}^\top \mathbf{W}^\top \mathbf{W} = \mathbf{I}_d。则可证得:矩阵\mathbf{C}中的每一列向量彼此间均为不相关,并且整体上不存在冗余信息。这表明主成分分析不仅提取了数据中最重要的特征向量,并且在某些情况下也可能引入了冗余的信息。

基于此假设,在样本x^{(i)}中仅存在r个相关的特征变量c_{p_1}c_{p_r}。这些剩余的m - r个特征变量则不相关联。由于协方差矩阵中对应元素为零,则对于所有索引j > r而言

此外,在考虑主成分分析法时(PCA),我们假定样本x(i)不仅包含与其相关的c_{p_1},...,c_{p_r}类群信息,并且也包含与其相关的其他类群信息c_{r+1},...,c_m}。例如,在这种情况下(如x(i)中有一个属性x{(i)}_a),该属性可能与其他属性x{(i)}b,...,x{(i)}_n高度相关联。然而根据主成分分析法的基本假设(PCA),该特定属性x{(i)}a并不与c{r+1},...,c_m}类群信息存在关联关系。因此我们可以推断出这些未被考虑的类群信息c{r+1},...,c_m}之间相互独立且彼此不相关

综上所述,在矩阵C中各列向量彼此之间均为正交且无多余信息。由此可知,在主成分分析(PCA)中所得出的结果不仅涵盖了原始数据体系中的关键特征因素,并不排除存在额外或冗余的信息。

3.PCA应用介绍

3.1.图像压缩

在图像压缩领域中存在大量有效的PCA应用实例。基于像素级别的独特性分析可知,在此层次上所蕴含的颜色与纹理特征均具有显著差异性特征。进而可结合主成分分析方法实现对色彩信息的提取与降维过程,并最终实现图像数据的高效压缩目标。

假定输入为h \times w分辨率的RGB图像中包含N张图片。随后对矩阵X执行主成分分析以提取特征信息。随后 PCA 过程将原始数据分解为不同颜色通道的数据,并通过识别数据方差最大的方向将其映射至一个低维空间区域。经过上述步骤后 PCA 方法最终生成新的低维度空间Z其中每一维度对应于原始图像中的特定颜色分量特征。

After applying PCA for dimensionality reduction, the image data transforms into a K-dimensional vector z_1,…,z_K, where each z_k represents the k-th color component of the image. Each z_k corresponds to a reconstructed image in the reduced dimensional space. The reconstructed images differ based on the specific z_ks used. These techniques are commonly applied in scenarios such as image retrieval, image restoration, and data dimensionality reduction.

3.2.文本分析

主成分分析法(PCA)在信息检索系统设计中扮演着重要角色。现实中大量数据是以文本形式存在的。基于主成分分析方法(PCA),可以通过降维技术从这些文本数据中提取出高维的主题模型和特征向量。从而可以通过提取的这些特征来进行深入的文本分析研究包括文档分类、关键词提取、情感分析等多个方面的问题

PCA是一种无监督学习模型,在处理文本数据时实现维度缩减,并使相关词汇与语境信息得以融合。该模型首先通过计算各词在所有文档中出现频率的加权来确定关键词的重要性;继而计算各文档之间的相似程度,并通过求解优化问题确定一个最优投影方向向量,使得任意两个样本点在该方向上的投影值具有最大的相关性。随后系统会选择权重最高且具有显著意义的词汇与主题作为主成分轴,并将所有样本点映射到这些轴所构成的空间中,并用于表示与分析原始数据集中的样本点。

3.3.时间序列分析

该技术在时间序列分析领域得到了广泛应用。其特征通常表现出时空相关性。由此可知,在运用主成分分析法后能够提取出时间序列的核心模式,并从而能够识别出隐藏于数据中的潜在规律例如周期性和季节性的特性等

PCA同样可以用来将时间序列数据映射至更低维度的空间。在随后的步骤中先执行去均值化处理,在随后的步骤中计算样本协方差矩阵。通过奇异值分解的方法确定主成分系数矩阵。这样就能获得降维后的结果。该技术广泛应用于股票市场分析、气象预测以及物联网设备的数据处理等领域。

3.4.生物信息分析

PCA在生物信息学中的用途极为广泛。例如,PCA可用于对遗传数据进行降维处理,并揭示潜在模式如基因序列结构和基因表达水平之间的关系。此外,在蛋白质组学领域中应用更为突出,在分析蛋白质组学数据时可有效识别关键蛋白质发生突变的现象及其调控机制。

PCA的应用还可以在生物医学领域深入研究复杂性疾病之间的临床特征。例如癌症和前列腺癌等疾病的临床表现可以通过分析患者的基因测序数据进行数据降维处理。这种技术能够有效揭示潜在的致病基因进而有助于阐明肿瘤细胞的致病机制。

3.5.信号处理

主成分分析法在信号处理领域有着广泛的应用。信号处理是指通过对无线电波或其它信号进行采样、滤波、降噪以及解调等系列操作来获取所需信息的技术过程。主成分分析法在信号处理的多个方面得到了广泛应用,并被成功应用于如语音编码技术、图像处理方法以及视频压缩方案等不同的领域中。

主要思路是通过采样的手段对信号进行采集;随后利用主成分分析法完成样本的降维;从而使得后续的信号分析变得更加高效;并且显著提高了处理效率;在这一领域中;其应用包括白噪声检测;实现 signal decomposition;以及识别异常情况;此外;在机器学习框架下;这些方法包括 signal decomposition; feature selection; noise reduction.

除了主成分分析外的另一项重要应用是特征选择。当数据样本数量极大时,在这种情况下主成分分析能够显著减少数据维度的同时也能被用来选取最优特征。此外主成分分析还能够辅助验证模型的有效性并防止过拟合问题的发生

PCA在一定程度上缓解数据稀疏的问题。它能够识别出数据中的关键性特征,并自动生成这些特征以降低内存占用并提升计算效率。

4.PCA实现原理与算法详解

PCA有两种不同的实现方案:奇异值分解法(SVD)和最大似然估计法(MLE)。随后将分别阐述这两种方法的主要内容。

PCA有两种不同的实现方案:奇异值分解法(SVD)和最大似然估计法(MLE)。随后将分别阐述这两种方法的主要内容。

4.1.奇异值分解(SVD)

奇异值分解(SVD)主要涉及一种用于降维的技术,在实际应用中被广泛采用的一种线性代数工具。其基本原理表明:任何大小为m×n的数据矩阵A都可以表示为三个新构造出的特定矩阵相乘的结果:USVT的形式。其中U是一个正交归一化的基底集合构成的正交阵列;S则是一个包含数据中各个主成分重要性指标的关键对角线型权重阵列;而VT则代表了数据空间中的另一个基底集合转置后的形式。进一步分析可知,在这种分解过程中,U中的每一列都对应于原始数据集中的一个主成分方向,V^T中的每一行则直接反映了各个主成分所对应的原始变量间的关联程度

PCA的主要目标是确定一个方向,在该方向上数据的方差达到最大值。基于此原因我们可以采用SVD技术来实现这一目的。具体步骤如下:首先对数据集进行中心化处理,并计算得到协方差矩阵C;随后建立如下的矩阵关系式:其中左边是一个乘积项右边则是其分解后的特征向量矩阵与奇异值对角阵乘以旋转因子的组合形式;由于这是一个完整的等式关系我们能够通过相应的数学运算直接获得特征向量矩阵U以及奇异值集合D。

通过求解获得变量U与矩阵 D, 即可得到数据集 X \in \mathbb{R}^{n \times p} 的降维表示, 其中, 变量 Z \in \mathbb{R}^{n \times m} 可表示为 Z = V U, 其中矩阵元素 (V)_{kj} 对应于特征向量矩阵 U, 而数据集中的每个样本点 x_j, 其对应的样本点 x_j' 则满足投影关系 x_j' = z_j^T D z_j.

基于奇异值分解(SVD),主成分分析(PCA)能够将原始数据集X映射到一个降维后的子空间Z上。主成分分析主要能捕获原始数据集中具有最大方差的方向,并且能够有效忽略那些较小方差的方向。

4.1.1 SVD的性质

SVD有几个性质,这里简要介绍一下。

  1. 基于协方差矩阵的性质可知,SVD的结果是对称矩阵.
  2. 由于在奇异值分解中,A被表示为三个基本组件的乘积,其中中间因子是对角线上的元素,这些元素不仅无冗余信息而且按照降序排列,这直接反映了协方差矩阵特征值的大小顺序.因此,分解后的因子C'必然是满秩矩阵.
  3. 唯一性是奇异值分解的重要特征,它确保了通过这种分解方法只能得到一个唯一的解.

4.1.2 SVD在PCA中的作用

PCA使用SVD来对原始数据集X进行降维,具体步骤如下:

  1. 数据集完成中心化处理后生成新的数据集(X-\mu)
  2. 应用奇异值分解(SVD)方法对(X-\mu)进行分解得到特征值矩阵\mathbf{D}及其对应的基础矩阵\mathbf{U}
  3. 将原始数据集\mathbf{X}映射到对应于\mathbf{D}中各奇异值所对应的基向量空间上, 经过计算得出降维后的表示形式为\mathbf{Z} = \sum_{j=1}^{m} V_{kj}\cdot u_j, 其中每一列向量中的元素来源于基础矩阵\mathbf{U}中的第k-1\text{列}
  4. 我们将采用降维后的表示形式\mathbf{Z}来进行后续的数据分析工作。

4.1.3 SVD在PCA中的局限性

然而,在PCA中,SVD的不足也值得我们注意。然而,在PCA中,SVD的计算过程耗时耗内存,并且在实际工程应用中,奇异矩阵未必存在非零元素这一问题也难以确保。因此,在实际应用中仍需面对诸多挑战以解决这些问题。

此外,在仅限于计算最佳投影方向方面存在局限性的同时

4.2.最大似然估计(MLE)

The Maximum Likelihood Estimation (MLE) represents a widely used statistical learning technique. Its fundamental principle involves deriving model parameters from a known dataset in such a way that the generated data exhibits characteristics akin to the original dataset. Similarly, Principal Component Analysis (PCA) can also be regarded as a linear model, and its parameters can be effectively estimated using the Maximum Likelihood Estimation method.

具体而言,在我们的分析中

该对数似然函数由下式给出:

\ln p(X|\mu) = \sum_{i=1}^N \ln p(x_i|\mu)

其极大化等价于求解以下优化目标:

\max_{\mu} \sum_{i=1}^N \ln p(x_i|\mu)

其中Q被定义为与数据集X相关的正定核矩阵,
而f_μ(x_i)则表示基于均值向量μ的一阶多项式模型

对目标函数求导,得到关于模型参数的方程:

由于我们假设X服从正态分布,那么就可以直接求解最优的w,即:

4.2.1 MLE在PCA中的作用

对于PCA模型而言,在应用MLE方法时可以直接获得参数向量w=(\mu,\Sigma)。该方法无需依赖迭代计算步骤即可直接得出结果,并具有较高的计算效率。然而其主要缺陷在于无法实施特征选择,并未能提供主成分的具体解释信息。

4.2.2 MLE在PCA中的局限性

MLE方法呈现出显著的方差估计问题。在统计推断中,通过有限的数据样本推导出模型参数的真实值存在较大不确定性。主成分分析法中涉及计算协方差矩阵Σ,在实际应用中该矩阵的实际元素数量会随着变量数目p的增长呈指数级上升趋势,并且由于其元素数量随p增长而迅速膨胀,在实际计算过程中会导致对数似然函数在极值附近波动剧烈

5.PCA的局限性

5.1.缺乏解释性

PCA不仅可以用于降维分析还可以揭示数据潜在的结构特征其核心缺陷在于缺乏可解释性这一局限使得它难以为复杂的多变量系统提供清晰的理解框架由此可见该方法虽然在数据压缩方面表现出色但在揭示数据内在规律方面存在明显的局限性

举个例子来说,在分析一组数据时如果我们对其进行降维处理就会得到一个新的坐标轴集合Z=[z_1,z_2]随后在分析所得图形时一般情况下没有特别的解释因此并没有理由认为这种形式背后有特定的意义此时我们只能推测z_1对应于图形中主要的方向特征而z_2则对应于次要的方向特征然而对于为何存在这样的联系缺乏明确的解释这表明主成分分析法仅能够揭示数据中的内在规律性其整体上的可解释性较弱

5.2.无法处理缺失数据

PCA是一种基于无监督学习的方法,在实际应用中需要至少足够的完整样本量才能有效实施。然而,在现实场景中往往面临大量数据存在缺失的情况,则会导致该方法的有效性受到影响。

例如,在某个用户的历史购买数据中包含有 M 条记录。其中 L 条记录存在缺失现象。如果仅基于完整的数据集 \mathbf{X}_1^{\text{complete}}} 执行主成分分析,则会导致主成分分析无法实现降维目标。此时,则可引入填补方法(如均值填补法),以补充缺失的数据点。

5.3.只能用于线性结构的数据

主成分分析法(PCA)主要适用于具有线性关系的数据。然而,在面对非线性结构的数据时,其性能会受到制约。

作为例子,在处理时序数据时,主成成分分析(PCA)能够识别出其周期性和趋势性的特征。在分析文本数据时,主成成分分析(PCA)能够识别出其主题信息。而对于那些具有非线性结构的数据类型而言,在应用主成成分分析(PCA)时会受到限制,并且难以发现复杂的模式。

5.4.不能处理过拟合问题

同样存在过拟合问题的现象,在实际应用中尤其容易在样本数据规模偏小时显现出来。这种现象源于PCA算法采用的方差最大化方法这一特点,在面对数据量有限的情况时会导致难以寻找到全局最优解的可靠结果。因此,在样本数量较少的情况下使用该方法可能会出现仅获取局部最优解而不具备全局优化能力的情况。

6.PCA的扩展

6.1.多项式PCA

PCA在数据降维过程中仅能提取出单一的主向量以反映原始数据的主要方向;然而这些主向量无法充分揭示各维度间的相互关联性。为了实现这一目标可以通过构建多项式模型来描述各维度间的相互关联性进而完成多项式形式的主成分分析。

详细地说,在研究过程中,我们假设原始数据集X被假定为一个m×n矩阵。我们的目标是将其转换到一组低维坐标系中,并记作Z = [z₁, z₂, …, z_K]。引入一个新的坐标点z_{K+1}时,我们可以适合地拟合一个多项式模型,并将其纳入该低维坐标系统中。

通过这种方式进行操作时,在K=1的情况下会产生一组一次多项式;当K=2时,则会产生一组二次多项式;依此类推下去。该过程可通过最小二乘法实现。

6.2.主成分贡献率

PCR 是一种用于评估变量重要性的指标,在降维过程中反映各个主成分所包含的信息量多少的问题中使用

可以测定Z中j个成分对原始数据X的贡献度:其中,PCR_j的值若为负数,则表示Z_j与X之间无线性相关关系;若PCR_j等于零,则表明Z_j没有包含任何信息。

6.3.特征值PCA

Principal Component Analysis (PCA) 有时被称为基于特征值的方法;它建立在特征值分解(EVD)的基础上,并被视为一种矩阵分解技术;用于分析数据集 X 中的结构;对于给定的数据集 X = \{x_1, x_2, \dots, x_n\} ,其中每个 x_i \in \mathbb{R}^d, 我们的目的是通过求解 XX^T = V D^2 V^T, 找到一组正交基底 \{\phi_1, \phi_2, \dots, \phi_d\} ,使得这些基底能够最大化地解释数据的变化;

其中

U

正交矩
阵,
D

对角矩
阵,
V

m×m矩
阵,
并满
足VV^{
\top}

I_m

通过将对角矩阵D中的元素按大小顺序排列,并对其进行计算处理后即可得到数据集X的奇异值σ_i(i=1,2,…,n)。如果我们仅关注前k个最大的奇异值及其对应的左奇异向量,则相应的左奇异向量矩阵即为U_k = [u_1,u_2,…,u_k]∈ℝ^{m×k}。

这样,PCA就变成了特征值PCA。

7.PCA算法实现

7.1.Python语言实现

下面以Python语言环境中的numpy库来演示PCA的实现。

复制代码
    import numpy as np
    
    def pca(X):
    # Center the data set
    X = X - np.mean(X, axis=0)
    
    # Compute the covariance matrix
    C = np.cov(X, rowvar=False)
    
    # Compute the eigenvectors and eigenvalues
    evals, evecs = np.linalg.eig(C)
    
    # Sort the eigenvectors by their eigenvalue
    idx = np.argsort(-evals)[::-1]
    evecs = evecs[:,idx]
    evals = evals[idx]
    
    # Choose k eigenvectors with largest eigenvalues
    k = min(len(evals), d)
    evecs = evecs[:, :k].real
    evals = evals[:k]
    
    return evecs, evals
    
    # Example usage
    X = np.random.rand(100, 10)    # Generate a random dataset
    evecs, evals = pca(X)          # Perform PCA on it
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    代码解读

7.2.MATLAB语言实现

下面以MATLAB语言环境中的princomp函数来演示PCA的实现。

复制代码
    X = rand(100, 10);              % Generate a random dataset
    [evecs, eval_] = princomp(X');   % Perform PCA on it
    
      
    
    代码解读

全部评论 (0)

还没有任何评论哟~