固有値分解と特異値分解の違いってなんだっけ?
ある日、行列を前にして、「さて、これを固有値分解。。。あれ、特異値分解。。???ん、そもそも固有値分解と特異値分解って何が違うんだっけ」と混乱に陥った。
そこで、もう一度、「何がどうちがうのか?」をおさらいしてみた。
勉強したのはここのサイト
固有値分解も特異値分解もコレスキー分解も目的は同じ
コレスキー分解。。昔、教科書で目にしたことはあったが、久しぶりに目にした気がする。
ともかく、コレスキーも固有値も特異値も、目的は行列を分解することである。
つまり、(相関)行列を相関行列CをQ*Qtに分解したい時に使う。
どこが違うんだっけ?
それぞれ対応できる柔軟度が違う。
順番的には コレスキー < 固有値 < 特異値 で特異値分解が一番、柔軟に対応できる。
じゃあ、それぞれどういう時に使えて、どういう時に使えないの?
コレスキー分解:
対応できるとき
行列が「正定値実対称行列」の時。「正定値実対称行列」ってなんだっけ?と思ったけど、「値が十分にあるとき」くらいに解釈しとけばいいんだ。(たぶん)
対応できない時
行列が「半正定値実対称行」の時。値が十分にない時だ。(たぶん)
固有値分解:
対応できるとき
行列が「半正定値実対称行列」の時
対応できない時
行列にノイズがあって、欠損値があるとき
平均値でもとって欠損うめとけ!とかやると、固有値がマイナスになってしまうことが(よく)ある。こうなると分解計算ができなくなる。
特異値分解:
対応できるとき
行列に欠損値があってもおk!
イメージ的には、固有値がマイナスになった場合に、固有値を2乗して、マイナスになった固有値を埋めて、分解計算を続行する。
対応できない時
知らん
おまけ あれ、固有値ってどうやって計算するんだっけ?
行列式detを解く。
行列Aに対してはdet(A-λE)=0
を解いた解が固有値。※Eは成分が1の対角行列
固有値と固有ベクトルの求め方はこのページを参照のこと