SVD
SVD,奇异值分解,是属于矩阵分解里面的一种方法。
矩阵分解中还有一种比较常用的方法,如下图:
上图中的矩阵A 为 n*n 的对称矩阵,那么如果矩阵A不对称呢?不对称矩阵A的分解就叫做奇异值分解SVD,如下图:
所以接下来要对U、S、V进行求解,当对U、S、V求解完毕,就相当于对该矩阵A成功的进行了SVD分解了。
上述求解过程不需要掌握,知道就行。
至此,SVD完成~
SVD与PCA的关系
上述对SVD的描述,是对SVD本身分解过程计算U、S、V过程的描述,但是并未涉及到SVD怎么关联上降维、PCA的问题。我们先简略说下之前学过的PCA:
求得投影矩阵 P ( m × k ) P(m×k) P(m×k)后,将数据集 X ( n × m ) X(n×m) X(n×m)做线性变换 P P P可以得到降维后的结果 Y ( n × k ) Y(n×k) Y(n×k)。(其中 n n n是样本的条数, m m m是原始数据特征的维度, k k k是降维后特征的维度),即 Y = X P Y=XP Y=XP
PCA从输入输出的角度来理解,是上述那样;如果从过程来理解,则为:
先求出X的协方差矩阵,求出该矩阵的特征值和特征向量,将特征值排序,选择前k个主要特征值(主成分),丢弃掉剩余特征,即完成了降维操作。
而SVD则可以直接对X进行奇异值分解,得到
X
=
U
S
V
T
X=USV^T
X=USVT
其中的
V
V
V相当于PCA中的
P
P
P
而
U
S
US
US相当于PCA后的结果
Y
Y
Y
说简单点,对数据集X做SVD就可以直接得到PCA的结果Y。
上述结论的推导过程如下,不需要掌握:
其实这也意味着,求解PCA,我们并不是只有求解协方差矩阵一条路可以走,直接SVD求解反而很多时候效果很好。
以上便是 SVD 以及 PCA和SVD 的 联系与区别。KO~