読者です 読者をやめる 読者になる 読者になる

数学的にどうなのさ?

大学時代にちょっと長く数学を勉強した人の雑記。数学のこと(主に統計)や趣味、メモなどが多くなります

主成分得点から入力データに戻す

統計 数学

新年あけましておめでとうございます。
今年も適当な感じで書いていきたいと思います。

今回はデータ分析関係。
まずは主成分分析についてまとめてみます。

まあ個人的にやりたいことをまとめた感じです。 

1.主成分分析について

数値データ列を似た者同士でまとめ、次元数を圧縮するようなイメージ。

もう少しわかりやすい?イメージだと、
例外もありますが、基本的には身長が高ければ体重も高くなる傾向にあると思います。
なので体重と身長をひとつの数値データにまとめて表現してしまおうというものです。

でもやせ体系の人もいるし、逆もいるのもまた事実。
その例外部分はまた別の軸に表現できます。

イメージ図はこんな感じ。

f:id:lua0810:20170107222258p:plain

第一主成分が体重・身長をまとめた軸。
第二主成分が例外部分を表現する軸。

主成分分析を行うことで主成分を求めることができます。

今回の例では身長、体重という二つのパラメータしか考えていませんが、これが100とすると、主成分にまとめることができると100パラメータから10パラメータに減らすことができたりします。

しかし身長・体重の例でも言ったノイズ部分はどうしてもあるものです。
すると主成分にまとめたとき、どれだけのノイズがあるかがわかりません。

その判断を行うのに寄与率というものがあります。

っではここから数学的な内容にいってみましょう。

1.1.主成分ベクトル

主成分の方向を定義するベクトルです。これはバラツキが一番大きい方向のものになります。

じゃあこれをどうやって求めるのかですが、各変数の分散共分散行列の固有ベクトルを求めることになります。

さらに固有ベクトルでどれが一番情報量が大きさは固有ベクトルに対応する固有値が大きさで定義します。

固有値が一番大きい固有ベクトルを第一主成分、次に大きいものを第二主成分、というようにします。

1.2.寄与率

{ i }主成分の固有値\lambda _{i}とします。このとき第{ i }主成分の寄与率は {\begin{align} \frac{\lambda_{i}}{\sum_{i}\lambda_i} \end{align}}と定義される。

この寄与率を上位のいくつかまで合計し、それが0.8だった場合はそれが主成分に変換前のデータを80%表現しているということになる。

1.3.やりたいこと

さてここまで主成分分析について書いてきましたが、やりたいことの本題。

主成分軸に展開した後、もとのデータに戻せるのか?ということ。

結論としてはノイズを含まない形でもとには戻せます。
ここには特異値分解が必要です。

 

さて、ここからは特異値分解の話。

2.特異値分解について

特異値分解は行列に対して定義されます。{ A }{ n \times m }行列とします。このとき{A = U\Sigma V^{*}}と分解できます。

ここで{ U }{ n \times n }のユニタリ行列、{ V }{ m \times m }のユニタリ行列、{ \Sigma }は対角成分以外は0の{ n\times m }行列。
また{V^{*}}{V}の随伴行列を表す。

2.1.主成分分析への応用

さて、各列の平均0、分散1の行列を{X}とする。さらに要素はすべて実数とします。
このとき{X^{T}X}{X}の分散共分散行列となります。また特異値分解を利用すると
{X^{T}X=V\Sigma^{T}\Sigma V^{T}}
と書けます。

さらに{V}はユニタリ行列なので{V^{-1}=V^{T}}です。

となると{X^{T}X=V\Sigma^{T}\Sigma V^{T}=V\Sigma^{T}\Sigma V^{-1}}

よく見てみると、{\Sigma^{T}\Sigma }は対角行列であるので、{X^{T}X}固有値分解となっていることがわかります。
ここで主成分分析の話に戻ります。

主成分ベクトルを{W }とし、元データの行列を{X}とします。 すると主成分に展開した時の数値は{XW }となります。 主成分に展開した先の数値を主成分得点といいますが、これを{T}とします。すると{T=XW }となります。ここで{X}特異値分解を利用すると、

{T=XW=U\Sigma W^{T}W =U\Sigma }

となります。ここに右から{W^{T}}をかけると

{TW^{T}=U\Sigma W^{T} =X }

となり無事元データに戻ります。
とはいっても厳密に戻るわけではなく、(1-寄与率)分のデータは抜け落ちた状態ですが。

少し不思議な感じがしますが、これでやりたいことができました。