不正な相関行列 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 の場合と全く同様に
となります。N {\boldsymbol N} N の固有ベクトルを並べた行列が V {\boldsymbol V} V です。
最後に W {\boldsymbol W} W は行列 C {\boldsymbol C} C の固有値の絶対値 を対角に並べた対角行列になります。
ここまでの手順で分かるように、各行列 U {\boldsymbol U} U 、V {\boldsymbol V} V 、W {\boldsymbol W} W は元の行列 C {\boldsymbol C} C がどんなものであれ安定的 に得ることができます(計算は止まらない!)。 前にも述べましたがこれが最も重要な点 です。
とにもかくにも行列 C {\boldsymbol C} C は、
C = U W V t {\boldsymbol C}={\boldsymbol U}{\boldsymbol W}{\boldsymbol V}^\text{t} C = U W V t
という形に分解されました。次に
W = ( ∣ λ 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 ∣ ) = W ′ W ′ {\small {\boldsymbol W}=\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}}={\boldsymbol W}^\prime {\boldsymbol W}^\prime W = ∣ λ 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 ∣ = W ′ W ′
とします(対角成分は固有値の絶対値なので安心して平方根 がとれる)。すると、
C = U W V t = U W ′ W ′ V t = U W ′ ( V W ′ ) t {\boldsymbol C}={\boldsymbol U}{\boldsymbol W}{\boldsymbol V}^\text{t}={\boldsymbol U}{\boldsymbol W}^\prime {\boldsymbol W}^\prime {\boldsymbol V}^\text{t}={\boldsymbol U}{\boldsymbol W}^\prime({\boldsymbol V}{\boldsymbol W}^\prime)^\text{t} C = U W V t = U W ′ W ′ V t = U W ′ ( V W ′ ) t
となります。
あと一息です
さてここで行列 C {\boldsymbol C} C が正しい相関行列、つまり半正定値だとどうなるか。その場合は U = V {\boldsymbol U}={\boldsymbol V} U = V となって特異値分解は前回の解説 の結果と同じになります。 つまり Q = V W ′ {\boldsymbol Q}={\boldsymbol V}{\boldsymbol W}^\prime Q = V W ′ とすることで、相関行列は C = Q Q t {\boldsymbol C}={\boldsymbol Q}{\boldsymbol Q}^\text{t} C = Q Q t となって目標達成 です。
しかしそうでない場合はどうでしょう。その場合もやはり同じく Q = V W ′ {\boldsymbol Q}={\boldsymbol V}{\boldsymbol W}^\prime Q = V W ′ とすることで手をうちませんか?もちろんこの場合は C ≠ Q Q t {\boldsymbol C}\neq {\boldsymbol Q}{\boldsymbol Q}^\text{t} C = Q Q t ではありますが(U ≠ V {\boldsymbol U}\neq{\boldsymbol V} U = V だから)...でも、
安定的に答えが出る
正しい相関行列の場合は正しい答えが出る
という望ましい性質を持ってます。
因みに正しい相関行列ではない場合にも、Q Q t {\boldsymbol Q}{\boldsymbol Q}^\text{t} Q Q t の各成分の符号は元の行列 C {\boldsymbol C} C のそれに等しくなります(正の相関が負になることはない)。
再び
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
を例に計算してみましょう。特異値分解の結果は、
C = ( 0.577 − 0.739 − 0.348 − 0.577 − 0.671 0.466 0.577 0.068 0.814 ) ⏟ U ( 1 0 0 0 2 0 0 0 2 ) ⏟ W ′ ( − 0.577 0.577 − 0.577 − 0.739 − 0.671 0.068 − 0.348 0.466 0.814 ) ⏟ V t {\boldsymbol C}=\underbrace{\begin{pmatrix}0.577&-0.739&-0.348\\-0.577&-0.671&0.466\\0.577&0.068&0.814\end{pmatrix}}_{{\boldsymbol U}}\underbrace{\begin{pmatrix}1&0&0\\0&2&0\\0&0&2\end{pmatrix}}_{{\boldsymbol W}^\prime}\underbrace{\begin{pmatrix}-0.577&0.577&-0.577\\-0.739&-0.671&0.068\\-0.348&0.466&0.814\end{pmatrix}}_{{\boldsymbol V}^\text{t}} C = U 0.577 − 0.577 0.577 − 0.739 − 0.671 0.068 − 0.348 0.466 0.814 W ′ 1 0 0 0 2 0 0 0 2 V t − 0.577 − 0.739 − 0.348 0.577 − 0.671 0.466 − 0.577 0.068 0.814
となります(U ≠ V {\boldsymbol U}\neq {\boldsymbol V} U = V であることが分かりますか?第1固有ベクトルの符号が逆転しています!こうすることで、固有値の方を正に揃えているという訳です)。そして、
Q = V W ′ = ( − 0.577 0.577 − 0.577 − 0.739 − 0.671 0.068 − 0.348 0.466 0.814 ) ( 1 0 0 0 2 0 0 0 2 ) {\boldsymbol Q}={\boldsymbol V}{\boldsymbol W}^\prime=\begin{pmatrix}-0.577&0.577&-0.577\\-0.739&-0.671&0.068\\-0.348&0.466&0.814\end{pmatrix}\begin{pmatrix}1&0&0\\0&\sqrt{2}&0\\0&0&\sqrt{2}\end{pmatrix} Q = V W ′ = − 0.577 − 0.739 − 0.348 0.577 − 0.671 0.466 − 0.577 0.068 0.814 1 0 0 0 2 0 0 0 2
となります。ここから Q Q t {\boldsymbol Q}{\boldsymbol Q}^\text{t} Q Q t を計算すると、
Q Q t = ( 5 / 3 1 / 3 − 1 / 3 1 / 3 5 / 3 1 / 3 − 1 / 3 1 / 3 5 / 3 ) {\boldsymbol Q}{\boldsymbol Q}^\text{t}=\begin{pmatrix}5/3&1/3&-1/3\\1/3&5/3&1/3\\-1/3&1/3&5/3\end{pmatrix} Q Q t = 5/3 1/3 − 1/3 1/3 5/3 1/3 − 1/3 1/3 5/3
となります(うーん、確かにC {\boldsymbol C} C とはちょっと違うなぁ。残念)。
以上で相関行列の分解に特異値分解 を用いる理由とその方法の解説を終了します。