潜在意味解析
このような分解を特異値分解 (SVD) と呼ぶ。
X = U Σ V T {\displaystyle X=U\Sigma V^{T}}
単語の相関と文書の相関を与える行列積は、次のように展開される。
X X T = ( U Σ V T ) ( U Σ V T ) T = ( U Σ V T ) ( V T T Σ T U T ) = U Σ V T V Σ T U T = U Σ Σ T U T X T X = ( U Σ V T ) T ( U Σ V T ) = ( V T T Σ T U T ) ( U Σ V T ) = V Σ U T U Σ V T = V Σ T Σ V T {\displaystyle {\begin{matrix}XX^{T}&=&(U\Sigma V^{T})(U\Sigma V^{T})^{T}=(U\Sigma V^{T})(V^{T^{T}}\Sigma ^{T}U^{T})=U\Sigma V^{T}V\Sigma ^{T}U^{T}=U\Sigma \Sigma ^{T}U^{T}\\X^{T}X&=&(U\Sigma V^{T})^{T}(U\Sigma V^{T})=(V^{T^{T}}\Sigma ^{T}U^{T})(U\Sigma V^{T})=V\Sigma U^{T}U\Sigma V^{T}=V\Sigma ^{T}\Sigma V^{T}\end{matrix}}}
Σ Σ T {\displaystyle \Sigma \Sigma ^{T}} と Σ T Σ {\displaystyle \Sigma ^{T}\Sigma } は対角行列なので、 U {\displaystyle U} には X X T {\displaystyle XX^{T}} の固有ベクトルが含まれるはずであり、一方 V {\displaystyle V} は X T X {\displaystyle X^{T}X} の固有ベクトルのはずである。
特異値分解 (SVD) は一般に大規模行列手法(例えばランチョス法)を使って計算されるが、ニューラルネットワーク的な手法を使って計算資源を節約することもできる。後者の場合、行列全体をメモリに保持する必要がない。
高速で逐次的なメモリ使用量の少ない大規模行列SVDアルゴリズムが最近開発されている。