奇异值分解(singular value decomposition,SVD)
如下图,一个矩阵可以分解为两个方阵和一个对角矩阵的乘积:
C = m * n;u = m * m;sigma = m * n;v' = n * n
sigma是一个对角矩阵,但通常不是方阵。sigma的对角元素被称为奇异值,与特征值类似。因此与PCA类似,我们可以取sigma中最大的k个,来简化数据:
u' = m * k;sigma' = k * k;v'' = k * v
利用新的三个矩阵u',sigma',v''相乘仍然得到一个m * n的矩阵。如果你选择的k个奇异值所占的所有奇异值比例足够大,那么新得到的m * n的矩阵将与C非常接近。SVD应用
1、图像压缩,只保留图像分解后的两个仿真和一个对角阵的对角元素就可以恢复出原始图像。
2、数据降维:
原理与PCA一样,SVD计算出的三个矩阵对应的是:
u:CC'的特征向量矩阵; sigma:奇异值矩阵,其中每个元素为特征值开方; v':C'C的特征向量矩阵。
因此SVD降维与PCA是一致的,尤其是事先对数据进行了中心化,再奇异值分解,则PCA降维和SVD降维完全一样。
SVD计算过程
假设原数据为X,一行代表一个样本,列代表特征。
1)计算X'X,XX';
2)对XX'进行特征值分解,得到的特征向量组成u,lambda_u;
3)对X'X进行特征值分解,得到的特征向量组成v,lambda_v;
4)lambda_u,lambda_v的重复元素开方组成对角矩阵sigma主对角线上的元素;
参考:
[1] http://blog.csdn.net/zk_j1994/article/details/76796616