数学基础——矩阵分解

特征分解

即把矩阵分解成一组特征向量和特征值。利用特征分解去分析矩阵A时,得到特征向量构成的矩阵V和特征值构成的向量,如果这n个特征值所对应的特征向量线性无关,那么矩阵A就可以用下式的特征分解表示: ,其中W是n个特征向量张成的n*n维矩阵,而为这n个特征值为主对角线的n*n维矩阵

一般我们会把n个特征向量标准化,此时W的n个特征向量为标准正交基,满足,即 ,这样我们的特征分解可以写成

注意到要进行特征分解,矩阵A必须为方阵,如果A不是方阵,我们还是可以对矩阵进行分解,此时我们的SVD出场了

奇异值分解(SVD)

将矩阵分解为奇异向量和奇异值。每个向量都有奇异值分解,但不一定都有特征分解。假设我们的矩阵A是一个m*n的矩阵,定义,其中U和V都是正交矩阵, 是对角矩阵,对角线上元素的点是矩阵的奇异值

如何求出奇异值分解后的这三个矩阵呢。如果我们将乘A,那么我们会得到一个n*n的方阵,这时候就可以进行特征分解,得到的特征向量和特征值满足 ,将的所有特征向量张成一个n*n的矩阵V,就得到了V矩阵,将V中的每个向量叫做A的右奇异向量

同样的我们可以对进行矩阵分解,得到特征值和特征向量满足下式: ,
将的所有特征向量张成一个m*m的矩阵U,就是我们SVD公式里面的U矩阵了,将U中的每个特征向量叫做A的左奇异向量

注意到

这样我们可以求出每个奇异值,进而求出奇异值矩阵

关于奇异值,与特征分解的特征值类似,在奇异值矩阵中也是按照从大到小排列,而且奇异值减小得特别快,在很多情况下,前10%甚至1%的奇异值就占据了全部奇异值之和99%以上的比例,也就是说我们可以用最大的k个奇异值和对应的左右奇异向量来近似描述矩阵

SVD用于PCA:在PCA降维中我们用到协方差矩阵的的最大的d个特征向量,这个过程中要先求出,当样本数量多样本特征数也多的时候,这个计算量是很大的。SVD也能得到的最大的d个特征向量,但SVD有个好处,有一些SVD的实现算法可以不先求出,也能求出我们的右奇异矩阵V

你可能感兴趣的:(数学基础——矩阵分解)