【Rによるデータサイエンス】主成分分析

主成分分析について、本には次のように記載がある。

主成分分析(PCA:Principa Component Analysis)は、多くの変数により記述された量的データの変数間の相関を排除し、できるだけ少ない情報の損失で、少数この無相関である合成変数に縮約して、分析を行う手法である。

要するに、多次元のデータをできるだけ情報を損なわずに、次元を落としたデータに縮約する手法だと理解した。

でも、例えば、2次元から1次元に次元を落とすとその分情報が損なわれることは否めないわけだが、どのようにして1次元にデータを落とすのだろうか。

例えば、x1とx2によって決まるデータを、関数fによって、f:(x1,x2)→zというように1次元データzに変換したい場合。
f(x1,x2)=w1*x1+w2*x2とする。
w1とw2に制限を加えないとfによって得られる値がいくらでも大きくなるから、(w1,w2)のノルムを1とする・・・。といったことを考えていたら、ここにあったので、これ参照

「5. 3 主成分の導出と実際計算」に記載があるように、fの分散を最大にするような係数をラグランジュの未定係数法により求める。すると、係数w(ベクトル)についてVw=λwという固有値問題に帰着して、それを解くと分散は固有値λに等しいと。

この辺の導出・背景が、「Rによるデータサイエンス」では省略されているから納得できなかった。一度勉強したことあるはずだけど、もう忘れているしね・・・。

(追記)
主成分分析にて、主成分を求める過程が、固有値問題に帰着されることの分かりやすい説明はここを参照した。

問題を解く流れを言葉で整理すると次のような感じになるのかな。
数式じゃないと極めてわかりづらいが、数式をtexで打つのは面倒なので省略w。

1.主成分の分散が最大となるように主成分を決定することを目的とする*1
2.「データ→低次元の主成分」という変換をしたい。
3.2を実現する変換関数(行列)をWとする。制約として、各列ベクトルのノルムを1とする。
4.係数ベクトルを導入すると求める分散は、(wの転置ベクトル)*V*wで表現される。Vは観測値の分散共分散行列。
5.結局、分散の最大値を求める問題は、3で課した制約の下で4の(wの転置ベクトル)*V*wの最大値を求める問題に帰着して、ラグランジュの未定乗数法を使用する。

*1:これは1つの考え方。相関に着目する場合もある。