PCA降维的推导(超详细)

本文介绍了PCA(主成分分析)作为一种常见的数据降维方法,通过找出数据的主要特征,减少冗余,优化数据表示。文章详细阐述了PCA的数学推导过程,包括中心化、协方差矩阵、特征值和最大特征值的寻找,以及降维的实际步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

前言

什么是PCV降维

应用场景

PCA的数学推导

PCA降维的过程

PCA的流程


前言

什么是PCV降维

PCA(Principal Component Analysis)是一种常用的降维技术,即将高维数据转换为低维数据的方法。通俗地说,PCA降维就是通过找到数据中的主要特征,并将其用较少的特征来表示,从而减少数据的维度。

下图为例,所有的数据是分布在三维空间中,PCA将三维数据映射到二维平面u,二维平面由向量<u1,u2>表示,u1与u2垂直

应用场景

假设你有一个数据集,它有很多特征(维度),比如说100个。但是你发现这些特征之间可能存在冗余或者相关性,有些特征对数据的贡献可能不是很大。在这种情况下,你可以使用PCA来降低数据的维度。

PCA的数学推导

假设对n个样本x_{i}进行PCA处理,先对数据进行中心化,即将数据的均值变为0(为了后面计算的方便,不用减去mean)

则数据集的协方差矩阵为:

由于上面已经将数据中心化\mu _{i},\mu _{j}均为0,所以这里的协方差可以简化为下面的式子

PCA的主要目的是找到一个线性变换,让数据投影的方差最大化

内基的补充

假设找到线性变化\mu _{1}单位向量),对x _{i}做线性变化的投影,可知:

然后计算投影后的均值和方差

我们要投影后的方差取最大,可以得到优化函数,如下

这里的(1)是我们的目标函数,(2)是约束条件,然后构建拉格朗日函数得

要求得(1)式的max,即要λ \lambdaλ最大,而λ \lambdaλ是矩阵S的特征值,问题就转换为求S的最大特征值,求解的方法有SVD矩阵分解和特征值分解。

PCA降维的过程

  • x投影后的方差,就是x协方差矩阵的特征值,想要方差最大,就是要找协方差矩阵最大的特征值,最佳投影方向就是最大特征值对应的特征向量
  • 协方差的特征值有特征向量有\lambda _{1},\lambda _{2},.....\lambda _{n},特征向量有\mu _{1},\mu _{2},....\mu _{n}
  • 将所有特征值从大到小排列,将相应的特征向量随之排列,选择特征向量的前k行组成的矩阵(\mu _{1},\mu _{2},....,\mu _{k})乘以原始数据矩阵X,就得到我们需要的降维后的数据矩阵Y

PCA的流程

假设n个d维样本x_{i}进行PCA处理

  • 将原始数据按列组成d行n列矩阵X
  • 将X的每一行去中心化,即减去这一行的均值
  • 求出X的协方差矩阵
  • 求出协方差矩阵的特征值和对应的特征向量
  • 将特征向量根据对应的特征值大小从上到下按行排列,取前m行组成矩阵P
  • Y=PX即为降维到m维的数据
### PCA的详细步骤和数学原理 主成分分析(Principal Component Analysis, PCA)是一种常用的无监督方法,其核心思想是通过线性变换将高数据投影到低空间中,同时尽可能保留原始数据中的信息。以下是PCA的详细步骤和数学原理: #### 1. 数据预处理 在进行PCA之前,需要对数据进行标准化处理。这是因为PCA对不同量纲的数据非常敏感,若特征之间的尺度差异较大,则可能导致结果偏差。通常采用零均值化和单位方差化的方式对数据进行预处理[^1]。 ```python from sklearn.preprocessing import StandardScaler # 假设X为输入数据矩阵 scaler = StandardScaler() X_standardized = scaler.fit_transform(X) ``` #### 2. 计算协方差矩阵 协方差矩阵能够反映数据中各度之间的相关性。对于标准化后的数据矩阵 \( X \),其协方差矩阵 \( C \) 可以通过以下公式计算: \[ C = \frac{1}{n-1} X^T X \] 其中 \( n \) 是样本数量。协方差矩阵是一个对称矩阵,其对角线元素表示各个特征的方差,非对角线元素表示特征之间的协方差[^3]。 #### 3. 求解协方差矩阵的特征值与特征向量 协方差矩阵的特征值和特征向量决定了主成分的方向和重要性。通过求解特征值分解问题: \[ C v = \lambda v \] 可以得到一组特征值 \( \lambda_1, \lambda_2, \dots, \lambda_d \) 和对应的特征向量 \( v_1, v_2, \dots, v_d \),其中 \( d \) 是数据的原始度。特征值越大,对应的特征向量方向上包含的信息越多[^1]。 #### 4. 选择主成分 根据特征值的大小排序,选择前 \( k \) 个最大的特征值及其对应的特征向量作为主成分。这些主成分构成了一个新的低空间,能够最大程度地保留原始数据的方差信息[^3]。 #### 5. 投影到低空间 将原始数据投影到由主成分构成的新空间中,得到后的数据。假设 \( V_k \) 是由前 \( k \) 个特征向量组成的矩阵,则后的数据 \( Y \) 可以通过以下公式计算: \[ Y = X V_k \] 其中 \( Y \) 的每一列表示一个样本在新空间中的坐标[^2]。 #### 数学原理 PCA的核心在于寻找一组正交基,使得数据在这组基上的投影具有最大方差。通过最大化投影方差的目标函数,可以推导出协方差矩阵的特征值分解问题。此外,PCA还可以通过奇异值分解(SVD)实现,两者在理论上等价。 ```python import numpy as np # 协方差矩阵 cov_matrix = np.cov(X_standardized.T) # 特征值分解 eigenvalues, eigenvectors = np.linalg.eig(cov_matrix) # 选择前k个主成分 k = 2 top_k_indices = eigenvalues.argsort()[-k:][::-1] V_k = eigenvectors[:, top_k_indices] # 投影到低空间 Y = np.dot(X_standardized, V_k) ``` ### 注意事项 尽管PCA是一种强大的工具,但它也有一些局限性。例如,PCA假设数据分布是线性的,因此对于非线性数据可能效果不佳。在这种情况下,可以考虑使用核PCA或其他非线性方法[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值