主成分分析PCA和矩阵的奇异值分解SVD

  • Post author:
  • Post category:其他






PCA和SVD



引言:在机器学习中,因为高纬空间样本具有稀疏性,导致模型比较难找到数据特征等原因。所以需要进行高维数据样本的降维,其中比较常使用的一种降维方法就是PCA。PCA主要是用于数据的降维,将高维的样本数据降维到低维。因为其在降维的过程中,综合了样本中各个特征的属性数据,所以降维后的样本数据仍然很好的保存了原始样本数据的信息,同时维度降低了(可以理解为,样本的属性减少,新的维度属性综合了之前所有样本的属性)。另一方面,与PCA紧密相关的另一个算法叫做SVD,它不仅能够用于数据的降维还可以用于去除掉样本数据中的噪声信息。



一.PCA



(一). 一个关于PCA的引例


首先,我们看这样的一个例子,图中有一个甜麦圈。




[1].甜麦圈用矩阵表示




从图[1]中可以看到,在三维空间中,它可以看做是无数点堆积而成,而每一个点都可以用一个三维的向量来表示,所以在三维空间中甜麦圈它就可以由这么一个三维矩阵来描述出它的形状。

在这里插入图片描述



[2].投影后的甜麦圈用二维信息表示出来


这个时候,在三维空间中我们用手电去照射这个甜麦圈,可能在墙上留下不同的阴影信息,根据有的墙面阴影信息我们能很清楚的看出被投影的物体是什么,有的墙面的影子则完全不能分辨出被投影的物体。我们就可以想象!对于这样的甜麦圈,如果我们要去识别它,是否不需要利用它的三维信息,而只利用到它某些投影方向的二维信息就好了,比如说这面墙(

图[2]有箭头的那面墙

)的信息。这样我们不仅能很好的识别出为甜麦圈,而且还能降低甜麦圈数据的维度。


所以对于那些大数据,计算机视觉,机器学习领域的高维数据也是如此,由于

各变量间存在一定的相关(线性)关系,因此有可能用较少的综合指标分别综合存在于各变量中的各类信息

,这就是数据降维的深层原因。



(二). PCA的样例:二维数据解释


为了方便讲解PCA的原理,这里我们先采用具有两个维度的数据。如下图所示:

在这里插入图片描述



[3].二维样本数据


这些数据服从高斯分布,落在二维的坐标轴上,这些数据就形成了一个椭圆形状的点阵。椭圆有一个长轴和一个短轴,在短轴方向上,我们可以看到数据变化较少;如果在极端的情况下,短轴就退化成一点,那么只有在长轴的方向才能够解释这些点的变化了。于是,样本数据就从二维降维到一维了。根据最大方差理论,也就是

方差越大,信息量越多

,(即信息量损失就最小),降维后的样本数据就越接近原始样本数据。为了将二维的数据降维到一维保存,我们就需要让样本点往

样本属性间方差

最大的方向投影,也就是往最能看出样本之间数据变化的方向投影。很明显图中向横轴方向的投影结果是最好的。因此横轴就是我们需要找出的投影方向。


但是在实际中遇到的数据可能并不像刚才那样就能很直接的找到投影方向。如图中所示

在这里插入图片描述



[4].找更好的投影方向


这些数据点向



X

1

X_{1}







X











1






















轴投影达不到很好的效果,向



X

2

X_{2}







X











2






















轴投影也不能达到很好的效果,那么我们就需要去找出更好的投影方向



Y

1

Y_{1}







Y











1

























那么怎么去找呢?首先要对这些样本进行数据中心化操作。

在这里插入图片描述



[5].样本数据的中心化


比如给定的一组样本数据,它们分别用向量



Z

1

\vec{Z_{1}}















Z











1














































,



Z

2

\vec{Z_{2}}















Z











2


















































Z

m

\vec{Z_{m}}















Z











m














































表示出来。首先求出数据的中心位于



u

\vec{u}














u




















,然后每个向量分别减去中心向量



u

\vec{u}














