新年あけましておめでとうございます。
今年も適当な感じで書いていきたいと思います。
今回はデータ分析関係。
まずは主成分分析についてまとめてみます。
まあ個人的にやりたいことをまとめた感じです。
1.主成分分析について
数値データ列を似た者同士でまとめ、次元数を圧縮するようなイメージ。
もう少しわかりやすい?イメージだと、
例外もありますが、基本的には身長が高ければ体重も高くなる傾向にあると思います。
なので体重と身長をひとつの数値データにまとめて表現してしまおうというものです。
でもやせ体系の人もいるし、逆もいるのもまた事実。
その例外部分はまた別の軸に表現できます。
イメージ図はこんな感じ。
第一主成分が体重・身長をまとめた軸。
第二主成分が例外部分を表現する軸。
主成分分析を行うことで主成分を求めることができます。
今回の例では身長、体重という二つのパラメータしか考えていませんが、これが100とすると、主成分にまとめることができると100パラメータから10パラメータに減らすことができたりします。
しかし身長・体重の例でも言ったノイズ部分はどうしてもあるものです。
すると主成分にまとめたとき、どれだけのノイズがあるかがわかりません。
その判断を行うのに寄与率というものがあります。
っではここから数学的な内容にいってみましょう。
1.1.主成分ベクトル
主成分の方向を定義するベクトルです。これはバラツキが一番大きい方向のものになります。
じゃあこれをどうやって求めるのかですが、各変数の分散共分散行列の固有ベクトルを求めることになります。
さらに固有ベクトルでどれが一番情報量が大きさは固有ベクトルに対応する固有値が大きさで定義します。
固有値が一番大きい固有ベクトルを第一主成分、次に大きいものを第二主成分、というようにします。
1.2.寄与率
第主成分の固有値をとします。このとき第主成分の寄与率は と定義される。
この寄与率を上位のいくつかまで合計し、それが0.8だった場合はそれが主成分に変換前のデータを80%表現しているということになる。
1.3.やりたいこと
さてここまで主成分分析について書いてきましたが、やりたいことの本題。
主成分軸に展開した後、もとのデータに戻せるのか?ということ。
結論としてはノイズを含まない形でもとには戻せます。
ここには特異値分解が必要です。
さて、ここからは特異値分解の話。
2.特異値分解について
特異値分解は行列に対して定義されます。を行列とします。このときと分解できます。
ここではのユニタリ行列、はのユニタリ行列、は対角成分以外は0の行列。
またはの随伴行列を表す。
2.1.主成分分析への応用
さて、各列の平均0、分散1の行列をとする。さらに要素はすべて実数とします。
このときはの分散共分散行列となります。また特異値分解を利用すると
と書けます。
さらにはユニタリ行列なのでです。
となると。
よく見てみると、は対角行列であるので、の固有値分解となっていることがわかります。
ここで主成分分析の話に戻ります。
主成分ベクトルをとし、元データの行列をとします。 すると主成分に展開した時の数値はとなります。 主成分に展開した先の数値を主成分得点といいますが、これをとします。するととなります。ここでの特異値分解を利用すると、
となります。ここに右からをかけると
となり無事元データに戻ります。
とはいっても厳密に戻るわけではなく、(1-寄与率)分のデータは抜け落ちた状態ですが。
少し不思議な感じがしますが、これでやりたいことができました。