PCA和SVD区别和联系

前言

PCA(principal component analysis)和SVD(Singular value decomposition)是两种常用的降维方法,在机器学习等领域有广泛的应用。本文主要介绍这两种方法之间的区别和联系。

一、PCA:

PCA
图1.寻找主成分方向

    PCA的中文名叫做主成分分析,是降维和去噪的一种重要方法。PCA选取包含信息量最多的方向对数据进行投影。其投影方向可以从最大化方差或者最小化投影误差两个角度理解(详细推导见机器学习圣经PRML)。假设有 n×d 矩阵X,每一行是一个 d 维样本xi,寻找投影方向 vj 以最大化投影方差:

maxvj1ni=1n(xivjx¯)(xivjx¯)=vjCvj,s.t.vjvj=1

X'X
图2.X’X

    其中 x¯ 是均值,为了简化公式,本文假设 X 已经进行过零均值化处理,即x¯=0 vj 是数据的投影方向。 d×d 协方差矩阵 C=1nni=1(xi)(xi)=1nXX 。由于 C 是实对称矩阵,可以进行对角化处理:

C=VLV

d×d 正交矩阵 V 的每一列是特征向量,d×d矩阵 L 对角线上的每一个元素是特征值,且特征值按递减顺序排列。把C 代回式子 vjCvj

vjCvj=vjVLVvj=λj

     λj 是特征向量 vj 对应的特征值。可以发现当投影方向是 C 的最大特征值对应的特征向量时,投影方向上数据的方差最大。所以用PCA进行降维时通常选取较大特征值对应的特征向量作为投影方向:XVk Vk 是最大的k个特征值对应的特征向量矩阵。

二、SVD:

    如果对 X 做奇异值矩阵分解(SVD分解):

X=USV

对角阵 S 对角线上的元素是奇异值,U V 是正交矩阵:UU=I,VV=I。把 X 的奇异值分解代入协方差矩阵:
C=1nXX=1nVSUUSV=VS2nV

d×d 正交矩阵 V 的每一列是特征向量,不难发现特征值与奇异值之间存在着对应关系λi=S2ii/n。对 X 主成分方向进行投影:
XVk=USVVk=UkSk

Uk 包含 U 的前k列,Sk包含 S 左上角的k×k个元素。

三、区别与联系

SVD另一个方向上的主成分

    SVD可以获取另一个方向上的主成分,而PCA只能获得单个方向上的主成分:

1nXX=1nUSVVSU=US2nU

SVD计算伪逆

    求解矩阵的最小二乘问题需要求伪逆,使用SVD可以很容易得到矩阵 X 的伪逆:

X+=VS1U

LSI

    隐语义索引(Latent semantic indexing,简称LSI)通常建立在SVD的基础上,通过低秩逼近达到降维的目的。

Xk=minArank(A)=kXA

注意到PCA也能达到降秩的目的,但是PCA需要进行零均值化,且丢失了矩阵的稀疏性。

数值稳定性

    通过SVD可以得到PCA相同的结果,但是SVD通常比直接使用PCA更稳定。因为PCA需要计算 XX 的值,对于某些矩阵,求协方差时很可能会丢失一些精度。例如Lauchli矩阵:

X=1e0010e0100e

在Lauchli矩阵里, e 是很小的数,e2无法用计算机精确表示,从而计算 XX 会丢失 e <script type="math/tex" id="MathJax-Element-53">e</script>这部分信息。

四、参考资料

[1] Pattern Recognition and Machine Learning

[2] Mathematics Stack Exchange:http://math.stackexchange.com/questions/3869/what-is-the-intuitive-relationship-between-svd-and-pca

[3] Cross Validated:http://stats.stackexchange.com/questions/134282/relationship-between-svd-and-pca-how-to-use-svd-to-perform-pca

### 主成分分析 (PCA) 奇异值分解 (SVD) #### PCA 的工作原理及其应用 主成分分析是一种用于的技术,其目标是在保留尽可能多的信息的同时减少数据集的度。通过计算协方差矩阵并找到最大化的方向向量(即主成分),可以实现这一点。每个主成分对应于原始变量的一个线性组合,并按照它们所解释的数据总变异的比例排序。 对于给定的数据集,`explained_variance_ratio_` 属性提供了各主成分对方差贡献的具体数值[^1]: ```python import numpy as np from sklearn.decomposition import PCA np.set_printoptions(precision=3, suppress=True) pca = PCA() # 计算 explained variance ratio... print(pca.explained_variance_ratio_) ``` 这种方法特别适用于可视化高数据、去除噪声或作为其他机器学习模型之前的预处理步骤。 #### SVD 的工作机制及其用途 奇异值分解则提供了一种不同的视角来看待相同的问题——它不是直接寻找最佳投影轴,而是将输入矩阵 \( A \in R^{m\times n} \) 分解成三个部分:两个正交矩阵 U V 转置以及中间对角阵 Σ 。其中Σ包含了所谓的“奇异值”,反映了原矩阵的重要程度;而UV分别代表左奇异性向量右奇异性向量。 这种技术同样能够帮助我们理解复杂结构化信息的本质特征[^3]。例如,在图像压缩场景下,可以通过截断较小的奇异值得到近似版本从而节省存储空间而不明显影响质量。 #### PCA SVD 的对比 尽管两者都涉及到度的概念,但存在一些关键差异: - **目的不同**: PCA旨在最大化样本间的距离度量标准下的离散度;相比之下,SVD关注的是重构误差最小化. - **适用范围各异**: 当仅需考虑单个表征时可选用前者; 若涉及多个关联表格,则后者更为合适. - **输出形式有所区别**: 经过PCA变换后的坐标系通常具有直观的意义(如第一主元往往指示着最重要的变化趋势);然而经由SVD得到的结果可能缺乏类似的解释力除非进一步转换为特定上下文内的含义.
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值