u




















,就可以把样本数据中心化,用新的向量形式



X

1

\vec{X_{1}}















X











1














































,



X

2

\vec{X_{2}}















X











2


















































X

m

\vec{X_{m}}















X











m














































表示出来了 。


经过数据中心化后的样本集,我们可以看到如下图所示,

在这里插入图片描述



[6].坐标轴平移到数据中心


相当于以前的坐标轴



X

1

X_{1}







X











1






















,



X

2

X_{2}







X











2






















平移到了数据中心。接着我们就需要去找出真正的投影方向



Y

1

Y_{1}







Y











1






















.



(三). PCA的原理:关于PCA的数学求解过程


经过刚才的数据中心化,我们可以得到中心化后的样本数据矩阵



X

m

×

n

X_{m×n}







X











m


×


n























在这里插入图片描述



[7].样本数据矩阵



X

m

×

n

X_{m×n}







X











m


×


n
























刚才我们说过投影最好的方向是投影后越接近原始样本数据的方向,(也就是投影后原来的信息保存得更好的方向)。同时也是

样本属性间方差

最大的方向。

在这里插入图片描述


[8].样本点



x

k

x_{k}







x











k






















向假想的投影轴e方向投影


图中可以看到,样本点



x

k

x_{k}







x











k






















向投影轴



e

e






e





投影后得到了



x

k

x_{k}^{‘}







x











k





















































在。这里,我们需要求出的就是这个投影轴方向



e

e






e





。这儿的



x

k

x_{k}







x











k


























x

k

x_{k}^{‘}







x











k





















































均为向量。


根据上面的投影,我们先列出这么一个公式,

在这里插入图片描述



[9].样本点和投影点之间的距离


投影后的样本点



x

k

x_{k}^{‘}







x











k





















































减去原始样本



x

k

x_{k}







x











k






















的距离等于



J

(

e

)

J(e)






J


(


e


)





这么一个函数,他的自变量就为投影轴方向



e

e






e








首先我们来看一下这个公式


(1).公式中的第二行:我们对公式中的



x

k

x_{k}^{‘}







x











k





















































,用



a

k

a_{k}







a











k






















乘以这个投影轴单位向量



e

e






e





来替换(图[8]有



a

k

a_{k}







a











k






















=



e

t

e^{t}







e











t
















x

k

x_{k}







x











k






















),其中



a

k

a_{k}







a











k






















是一个标量。


(2).公式中的第三行:接着我们展开这个公式,看到第三行,首先 “第一块” 因为单位向量的模长为1,所以它模长的平方也等于1。然后看到第二块这儿,



e

e






e





乘上



x

k

t

x_{k}^{t}







x











k










t






















可以用



a

k

a_{k}







a











k






















替换掉

