不正な相関行列 C {\boldsymbol C} C が与えられると何が起きるが考えてみましょう。
前回の解説 の "事実3" で悲劇が起きます。つまり、
( λ 1 0 ⋯ 0 0 λ 2 ⋯ 0 v d o t s ⋮ ⋱ ⋮ 0 0 ⋯ λ N ) = ( λ 1 0 ⋯ 0 0 λ 2 ⋯ 0 v d o t s ⋮ ⋱ ⋮ 0 0 ⋯ λ N ) ( λ 1 0 ⋯ 0 0 λ 2 ⋯ 0 v d o t s ⋮ ⋱ ⋮ 0 0 ⋯ λ N ) {\small \begin{pmatrix}\lambda_1&0&\cdots&0\\0&\lambda_2&\cdots&0\\vdots&\vdots&\ddots&\vdots\\0&0&\cdots&\lambda_{N}\end{pmatrix}=\begin{pmatrix}\sqrt{\lambda_1}&0&\cdots&0\\0&\sqrt{\lambda_2}&\cdots&0\\vdots&\vdots&\ddots&\vdots\\0&0&\cdots&\sqrt{\lambda_{N}}\end{pmatrix}\begin{pmatrix}\sqrt{\lambda_1}&0&\cdots&0\\0&\sqrt{\lambda_2}&\cdots&0\\vdots&\vdots&\ddots&\vdots\\0&0&\cdots&\sqrt{\lambda_{N}}\end{pmatrix}} λ 1 0 v d o t s 0 0 λ 2 ⋮ 0 ⋯ ⋯ ⋱ ⋯ 0 0 ⋮ λ N = λ 1 0 v d o t s 0 0 λ 2 ⋮ 0 ⋯ ⋯ ⋱ ⋯ 0 0 ⋮ λ N λ 1 0 v d o t s 0 0 λ 2 ⋮ 0 ⋯ ⋯ ⋱ ⋯ 0 0 ⋮ λ N
とする時になって、ハッと気が付くのです...「固有値が負だ!」と。
そしてコンピューターは無情にも「負の平方根は計算できません」というメッセージを残して息絶えます。
ちなみに第1回 に載せた不正な相関行列、
C = ( 1 1 − 1 1 1 1 − 1 1 1 ) {\boldsymbol C}=\begin{pmatrix}1&1&-1\\1&1&1\\-1&1&1\end{pmatrix} C = 1 1 − 1 1 1 1 − 1 1 1
の固有値は − 1 , 2 , 2 -1,2,2 − 1 , 2 , 2 となります。
この困難を打破してとにかく答えを出したい!そこでいよいよ特異値分解の登場です。
先ずは特異値分解で任意の行列(なんと正方行列でなくてもいい!)A {\boldsymbol A} A はどのように分解されるか見てみましょう。
A = U W V t {\boldsymbol A}={\boldsymbol U}{\boldsymbol W}{\boldsymbol V}^\text{t} A = U W V t
となります。とりあえずここでは A {\boldsymbol A} A として実対称正方行列であるところの相関行列 C {\boldsymbol C} C だけを対象にして順に説明していきましょう。
行列 C {\boldsymbol C} C から M = C C t {\boldsymbol M}={\boldsymbol C}{\boldsymbol C}^\text{t} M = C C t なる行列を計算します。この行列は自動的に、
となるんです!(もちろんもとの行列が実数の行列ならば M {\boldsymbol M} M も実数)。最後の特徴に注目してください。簡単に言うと、元の行列(C {\boldsymbol C} C )2乗することで負だった固有値があったとしてもそれが正になるということです。
というわけで行列 M {\boldsymbol M} M は互いに直交する固有ベクトルを持ち、固有値は全て0以上となります。この固有ベクトルを並べた行列が U {\boldsymbol U} U です。
次に、N = C t C {\boldsymbol N}={\boldsymbol C}^\text{t}{\boldsymbol C} N = C t C なる行列を作ります。この行列は M {\boldsymbol M} M の場合と全く同様に