关于奇异值分解SVD的总结(PCA、LDI)

大部分摘自:

文章结构:

  • 奇异值分解SVD的理解
  • 奇异值分解与PCA
  • 奇异值分解与潜在语义分解

一、奇异值分解SVD的理解

奇异值分解即对任意矩阵A表示为下面这种形式。

展开即(U,V均为正交阵,故V的转置等于V的逆。两边同乘V,再将U,V表示为列向量组):

下面证V与U存在,即先假设存在,最后找到两组正交基即可。

V表示为:

U表示为:

如果要使他们两两正交,即:

又知

当正交基v选择为A'A的特征向量的话,由于A'A是对称阵,v之间两两正交,那么

这样就找到了正交基v并其映射后还是正交基Av。下面来计算剩余的奇异值。

我们有

故知某个奇异值的平方为其对应特征向量的特征值。故有:

这里,还有一个问题,即 Av_i可能为0,此时的 u_i 无法求解。即只能保证得到 k(即A的秩)个u_i 。下面,来找另外的u。将得到的u组成向量组 U_1

U_1X=0 得到零空间的基,则合并得到n个线性无关向量。再将零空间的基与前k个向量进行正交化,可得到正交向量组U。

则得到


另:

直观上,奇异值分解将矩阵分解成若干个(r个,即矩阵的秩)秩一矩阵(一列乘一行)之和,用公式表示就是:

 \quad\quad \qquad A = \sigma_1 u_1v_1^{\rm T}+\sigma_2 u_2v_2^{\rm T}+...+\sigma_r u_rv_r^{\rm T}


二、奇异值分解与PCA

首先介绍PCA,PCA即主成分分析,是常用的线性的降维算法。核心思想是找到一组基使得数据从原空间变换到在该组基构成的空间损失较少的信息,当然变换后的空间维度一般小于原空间,以达到降维的目的。通俗来讲,就是找到数据中那些方差最大的维度,因为方差越大,信息越多。并且不同维度之间正交,以便保留更多的信息。

1、 投影的一种特殊情况

b向量投影到a,a为基向量。可得投影向量 a(a^Ta)^{-1}a^Tb=aa^Tb ,则坐标表示时, a^Tb 即为坐标。详细如下:

2、PCA

3、PCA与奇异值分解的关系

通过上述的分析,我们将PCA问题转化为找一个矩阵P,使得 PCP^T 为对角矩阵。而 mC=XX^T ,将X奇异值分解得 X = U\sum_{}^{}{}V^T , mC=XX^T = U\sum_{}^{}{} \sum_{}^{}{}U^T ,则 U^TCU =\frac{1}{m}\sum_{}^{}{} \sum_{}^{}{} ,则 P=U^T

注意上述用的特征值分解是:

这样才能降维度(注意:行数代表特征数,列数代表样本个数)。

能这样做的原因是,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上了。所以,我们也可以用前r大的奇异值来近似描述矩阵。

右边的三个矩阵相乘的结果将会是一个接近于A的矩阵,在这儿,r越接近于n,则相乘的结果越接近于A。而这三个矩阵的面积之和(在存储观点来说,矩阵面积越小,存储量就越小)要远远小于原始的矩阵A,我们如果想要压缩空间来表示原矩阵A,我们存下这里的三个矩阵:U、Σ、V就好了。


三、奇异值分解与潜在语义分解

潜在语义索引(Latent Semantic Indexing)与PCA不太一样,至少不是实现了SVD就可以直接用的,不过LSI也是一个严重依赖于SVD的算法,之前吴军老师在矩阵计算与文本处理中的分类问题中谈到:

“三个矩阵有非常清楚的物理含义。第一个矩阵X中的每一行表示意思相关的一类词,其中的每个非零元素表示这类词中每个词的重要性(或者说相关性),数值越大越相关。最后一个矩阵Y中的每一列表示同一主题一类文章,其中每个元素表示这类文章中每篇文章的相关性。中间的矩阵则表示类词和文章雷之间的相关性。因此,我们只要对关联矩阵A进行一次奇异值分解,w 我们就可以同时完成了近义词分类和文章的分类。(同时得到每类文章和每类词的相关性)。”

上面这段话可能不太容易理解,不过这就是LSI的精髓内容,我下面举一个例子来说明一下:

这就是一个矩阵,不过不太一样的是,这里的一行表示一个词在哪些title中出现了(一行就是之前说的一维feature),一列表示一个title中有哪些词,(这个矩阵其实是我们之前说的那种一行是一个sample的形式的一种转置,这个会使得我们的左右奇异向量的意义产生变化,但是不会影响我们计算的过程)。比如说T1这个title中就有guide、investing、market、stock四个词,各出现了一次,我们将这个矩阵进行SVD,得到下面的矩阵:

首先,知道通过对SVD的,将词分为了三类。左奇异向量则代表每个词,跟三类的相关性,数字越大相关性越强。再者,其将文档也分为三类,右奇异向量代表每个文档跟三类的相关性。最后中间的矩阵表示,三类词与三类文档之间的相关性。

我们可以将左奇异向量和右奇异向量都取后2维(之前是3维的矩阵),投影到一个平面上,可以得到:

编辑于 2017-10-26