(

标量的转置还是等于其本身



,然后前面的和后面的相减。就可以等于第四行这个公式。


(3).公式中的第四行:又由于,



a

k

a_{k}







a











k






















等于



e

e






e





乘上



x

k

t

x_{k}^{t}







x











k










t






















,所以我们就把它代入进去替换掉



a

k

a_{k}







a











k

























然后就得到了第五行这个公式。






我们刚才说过投影方向最好的方向为保存原始信息最好的方向,在这儿也就是投影之后的点与原始样本点距离最小的方向,也就是



J

(

e

)

J(e)






J


(


e


)





取最小的时候。所以投影样本点



x

k

x_{k}^{‘}







x











k





















































和原始样本



x

k

x_{k}







x











k






















之间的距离



J

(

e

)

J(e)






J


(


e


)





函数就可以用来度量这个投影的好坏。

在这里插入图片描述



[10].样本点和投影点之间的距离


我们可以看到什么时候



J

(

e

)

J(e)






J


(


e


)





取最小呢?因为

后面这一块(蓝色的圈 圈出来的部分)

始终为原始样本的模长之和,所以大小恒等不变。那么要



J

(

e

)

J(e)






J


(


e


)





取最小,

前面负的这一块(红色的圈 圈出来的部分)

就要最大。


我们仔细一点发现,前面这块求和后(红色的圈 圈出来的部分)的结果其实就是一个矩阵,而这个矩阵就是样本的散度矩阵。也就是等于样本特征属性数据的协方差矩阵乘上(m-1)。[m为样本的个数]



补:在机器学习模式识别中,经常需要应用到协方差矩阵和散布矩阵。如在PCA主成分分析中,需要计算样本的散度矩阵,有的论文是计算协方差矩阵。实质上二者意义差不多,散布矩阵(散度矩阵)前乘以系数1/(m-1)就可以得到协方差矩阵了。


散布矩阵的大小由特征维数d决定





关系:散度矩阵=类内离散度矩阵=类内离差阵=协方差矩阵×(m-1)

在这里插入图片描述



[11].类间散度矩阵


在这里我们发散一下,离开PCA的主线求解,看一下这个协方差矩阵和散度矩阵的关系。我把样本矩阵、散度矩阵、样本属性的协方差矩阵的关系做了如下图:

在这里插入图片描述



[12].从样本矩阵得到的散度矩阵和协方差矩阵的关系


看完了协方差矩阵和散度矩阵的关系,我们接着回到PCA的主线求解过程中来。

在这里插入图片描述



[13]


从图[13]中画红圈打箭头的位置,我们可以看到单位向量



e

e






e





乘上这个散度矩阵再乘上一个单位向量



e

t

e^{t}







e











t













,其实它等于的就是一个标量。那么怎么去选择这个



e

e






e





的方向让乘出来的标量最大呢?


现在我们的问题就变为了求解画红圈部分的最大值。因为这儿有一个限定条件,



e

e






e





的模长等于1,所以这儿我们就可以利用 拉格朗日乘数法 列出一个新等式。

在这里插入图片描述



[14].拉格朗日乘数法


因为要取最大值,那么它的导数就为0。令导数等于0,然后求导,这个时候找出的自变量e的方向,就是投影方向。


在上图[14]中,然后我们发现,这个式子最后化成了这个样子。很明显,这个公式就是我们线性代数中求矩阵特征值和特征向量的方程。可以看出,投影方向



e

e






e





就为散度矩阵(协方差矩阵*(m-1))的特征向量。


这时候我们在等式左边乘上单位向量



e

e






e





的转置



e

t

e^{t}







e











t













,整个公式的结果就等于了特征值。要让



e

t

S

e

e^{t}Se







e











t










S


e





最大,那么就去找最大特征值对应的特征向量,这样就把第一个主成分方向找出来了。同理,当然你也可以根据你降维的需要,找出剩下的投影方向。




(四). PCA的总结

在这里插入图片描述



[15].PCA的总结




如上图[15]所示,最后我们再来回顾一下PCA的思想。对于一个有



m

m






m





个样例,



n

n






n





个特征属性的样本矩阵



X

m

×

n

X_{m×n}







X











m


×


n






















.他的特征属性数据组成的散度矩阵(协方差矩阵*(m-1))为



C

C






C





,从散度矩阵(协方差矩阵*(m-1))中选取 K 个特征向量组成投影矩阵



P

n

×

k

P_{n×k}







P











n


×


k






















。然后将样本数据投影到这 K 维正交向量组成的 K 维空间上,样本矩阵就从



X

m

×

n

X_{m×n}







X











m


×


n






















降维到了



B

m

×

k

B_{m×k}







B











m


×


k

























(五). PCA的参考文献汇总


(1).https://www.bilibili.com/video/BV15t411v7Pg?p=6


(2).https://www.cnblogs.com/henuliulei/p/10826646.html


最后是补充一下协方差矩阵的知识,这涉及到很细节的问题,有利于你的深刻理解PCA。


(3).https://blog.csdn.net/xueluowutong/article/details/85334256





二.SVD



(一). SVD的简介:什么是SVD?SVD有什么作用?


(1).SVD(Singularly Valuable Decomposition)就是矩阵的奇异值分解,它可以将


任意


一个m



×

×






×





n的矩阵



A

m

×

n

A_{m×n}







A











m


×


n






















分解为正交方阵(左奇异矩阵)



U

m

×

m

U_{m×m}







U











m


×


m






















,对角奇异值矩阵



Σ

m

×

n

\Sigma_{m×n}







Σ











m


×


n






















,正交方阵(右奇异矩阵)



V

n

×

n

T

V_{n×n}^{T}







V











n


×


n










T

























正交阵(幺正矩阵)和对角奇异值矩阵的物理作用


正交阵:

旋转



对角奇异值矩阵:

拉伸



公式表示如下:







A

m

×

n

A_{m×n}







A











m


×


n






















=



U

m

×

m

U_{m×m}







U











m


×


m






















.



Σ

m

×

n

\Sigma_{m×n}







Σ











m


×


n






















.



V

n

×

n

T

V_{n×n}^{T}







V











n


×


n










T






















(1)




(2).SVD在工程上主要有两个方面的应用,第一个就是和PCA的作用一样,将一些高维的数据降维到低维,可以用来有效提高机器学习算法的速度和模型的预测准确度。另一方面的作用就是去除掉噪声数据。










(二). SVD奇异值求解过程




1.


在这里我们发现,对一个


任意


矩阵



A

m

×

n

A_{m×n}







A











m


×


n






















做SVD分解,跟我们之前线性代数中方阵的特征值分解十分的像,我们首先来回顾一下方阵的特征值分解。


这儿我们给出的是方阵分解的特例,也就是对称矩阵(酉矩阵)的特征值分解。由线性代数的知识我们可以知道,对于任意的一个对称矩阵



A

m

×

m

A_{m×m}







A











m


×


m






















=



A

m

×

m

T

A_{m×m}^{T}







A











m


×


m










T






















,它一定存在正交矩阵



P

m

×

m

P_{m×m}







P











m


×


m






















,使得



A

m

×

m

A_{m×m}







A











m


×


m






















可以相似对角化,有公式如下:







A

m

×

m

A_{m×m}







A











m


×


m






















=



P

m

×

m

P_{m×m}







P











m


×


m






















.



λ

m

×

m

\lambda_{m×m}







λ











m


×


m






















.



P

m

×

m

T

P_{m×m}^{T}







P











m


×


m










T






















(2)





;


2.


知道了对称矩阵的特征值分解,对于


任意


矩阵



A

m

×

n

A_{m×n}







A











m


×


n






















的SVD分解有什么作用呢?




我们发现,矩阵



A

m

×

n

A_{m×n}







A











m


×


n






















的转置



A

n

×

m

T

A_{n×m}^{T}







A











n


×


m










T






















乘上



A

m

×

n

A_{m×n}







A











m


×


n


























A

n

×

m

T

A_{n×m}^{T}







A











n


×


m










T

























A

m

×

n

A_{m×n}







A











m


×


n






















,这个



A

n

×

m

T

A_{n×m}^{T}







A











n


×


m










T

























A

m

×

n

A_{m×n}







A











m


×


n






















就是一个对称矩阵。




这个时候我们就可以对



A

n

×

m

T

A_{n×m}^{T}







A











n


×


m










T

























A

m

×

n

A_{m×n}







A











m


×


n






















做特征值分解,看是否能够求出上面SVD中的正交方阵



U

m

×

m

U_{m×m}







U











m


×


m






















,对角奇异值矩阵



Σ

m

×

n

\Sigma_{m×n}







Σ











m


×


n






















,正交方阵



V

n

×

n

T

V_{n×n}^{T}







V











n


×


n










T































3.


去尝试求解SVD的三个矩阵:


补充知识:矩阵的特征值等于矩阵奇异值的平方



λ

\lambda






λ





=



σ

2

\sigma^{2}







σ











2

















把上面的公式(1)代入,可得:







A

n

×

m

T

A_{n×m}^{T}







A











n


×


m










T

























A

m

×

n

A_{m×n}







A











m


×


n






















=(



V

n

×

n

V_{n×n}







V











n


×


n






















.



Σ

n

×

m

T

\Sigma_{n×m}^{T}







Σ











n


×


m










T






















.



U

m

×

m

T

U_{m×m}^{T}







U











m


×


m










T






















)(



U

m

×

m

U_{m×m}







U











m


×


m






















.



Σ

m

×

n

\Sigma_{m×n}







Σ











m


×


n






















.



V

n

×

n

T

V_{n×n}^{T}







V











n


×


n










T






















)   (3)




因为对于对称矩阵有:



U

m

×

m

T

U_{m×m}^{T}







U











m


×


m










T






















.



U

m

×

m

U_{m×m}







U











m


×


m






















=



E

E






E









所以公式(3)约掉



U

m

×

m

T

U_{m×m}^{T}







U











m


×


m










T






















.



U

m

×

m

U_{m×m}







U











m


×


m






















,得到如下公式:







A

n

×

m

T

A_{n×m}^{T}







A











n


×


m










T

























A

m

×

n

A_{m×n}







A











m


×


n






















=



V

n

×

n

V_{n×n}







V











n


×


n






















.(



Σ

n

×

m

T

\Sigma_{n×m}^{T}







Σ











n


×


m










T

























Σ

m

×

n

\Sigma_{m×n}







Σ











m


×


n






















).



V

n

×

n

T

V_{n×n}^{T}







V











n


×


n










T






















(4)




刚才我们说过,矩阵的特征值等于矩阵奇异值的平方



λ

\lambda






λ





=



σ

2

\sigma^{2}







σ











2

















所以



Σ

n

×

m

T

\Sigma_{n×m}^{T}







Σ











n


×


m










T

























Σ

m

×

n

\Sigma_{m×n}







Σ











m


×


n






















=



λ

n

×

n

\lambda_{n×n}







λ











n


×


n


























所以公式(4)等于



A

n

×

m

T

A_{n×m}^{T}







A











n


×


m










T

























A

m

×

n

A_{m×n}







A











m


×


n






















=



V

n

×

n

V_{n×n}







V











n


×


n






















.



λ

n

×

n

\lambda_{n×n}







λ











n


×


n






















.



V

n

×

n

T

V_{n×n}^{T}







V











n


×


n










T






















(5)




于是,我们通过



A

n

×

m

T

A_{n×m}^{T}







A











n


×


m










T

























A

m

×

n

A_{m×n}







A











m


×


n






















将本来不对称的



A

m

×

n

A_{m×n}







A











m


×


n






















形成对称矩阵,就可以求出




V

n

×

n

T

V_{n×n}^{T}







V











n


×


n










T






















,以及



Σ

m

×

n

\Sigma_{m×n}







Σ











m


×


n



















































4.


我们通过;



A

m

×

n

A_{m×n}







A











m


×


n

























A

n

×

m

T

A_{n×m}^{T}







A











n


×


m










T






















,可以去求出







A

m

×

n

A_{m×n}







A











m


×


n

























A

n

×

m

T

A_{n×m}^{T}







A











n


×


m










T






















=



U

m

×

m

U_{m×m}







U











m


×


m






















.(



Σ

m

×

n

T

\Sigma_{m×n}^{T}







Σ











m


×


n










T

























Σ

n

×

m

\Sigma_{n×m}







Σ











n


×


m






















).



U

m

×

m

T

U_{m×m}^{T}







U











m


×


m










T






















(6)




于是我们可以得到




U

m

×

m

U_{m×m}







U











m


×


m


























在这儿,细心的同学可能会发现在公式(4)中的



Σ

n

×

m

T

\Sigma_{n×m}^{T}







Σ











n


×


m










T

























Σ

m

×

n

\Sigma_{m×n}







Σ











m


×


n






















和公式(6)中的



Σ

m

×

n

T

\Sigma_{m×n}^{T}







Σ











m


×


n










T

























Σ

n

×

m

\Sigma_{n×m}







Σ











n


×


m






















的对角奇异值矩阵维度不一样。




其实求出来的奇异值都是一样的,原因如下:

在这里插入图片描述






m

>

=

i

>

k

m >= i >k






m




>






=








i




>








k





时,



σ

i

\sigma_{i}







σ











i






















=0,如下图所示

在这里插入图片描述



所以前后求出来的




Σ

m

×

n

\Sigma_{m×n}







Σ











m


×


n























是一样的,对角线上它们求出来的奇异值是一样的。只是因为维数不一样,对角线上面0的个数有点差别。















(三). SVD奇异值的作用




1.

SVD在数据降维方面的作用


SVD在数据降维方面的作用在这一节暂且不讲,因为在后面一章将单独和PCA的降维作比较。


只大概说一下,SVD可以将样本数据在行和列两种方向降维。而PCA只是列降维,也就是减少样本属性。








2.

SVD在去除噪声数据方面的作用


为了方便讲解,我们引入一个小小的例子


这儿有一个2×3的矩阵



W

2

×

3

W_{2×3}







W











2


×


3





























W

2

×

3

W_{2×3}







W











2


×


3






















=



[

4

0

5

0

0

5

]

\quad\begin{bmatrix} 4 & 0&5 \\ 0& 0&5 \end{bmatrix}\quad










[













4








0





























0








0





























5








5




















]













通过SVD分解可以得到如下表示:







W

2

×

3

W_{2×3}







W











2


×


3






















=



U

2

×

2

U_{2×2}







U











2


×


2






















.



Σ

2

×

3

\Sigma_{2×3}







Σ











2


×


3






















.



V

3

×

3

T

V_{3×3}^{T}







V











3


×


3










T




























=



[

0.81

0.59

0.59

0.81

]

\quad\begin{bmatrix} 0.81 & -0.59 \\ 0.59 & 0.81 \end{bmatrix}\quad










[













0


.


8


1








0


.


5


9
































0


.


5


9








0


.


8


1




















]












[

7.70

0

0

0

2.60

0

]

\quad\begin{bmatrix} 7.70 & 0&0 \\ 0& 2.60&0 \end{bmatrix}\quad










[













7


.


7


0








0





























0








2


.


6


0





























0








0




















]












[

0.42

0

0.91

0.91

0

0.42

0

1

0

]

\quad\begin{bmatrix} 0.42 & 0&0.91 \\ -0.91&0&0 .42\\0&1&0\end{bmatrix}\quad
























































0


.


4


2











0


.


9


1








0





























0








0








1





























0


.


9


1








0


.


4


2








0




































































=7.70



[

0.81

0.59

]

\quad\begin{bmatrix} 0.81 \\ -0.59\end{bmatrix}\quad










[













0


.


8


1











0


.


5


9




















]












[

0.42

0

0.91

]

\quad\begin{bmatrix} 0.42 & 0&0.91 \end{bmatrix}\quad










[













0


.


4


2





























0





























0


.


9


1




















]









+2.60



[

0.59

0.81

]

\quad\begin{bmatrix} 0.59 \\ 0.81\end{bmatrix}\quad










[













0


.


5


9








0


.


8


1




















]












[

0.91

0

0.42

]

\quad\begin{bmatrix}- 0.91 & 0&0.42 \end{bmatrix}\quad










[
















0


.


9


1





























0





























0


.


4


2




















]















=



λ

1

\sqrt{\lambda_{1} }















λ











1















































u

1

\vec{u_{1}}















u











1

















































(

v

1

)

T

(\vec{v_{1}})^{T}






(











v











1












































)











T













+



λ

2

\sqrt{\lambda_{2} }















λ











2















































u

2

\vec{u_{2}}















u











2

















































(

v

2

)

T

(\vec{v_{2}})^{T}






(











v











2












































)











T



















=



[

2.62

0

5.68

1.91

0

4.12

]

\quad\begin{bmatrix} 2.62 & 0&5.68 \\ 1.91& 0&4.12 \end{bmatrix}\quad










[













2


.


6


2








1


.


9


1





























0








0





























5


.


6


8








4


.


1


2




















]









+



[

1.38

0

0.64

1.91

0

0.88

]

\quad\begin{bmatrix} 1.38 & 0&-0.64 \\ -1.91& 0&0.88 \end{bmatrix}\quad










[













1


.


3


8











1


.


9


1





























0








0
































0


.


6


4








0


.


8


8




















]















通过上面对矩阵



W

2

×

3

W_{2×3}







W











2


×


3






















的SVD分解,我们可以看到,当最后如果只取




较大的奇异值对应的



λ

1

\sqrt{\lambda_{1} }















λ











1















































u

1

\vec{u_{1}}















u











1

















































(

v

1

)

T

(\vec{v_{1}})^{T}






(











v











1












































)











T













的话,那么它的矩阵值是



[

2.62

0

5.68

1.91

0

4.12

]

\quad\begin{bmatrix} 2.62 & 0&5.68 \\ 1.91& 0&4.12 \end{bmatrix}\quad










[













2


.


6


2








1


.


9


1





























0








0





























5


.


6


8








4


.


1


2




















]














是比



λ

2

\sqrt{\lambda_{2} }















λ











2















































u

2

\vec{u_{2}}















u











2

















































(

v

2

)

T

(\vec{v_{2}})^{T}






(











v











2












































)











T













的矩阵值



[

1.38

0

0.64

1.91

0

0.88

]

\quad\begin{bmatrix} 1.38 & 0&-0.64 \\ -1.91& 0&0.88 \end{bmatrix}\quad










[













1


.


3


8











1


.


9


1





























0








0
































0


.


6


4








0


.


8


8




















]









更接近原始矩阵



W

2

×

3

W_{2×3}







W











2


×


3






















的值。




其实前面较大奇异值对应的向量就是主成分PCA,所




以这就是SVD与PCA的联系。







这有什么用呢?






在这里插入图片描述








































[16].SVDA的总结






对于上图[16]中,很明显左边的图像存在很多噪点,在纯黑色的区域并不都是黑色的小像素块,还存在很多偏灰色的像素块,这个时候SVD就可以把主成分提取出来,也就是不要那些奇异值小的对应的向量,剩下主要的,这样就可以把噪声给去掉了,得到右边较纯净的图像。



(四). SVD的参考文献


(1).https://www.bilibili.com/video/BV1N4411a78K?from=search&seid=14960839570265794561


(2).https://www.bilibili.com/video/BV1mx411E74T?p=2


(3).https://blog.csdn.net/zhongkejingwang/article/details/43053513







三.SVD与PCA在样本数据矩阵降维方面的差异



(一). SVD的降维既可以行降维也可以列降维


对于一个矩阵



A

m

×

n

A_{m×n}







A











m


×


n






















通过SVD分解




(1).



A

n

×

m

T

A_{n×m}^{T}







A











n


×


m










T

























A

m

×

n

A_{m×n}







A











m


×


n






















的方式可以得到

右奇异值矩阵





V

n

×

n

T

V_{n×n}^{T}







V











n


×


n










T



























(2).



A

m

×

n

A_{m×n}







A











m


×


n

























A

n

×

m

T

A_{n×m}^{T}







A











n


×


m










T






















方式可以得到

左奇异值矩阵





U

m

×

m

U_{m×m}







U











m


×


m































A

m

×

n

A_{m×n}







A











m


×


n






















=



U

m

×

m

U_{m×m}







U











m


×


m






















.



Σ

m

×

n

\Sigma_{m×n}







Σ











m


×


n






















.



V

n

×

n

T

V_{n×n}^{T}







V











n


×


n










T






















(1)




我们把上式中的右奇异值矩阵(

正交矩阵等于其逆矩阵






V

n

×

n

T

V_{n×n}^{T}







V











n


×


n










T























移到等式的左边,可以得到如下表示:






因为



(

V

n

×

n

T

)

1

(V_{n×n}^{T})^{-1}






(



V











n


×


n










T




















)














1













=



(

V

n

×

n

T

)

T

(V_{n×n}^{T})^{T}






(



V











n


×


n










T




















)











T













=



V

n

×

n

V_{n×n}







V











n


×


n





























A

m

×

n

A_{m×n}







A











m


×


n


























V

n

×

n

V_{n×n}







V











n


×


n























=



U

m

×

m

U_{m×m}







U











m


×


m

























Σ

m

×

n

\Sigma_{m×n}







Σ











m


×


n


























这个时候我们从右奇异值矩阵




V

n

×

n

V_{n×n}







V











n


×


n























中找出较大的一些奇异值(K个较大)对应的向量



v

i

\vec{v_{i}}















v











i














































(



1

<

=

i

<

=

k

1<= i <= k






1




<






=








i




<






=








k





),组成

降维投影矩阵





V

n

×

k

V_{n×k}







V











n


×


k




























这个时候样本矩阵乘上这个投影降维矩阵,就如下表示:





A

m

×

n

A_{m×n}







A











m


×


n


























V

n

×

k

V_{n×k}







V











n


×


k























=



A

m

×

k

A_{m×k}







A











m


×


k


























此时样本矩阵的列就从n列降维到了



k

k






k





列。






同理,利用

左奇异值矩阵

,通过上面的方法可以把样本矩阵



A

m

×

n

A_{m×n}







A











m


×


n






















进行


行降维

.








总结:



(1). 利用右奇异值矩阵可以达到列降维的目的


(1). 利用左奇异值矩阵可以达到行降维的目的































(二). PCA的降维是列降维


PCA给样本矩阵降维时,主要是列降维。如我引言所说,降维是综合了样本中各个特征的属性数据,降维后的样本数据仍然很好的保存了原始样本数据的信息,可以理解为,样本的属性减少,新的维度属性综合了之前所有样本的属性。





为什么说 PCA的降维是列降维呢?




在这里插入图片描述





[12].从样本矩阵得到的散度矩阵和协方差矩阵的关系




我们可以从图[12]看到,利用样本矩阵



X

m

×

n

X_{m×n}







X











m


×


n






















来求投影轴方向



e

e






e





时,


利用到了



X

n

×

m

T

X_{n×m}^{T}







X











n


×


m










T

























X

m

×

n

X_{m×n}







X











m


×


n
























对比上面矩阵



A

m

×

n

A_{m×n}的







A











m


×


n

























SVD分解





A

n

×

m

T

A_{n×m}^{T}







A











n


×


m










T

























A

m

×

n

A_{m×n}







A











m


×


n






















的方式可以得到



A

m

×

n

A_{m×n}







A











m


×


n























右奇异值矩阵





V

n

×

n

T

V_{n×n}^{T}







V











n


×


n










T



























我们可以知晓,



X

m

×

n

T

X_{m×n}^{T}







X











m


×


n










T

























X

m

×

n

X_{m×n}







X











m


×


n






















最后也就是求出



X

m

×

n

X_{m×n}







X











m


×


n
























右奇异值矩阵





V

n

×

n

T

V_{n×n}^{T}







V











n


×


n










T



























所以PCA是针对的

列降维











(三). 本章节参考文献


(1). https://blog.csdn.net/wangjian1204/article/details/50642732


(2).https://blog.csdn.net/feilong_csdn/article/details/84554053?depth_1-utm_source=distribute.pc_relevant_right.none-task-blog-OPENSEARCH-1&utm_source=distribute.pc_relevant_right.none-task-blog-OPENSEARCH-1



四.作者的按语


全文篇幅较长,希望对大家有所帮助。如果看不明白的话,可以查看每章节后面作者po出的参考文献,个人觉得那些文献能够非常好的解释PCA和SVD,我只是自己吸收了再表述出来,因为笔者水平有限加上表述得可能不太友好,所以见谅。



版权声明:本文为hahaxq原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。