自然语言处理 潜在语义分析LSA背后的奇异值分解SVD

特征值和特征向量

\(A \mathbf{x} = \lambda \mathbf{x}\),这里,\(A \in \mathcal{R}^{n \times n}\)\(\mathbf{x} \in \mathcal{R}^{n \times 1}\)\(\lambda \in \mathcal{R}\)\(\lambda\) 是特征值,\(\mathbf{x}\) 是对应的特征向量。因此特征值分解:\(AW=W \Sigma\)\(A=W \Sigma W^{-1}\)。最后,将 \(W\) 中的 n 个向量标准化,可以得到$$A_{n \times n}=W_{n \times n} \Sigma_{n \times n} W^{T}_{n \times n}$$这里要求 \(A\) 必须为方阵。

SVD奇异值分解

\(A_{m \times n}=U_{m \times m} \Sigma_{m \times n} V^{T}_{n \times n}\)

计算左奇异矩阵U:
\(AA^T \in \mathcal{R}^{m \times m}\)\((AA^T) \mathbf{u}_i = \lambda_i \mathbf{u}_i\)。具体地,\(AA^{T} = U \Sigma V^{T} V \Sigma^T U^T = U \Sigma \Sigma^T U^T\)

计算右奇异矩阵V:
\(A^T A \in \mathcal{R}^{n \times n}\)\((A^T A) \mathbf{v}_i = \lambda_i \mathbf{v}_i\)。具体地,\(A^{T} A = V \Sigma^T U^T U \Sigma V^{T} = V \Sigma^T \Sigma V^T\)

注:可以看出特征值等于奇异值的平方。

计算奇异值:
\(A=U \Sigma V^{T}\) => \(AV = U \Sigma\) => \(A \mathbf{v}_i = \sigma_i \mathbf{u}_i\) => 求出 \(\sigma_i\)

潜在的k个主题

对于奇异值,在奇异值矩阵中按从大到小排序,而且奇异值减少地很快。因此可以用最少的k个奇异值和对应的左右奇异向量来近似A。$$A_{m \times n} = U_{m \times m} \Sigma_{m \times n} V^{T}{n \times n} \approx U{m \times k} \Sigma_{k \times k} V^{T}_{k \times n}$$ \(U_{il}\) 是第i个文本与第l个主题的相关度,\(V_{jm}\) 是第j个单词和第m个主题的相关度,\(\Sigma_{lm}\) 是第l个主题和第m个主题的相关度。

使用

对于一个新的文本query:\(\mathbf{q} \in \mathcal{R}^{n \times 1}\),$$\mathbf{newq}{1 \times k} = \mathbf{q}{1 \times n} V_{n \times k} \Sigma^{-1}_{k \times k}$$

原文地址:https://www.cnblogs.com/viredery/p/nlp_svd.html