PCA和SVD傻傻分不清楚?

c以前学习PCA和SVD的时候都是分开学的,也只是记住了求解方法,对于原理理解一直处于懵圈状态,查看了别人的解释,也尝试自己总结一下。如果哪里理解错了,那就gg了

​​PCA(Principal Component Analysis)是一种常用的数据分析方法。PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。现在我们将数据抽象为一组向量 x x ,数据集表示 X={x1,x2,...,xn} X = { x 1 , x 2 , . . . , x n } , 对于数据 X X ,去中心化后得到的矩阵 X˜ X ~ ,则协方差矩阵为 =X˜TX˜ ∑ = X ~ T X ~
首先看一下PCA求解步骤:
1. 求协方差矩阵
2. 计算 的特征值和特征向量,将特征值从大到小排列,前k个特征值对应的特征向量为 P P
3. 降维后的数据为 X˜m×nPn×k=A˜m×k X ~ m × n P n × k = A ~ m × k

PCA和SVD傻傻分不清楚?_第1张图片

数据在 w w 方向上的投影为 z=wTx z = w T x ,我们希望数据点在新的空间中保留最大的差异性即方差最大,所以:
希望 var(z)=wTw v a r ( z ) = w T ∑ w 最大化,其中 =cov(x) ∑ = c o v ( x ) ||w||=1 | | w | | = 1 。 根据拉格朗日:
maxw wTwα(wTw1) m a x w   w T ∑ w − α ( w T w − 1 )
关于 w w 求导得:
22αw=0w=αw 2 ∑ − 2 α w = 0 ⇒ ∑ w = α w 其中 α α 就是特征值, w w 就是特征向量。
所以只需对协方差矩阵 进行特征值分解,将求得的特征值排序:λ1≥λ2≥…≥λn,再取前k个特征值对应的特征向量构成 W=(w1,w2,...,wk) W = ( w 1 , w 2 , . . . , w k ) ,就是主成分分析的解。

SVD(Singular Value Decomposition),奇异值分解,是一个能适用于任意的矩阵的一种分解的方法。
定义:
Mm×n=Um×mm×nVTn×n M m × n = U m × m ∑ m × n V n × n T ,
其中, U U V V 为正交矩阵, 只有对角元素而且对角元素是从大到小排列的,这些对角元素称为奇异值。

在几何中,我们可以把矩阵看做空间上的线性变换。奇异值分解的几何含义是:对于任何的一个矩阵,我们都能找到一组坐标轴,它是由原来的坐标轴通过旋转和缩放得到的。奇异值的含义是:这组变换后新的坐标轴的长度。

PCA和SVD傻傻分不清楚?_第2张图片

对于一个二维矩阵,总能找到一组标准正交基 v1 v 1 v2 v 2 ,使 Mv1 M v 1 Mv2 M v 2 正交,用 u1 u 1 u2 u 2 表示 Mv1 M v 1 Mv2 M v 2 的方向。这样 M M 就从一组标准正交基用另一组标准正交基表示。
Mv1 M v 1 的长度为 ||Mv1||=σ1 | | M v 1 | | = σ 1 ||Mv2||=σ2 | | M v 2 | | = σ 2
则: Mv1=σ1u1 M v 1 = σ 1 u 1 , Mv2=σ1u2 M v 2 = σ 1 u 2
一个向量 x x ,在 v1 v 1 v2 v 2 这组标准正交基中表示为 x=(vT1x)v1+(vT2x)v2 x = ( v 1 T x ) v 1 + ( v 2 T x ) v 2 ,其中 (vT1x) ( v 1 T x ) 为投影长度。
从而:
Mx=(vT1x)Mv1+(vT2x)Mv2=(vT1x)σ1u1+(vT2x)σ2u2 M x = ( v 1 T x ) M v 1 + ( v 2 T x ) M v 2 = ( v 1 T x ) σ 1 u 1 + ( v 2 T x ) σ 2 u 2
所以:
M=u1σ1vT1+u2σ2vT2=UVT M = u 1 σ 1 v 1 T + u 2 σ 2 v 2 T = U ∑ V T
矩阵 M M 的作用是将一个向量从 V V 这组正交向量空间中旋转到 U U 空间,并按照 在各个方向上做了缩放,缩放倍数就是奇异值。
性质:
1. U,V U , V 都是标准正交矩阵,即 UTU=E U T U = E VTV=E V T V = E
2. MTM=V2VT M T M = V ∑ 2 V T MMT=U2UT M M T = U ∑ 2 U T
即, V V MTM M T M 的特征向量,即 U U MMT M M T 的特征向量,奇异值的平方 σ2 σ 2 MTM M T M MMT M M T 的特征值
3. 将奇异值从大到小排列,前k个奇异值近似描述矩阵 Mm×nUm×kk×kVTk×n M m × n ≈ U m × k ∑ k × k V k × n T

现在来看一下SVD和PCA的关系。
我们讲到要用PCA降维,需要找到样本协方差矩阵 X˜TX˜ X ~ T X ~ 的最大的k个特征向量,然后用这最大的k个特征向量张成的矩阵来做低维投影降维。
注意,SVD也可以得到协方差矩阵 X˜TX˜ X ~ T X ~ 最大的k个特征向量张成的矩阵。
但是SVD有个好处,有一些SVD的实现算法可以不求先求出协方差矩阵,也能求出右奇异矩阵 V V 。也就是说,PCA算法可以不用做特征分解,而是做SVD来完成。这也是为什么很多工具包中PCA算法的背后真正的实现是用的SVD,而不是我们认为的暴力特征分解。
另一方面,注意到PCA仅仅使用了我们SVD的右奇异矩阵,没有使用左奇异矩阵。而左奇异矩阵可以用于行数的压缩,右奇异矩阵可以用于列数,也就是PCA降维。

所以,有了SVD就可以得到两个方向的PCA。

你可能感兴趣的:(数学基础)