奇异值分解SVD、PCA主成分分析降维、潜在语义分析LSA之间的关系

奇异值分解SVD是一种矩阵分解也是数据压缩的方法是在 Frobenius norm (也就是平方损失)意义下的对矩阵的最优近似。具体可以参考奇异值分解(SVD)(Singular Value Decomposition)

完全奇异值分解如下:

 一般矩阵A_{m\times n} 的 完全奇异值分解如下:

\boldsymbol{A}_{m\times n}=\boldsymbol{U}_{m\times m}\boldsymbol{D}_{m\times n}\boldsymbol{V}_{n\times n}^{T}

紧奇异值分解如下:

若一般矩阵A_{m\times n},其秩为 rank(\boldsymbol{A}) = r , r <=min(m,n),那么 \boldsymbol{A} 的紧奇异值分解就是:

\boldsymbol{A_{m\times n}} = \boldsymbol{U}_{m\times r}\boldsymbol{D}_{r\times r}\boldsymbol{V}_{n\times r}^{T}

 这里的\boldsymbol{D}_{r\times r}就是 原来的  \boldsymbol{D}_{m\times n} 的前 r 行前 r 列,其 \boldsymbol{U}_{m\times r} 是 \boldsymbol{U} 的前 r  列,其 \boldsymbol{V}_{n\times r} 是 \boldsymbol{V} 的前 r  列。

截断奇异值分解如下:

若一般矩阵A_{m\times n},其秩为 rank(\boldsymbol{A}) = r , r <=min(m,n),且 0<k<r ,那么 \boldsymbol{A} 的截断奇异值分解就是:

\boldsymbol{A_{m\times n}} \approx \boldsymbol{U}_{m\times k}\boldsymbol{D}_{k\times k}\boldsymbol{V}_{n\times k}^{T}

 这里的\boldsymbol{D}_{k\times k} 是原来的\boldsymbol{D}_{m\times n}的前 k 行前 k列,其 \boldsymbol{U}_{m\times k} 是 \boldsymbol{U} 的前 k  列,其 \boldsymbol{V}_{n\times k} 是 \boldsymbol{V} 的前 k 列。

LSA具体可以参考潜在语义分析(LSA)(latent semantic analysis)

LSA潜在语义分析引入话题进行降维解决了稀疏矩阵计算相似度的不准确性、单词的一词多义性和多词一义性的问题。

若用SVD实现LSA的思想,将奇异值分解中的 \boldsymbol{A}_{m\times n} 当作单词-文本矩阵,将 \boldsymbol{U}_{m\times k} 当作单词-话题矩阵,将 \boldsymbol{D}_{k\times k}\boldsymbol{V}_{n\times k}^{T} 当作话题-文本矩阵,就可以把单词-文本矩阵分解成单词-话题矩阵和话题-文本矩阵,因为奇异值分解是平方损失意义下的对矩阵的最优近似,并且 LSA 对分解后各个矩阵的实际意义解释也合理,所以可直接用SVD实现LSA的思想。所以LSA若用SVD作为LSA的具体解决方法(还有其他解决方法,这里不细说了),那LSA做的事情就和SVD一样,就是矩阵的最优近似,它只是对SVD分解后的各个矩阵赋予了实际意义的解释罢了。

PCA降维是一种降维的方法。具体可以参考主成分分析(PCA)(principal component analysis)

假设 n 维空间的 m 个点组成的矩阵为 \boldsymbol{A}_{m\times n} ,设我们想要得到的降维后的矩阵是\boldsymbol{A^{'}}_{m\times k}k< n。那我们可否对 \boldsymbol{A}_{m\times n} 进行奇异值分解取左奇异向量组成的矩阵 \boldsymbol{U}_{m\times k} 当作 \boldsymbol{A^{'}}_{m\times k} 呢?我觉得是可以的,此时\boldsymbol{D}_{k\times k}\boldsymbol{V}_{n\times k}^{T} 就是 k 维和 n 维之间的转化矩阵,但是有一个问题,那就是降维之后的维度 k 需要满足  0<k<r  (  rank(\boldsymbol{A}) = r , r <=min(m,n)),如果\boldsymbol{A}_{m\times n}的秩较小,那么降维之后的维度 k 的选择范围就较小。

 我们想要降维的最初的想法是使得0<k<n就可以。PCA提供了一个可以使得降低后的维度有更大选择范围的方法,它定义了一个解线性变换矩阵\boldsymbol{G}_{n\times k},然后求得最优的线性变换矩阵 \boldsymbol{G}_{n\times k}^{T} ,那么 \boldsymbol{c}_{k\times 1}=\boldsymbol{G}_{n\times k}^{T}\boldsymbol{x}_{n\times 1},那么降维后的向量维度 k 就满足0<k<n,这样就达到了我们最初的需求。那怎么求\boldsymbol{G}_{n\times k}呢?PCA通过最小化 ‘原矩阵’ 和  ‘原矩阵经过降维(线性变换)又升维(解线性变换)之后的矩阵’  之间的Frobenius norm (也就是平方损失)来求得最优的 \boldsymbol{G}_{n\times k}。最终我们推算出求  \boldsymbol{G}_{n\times k} 有两种方法,一种是对\boldsymbol{A}_{m\times n}的协方差矩阵进行特征分解,一种是对去中心化后的\boldsymbol{A}_{m\times n}进行奇异值分解。 

奇异值分解只是 PCA  用来求解线性变换矩阵的一种实现方法,没有参与到 PCA 的中心思想中他两的共同之处是在SVD和PCA的中心思想中,目标都是最小化 ‘原矩阵’ 和 ‘近似矩阵’  之间的平方损失,只不过 PCA 事先设定了一种降维的线性变换,而SVD没有。

如有不对的地方欢迎各位大佬留言吖~

猜你喜欢

转载自blog.csdn.net/qq_32103261/article/details/120612008