主成分分析

主成分分析（しゅせいぶんぶんせき、英: principal component analysis; PCA）は、相関のある多数の変数から相関のない少数で全体のばらつきを最もよく表す主成分と呼ばれる変数を合成する多変量解析の一手法。データの次元を削減するために用いられる。 主成分を与える変換は、第一主成分の分散を最大化し、続く主成分はそれまでに決定した主成分と直交するという拘束条件の下で分散を最大化するようにして選ばれる。主成分の分散を最大化することは、観測値の変化に対する説明能力を可能な限り主成分に持たせる目的で行われる。選ばれた主成分は互いに直交し、与えられた観測値のセットを線型結合として表すことができる。言い換えると、主成分は観測値のセットの直交基底となっている。主成分ベクトルの直交性は、主成分ベクトルが共分散行列（あるいは相関行列）の固有ベクトルになっており、共分散行列が実対称行列であることから導かれる。 主成分分析は純粋に固有ベクトルに基づく多変量解析の中で最も単純なものである。主成分分析は、データの分散をより良く説明するという観点から、そのデータの内部構造を明らかにするものだと考えられる。多くの場合、多変量データは次元が大きく、各変数を軸にとって視覚化することは難しいが、主成分分析によって情報をより少ない次元に集約することでデータを視覚化できる。集約によって得られる情報は、データセットを元のデータ変数の空間から主成分ベクトルのなす空間へ射影したものであり、元のデータから有用な情報を抜き出したものになっている。主成分分析によるデータ構造の可視化は、可視化に必要なだけ先頭から少数の主成分を選択することで実現される。 主成分分析は探索的データ解析における主要な道具であり、予測モデル構築（英語版）にも使われる。主成分分析は観測値の共分散行列や相関行列に対する固有値分解、あるいは（大抵は正規化された）データ行列の特異値分解によって行われる。主成分分析の結果は主成分得点（因子得点、英: score）と主成分負荷量（因子負荷量、英: loadings）によって評価される。主成分得点とは、あるデータ点を主成分ベクトルで表現した場合の基底ベクトルにかかる係数であり、ある主成分ベクトルのデータ点に対する寄与の大きさを示す。主成分負荷量はある主成分得点に対する個々の（正規化された）観測値の重みであり、観測値と主成分の相関係数として与えられる。主成分分析は観測値の間の相対的なスケールに対して敏感である。 主成分分析による評価は主成分得点と主成分負荷量をそれぞれ可視化した主成分プロット、あるいは両者を重ね合わせたバイプロットを通して解釈される。主成分分析を実行するためのソフトウェアや関数によって、観測値の基準化の方法や数値計算のアルゴリズムに細かな差異が存在し、個々の方法は必ずしも互いに等価であるとは限らない（例えば、R言語における prcomp 関数と FactoMineR の PCA 関数の結果は異なる）。 主成分分析は与えられたデータを n 次元の楕円体にフィッティングするものであると考えることができる。このとき、それぞれの主成分は楕円体の軸に対応している。楕円体の軸が短いほどデータの分散は小さく、短い軸に対応する主成分を無視することで、データの分散と同程度に小さな情報の損失だけで、データをより少ない変数で表現することができる。 楕円体の軸を見つけるには、データの平均を座標軸の原点に合わせる必要がある。そのため、データの共分散行列を計算し、共分散行列に対する固有値と固有ベクトルを計算する。また、それぞれの固有ベクトルを直交化し、正規化する必要がある。固有ベクトルの組として互いに直交する単位ベクトルが得られたなら、それらに対応する軸を持つ楕円体によってデータをフィッティングすることができる。それぞれの軸に対する寄与率（proportion of the variance: 分散の比）は、その軸に対応する固有ベクトルに対する固有値を、すべての固有値の和で割ったものとして得ることができる。 注意すべき点として、分散はデータのスケールに依存するため、主成分分析の結果はデータをスケール変換することで変わり得るということが挙げられる。 主成分分析は1901年にカール・ピアソンによって導入された。ピアソンは力学における主軸定理（英語版）からの類推によって主成分分析の方法を得た。主成分分析は、ピアソンとは独立に1930年代にハロルド・ホテリングよっても導入され、ホテリングによって主成分分析 (principal component analysis) と呼ばれるようになった。（Jolliffe (2002, 1.2 A Brief History of Principal Component Analysis) 参照。） 主成分分析は応用分野によって様々な呼び名がある。 主成分分析は因子分析によく似ている。因子分析は、データの背後にある構造に関する分野固有の仮設と、主成分分析の場合とはわずかに異なった行列に対する固有ベクトルを求める手法である、と要約できる。 主成分分析は正準相関分析 (canonical correlation analysis; CCA) とも関わりがある。正準相関分析は二つのデータセット間の相互共分散に基いて座標系を定める手続きだが、主成分分析は単一のデータセットの分散に基いて座標系を選択する手法である。 数学的には主成分分析はデータの基底に対し直交変換（回転）を行い、新たな座標系を得ることであり[要ページ番号]、新しい座標系はその第一成分（第一主成分と呼ばれる）から順に、データの各成分に対する分散が最大になるように選ばれる。 以下では、データ行列 X として、各列の標本平均が 0 になるものを考える。データ行列の各列 p はそれぞれデータが持つ特定の指標に対応し、データ行列の各行 n はそれぞれ異なる事例に対する指標の組を表す。 主成分分析は p 次元ベクトル wk によってデータ行列 X の各行 xi を主成分得点のベクトル t(i) = (t1, ..., tk)(i) に変換することであり、主成分得点tk(i) はデータ点 xi と負荷量ベクトル wk の内積によって与えられる。 t k ( i ) = x i ⋅ w k {\displaystyle {t_{k}}_{(i)}=\mathbf {x} _{i}\cdot \mathbf {w} _{k}} 負荷量ベクトル w は単位ベクトルであり、各主成分得点の分散を第一主成分から順に最大化するように選ばれる。負荷量ベクトルの個数（つまり主成分の数）k は、元の指標の数 p に等しいか、より小さい数が選ばれる (k ≤ p)。負荷量ベクトルの個数、つまり新しいデータ空間の次元を元の空間の次元より少なくとることで、次元削減をすることができる（#次元削減を参照）。主成分分析による次元削減は、データの分散に関する情報を残すように行われる。 第一主成分に対応する負荷量ベクトル w1 は以下の条件を満たす。 w 1 = a r g m a x ‖ w ‖ = 1 ‖ X w ‖ 2 . {\displaystyle \mathbf {w} _{1}={\underset {\Vert \mathbf {w} \Vert =1}{\operatorname {arg\,max} }}\Vert \mathbf {Xw} \Vert ^{2}.} さらに変数 w が単位ベクトルという制約を除けば、上述の条件は次の等価な条件に簡約化することができる。 w 1 = a r g m a x w ≠ 0 ‖ X w ‖ 2 ‖ w ‖ 2 . {\displaystyle \mathbf {w} _{1}={\underset {\mathbf {w} \neq \mathbf {0} }{\operatorname {arg\,max} }}{\frac {\Vert \mathbf {Xw} \Vert ^{2}}{\Vert \mathbf {w} \Vert ^{2}}}.} 右辺の最大化される量は XTX に対するレイリー商と見ることができる。XTX は対称行列だから、レイリー商の最大値は行列の最大固有値となり、それに伴い負荷量ベクトルは対応する固有ベクトルとなる。 第一負荷量ベクトル w1 が得られれば、データ点 xi に対応する主成分得点 t1(i) = xi · w1、あるいは対応するベクトル (xi · w1)w1 が得られる。 k 番目の主成分は k − 1 番目までの主成分をデータ行列 X から取り除くことで得られる： X