主成分分析とは、多変量のデータにおいて、分散が最大となる方向を見つけ出し、その方向に内積を用いた座標変換を行うことでデータの次元を削減する手法のことです。
その座標変換によって新たに得られるデータのことを主成分と呼びます。
\(n\)変量のデータであれば、主成分は、第1主成分から第\(n\)主成分まであります。第1主成分が最もデータの分散が大きく、第\(n\)主成分が最もデータの分散が小さくなるように座標変換します。
つまり、多変量のデータの直交座標を回転させて、第\(i\)座標軸が第\(i\)主成分なるようにします。
例えば、以下は、2変量のデータを主成分分析したものです。\(x'\)軸の座標が第1主成分で、\(y'\)軸の座標が第2主成分です。第1主成分が最もデータの分散が大きいことが直感的に分かります。
このデータであれば、第1主成分だけでデータの特徴を大体を捉えていると言えます。よって、第2主成分のデータは無視しても大きな影響はなさそうです。このように主成分分析を使って、データの次元を削減できます。
同様に、以下は、3変量のデータを主成分分析したものです。赤軸の座標が第1主成分、青軸の座標が第2主成分、緑軸の座標が第3主成分です。
以下の手順で主成分分析を行います。
1. 多変量のデータの分散共分散行列を求めます。
2. 分散共分散行列の固有ベクトルと固有値を求めます。\(i\)番目に固有値が大きい固有ベクトルが第\(i\)主成分を表す座標軸の方向となります。
3. それぞれの固有ベクトルの単位ベクトルを使って、内積を用いた座標変換を行い、それぞれの主成分を抽出します。
ある主成分の寄与率は、その主成分に対応する固有値を分散共分散行列のすべての固有値の総和で割って求められます。
寄与率が低い主成分のデータを捨てることでデータの次元を削減することができます。
例えば、4変量のデータで一つの主成分を捨てた場合、データ量を25%削減できます。
このとき、残りの主成分の寄与率の合計が90%であれば、データ量が25%削減できたのに、失われる情報量は10%だけです。
分散共分散行列は、実対称行列であるため、実対称行列の対角化より、\(n\)次の分散共分散行列は、互いに直交した\(n\)個の固有ベクトルを持ちます。
よって、主成分分析後の新しい座標系も直交座標系です。
例えば、以下の2変量のデータを主成分分析してみます。
データ1 | データ2 |
---|---|
63 | 69 |
62 | 52 |
53 | 56 |
39 | 44 |
50 | 29 |
83 | 69 |
75 | 53 |
80 | 88 |
109 | 94 |
24 | 30 |
グラフにすると以下です。
主成分分析を行うと、新しいグラフは、以下になります。
この場合、第1主成分の寄与率は約93.4%、第2主成分の寄与率は約6.6%です。第2主成分を無視すれば、データ量は半分になりますが、失われる情報量は約6.6%だけです。