主成分分析

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索
(1, 3) を中心とし(0.866, 0.5) 方向の標準偏差が 3、それに直交する方向の標準偏差が 1 の多変量正規分布に従うデータセットに対する主成分分析の結果。矢印で示される 2 つベクトル共分散行列固有ベクトルであり、ベクトルの長さはそれぞれの固有ベクトルの固有値の平方根に等しくなるようにスケールされている。また 2 つの固有ベクトルは分布の中心(平均)が原点となるように配置してある。

主成分分析(しゅせいぶんぶんせき、: principal component analysis; PCA)は、観測値の組を直交変換し、線型な相関を持たない特徴量の組によって表示する統計手法である。主成分分析において、観測値の直交変換によって得られる特徴量を主成分 (principal component; PC) と呼ぶ。主成分の個数は元の観測値の個数より少ないか、あるいは等しく、変数として観測値ではなく主成分を用いることによって計算対象とする空間次元を削減したり、相関関係を簡潔に表現することができる。主成分を与える変換は、第一主成分の分散最大化し、続く主成分は以前に決定した主成分と直交する拘束条件の下で分散を最大化するようにして選ばれる。主成分の分散を最大化することは、観測値の変化に対する説明能力を可能な限り主成分に持たせる目的で行われる。選択された主成分は互いに直交し、与えられた観測値のセットを線型結合として表すことができる。言い換えると、主成分は観測値のセットの直交基底となっている。主成分ベクトルの直交性は、主成分ベクトルが(分散)共分散行列(あるいは相関係数行列)の固有ベクトルになっており、共分散行列が実対称行列であることから導かれる。

主成分は、共分散行列に対する固有値分解あるいは、分散共分散行列(相関係数行列)に対応した偏差行列(相関係数行列の場合には標準化された行列)の特異値分解によって得ることができる。主成分分析の結果は、元の観測値(対象)に対応した変換後の値である主成分得点と、各々の主成分得点に対する変数の重みに相当する負荷量として得られる。 主成分分析は観測値の間の相対的なスケールに対して敏感である。

主成分分析は探索的データ解析英語版における主要な道具であり、予測モデル構築英語版にも使われる。主成分分析は観測値の(分散)共分散行列や相関行列に対する固有値分解、あるいは(大抵は正規化された)データ行列の特異値分解によって行われる[1]。主成分分析の結果は主成分得点(因子得点とも呼ばれる)と因子負荷量によって評価される[2]。主成分得点とは、あるデータ点を主成分ベクトルで表現した場合の基底ベクトルにかかる係数であり、ある主成分ベクトルのデータ点に対する寄与の大きさを示す。因子負荷量はある主成分得点に対する個々の(正規化された)観測値の重みであり、観測値と主成分の相関係数として与えられる。

主成分分析による評価は主成分得点と負荷量をそれぞれ可視化した主成分プロット、あるいは2つを重ね合わせたバイプロットを通して解釈される。主成分分析を実行するためのソフトウェアや関数によって、観測値の基準化の方法や数値計算のアルゴリズムに細かな差異が存在し、個々の方法は必ずしも互いに等価であるとは限らない(例えば、R言語における prcomp 関数と FactoMineRPCA 関数の結果は異なる)。

主成分分析は1901年カール・ピアソンによって導入された[3]。ピアソンは力学における主軸定理英語版からの類推によって主成分分析の方法を得た。主成分分析は、ピアソンとは独立に1930年代にハロルド・ホテリングよっても導入され、ホテリングによって主成分分析 (principal component analysis) と呼ばれるようになった[4][5]。主成分分析は応用分野によって様々な呼び名があり、信号処理の分野では離散(コサンビ・)カルフネン・ロエヴェ変換 ([Kosambi-]Karhunen–Loève transform; KLT)あるいはKL展開 (Karhunen-Loève expansion) と呼ばれ、品質管理の分野ではホテリング変換 (Hotelling transform)機械工学では固有直交分解 (proper orthogonal decomposition; POD) と呼ばれ、また数学の線型代数学では、行列 X特異値分解XTX の固有値分解と呼ばれる。計量心理学[注 1]では因子分析[注 2]エッカート・ヤング定理シュミット・ミルスキー定理などと呼ばれ、気象学では経験的直交関数雑音振動の分野では、経験固有関数分解 (empirical eigenfunction decomposition) や経験的成分分析 (empirical component analysis)準調和モードスペクトル分解構造力学ではモーダル解析などと呼ばれる。

主成分分析は純粋に固有ベクトルに基づく多変量解析の中で最も単純なものである。主成分分析は、データの分散をより良く説明するという観点から、そのデータの内部構造を明らかにするものだと考えられている。多くの場合、多変量のデータは変数の次元が大きく、各変数の軸をとってデータを視覚化することは難しいが、主成分分析によって変数をより少ない次元に集約することでデータを視覚化できる。主成分分析によって得られる情報は、データセットを元のデータ変数の空間から主成分ベクトルのなす空間へ射影したものであり、元のデータから有用な情報を抜き出したものになっている。主成分分析によるデータ構造の可視化は、可視化に必要なだけの少数の主成分を選択することで実現される。

主成分分析は因子分析によく似ている。因子分析は、データの背後にある構造に関する分野固有の仮設と、主成分分析の場合とはわずかに異なった行列に対する固有ベクトルを求める手法である、と要約できる。

主成分分析は正準相関分析 (canonical correlation analysis; CCA) とも関わりがある。正準相関分析は二つのデータセット間の相互共分散に基いて座標系を定める手続きだが、主成分分析は単一のデータセットの分散に基いて座標系を選択する手法である[6][7]

以下、特に断りのない限り、PCAを主成分分析の略、PCを主成分の略として用いる。

直感的な説明[編集]

PCAは与えられたデータを n 次元の楕円体にフィッティングするものであると考えることができる。このとき、それぞれの主成分は楕円体の軸に対応している。楕円体の軸が短いほどデータの分散は小さく、短い軸に対応する主成分を無視することで、データの分散と同程度に小さな情報の損失だけで、データをより少ない変数で表現することができる。

楕円体の軸を見つけるには、データの平均座標軸原点に合わせる必要がある。そのため、データの共分散行列を計算し、共分散行列に対する固有値固有ベクトルを計算する。また、それぞれの固有ベクトルを直交化し、正規化する必要がある。固有ベクトルの組として互いに直交する単位ベクトルが得られたなら、それらに対応する軸を持つ楕円体によってデータをフィッティングすることができる。それぞれの軸に対する分散のは、その軸に対応する固有ベクトルに対する固有値を、すべての固有値の和で割ったものとして得ることができる。

注意すべき点として、分散はデータのスケールに依存するため、PCAの結果はデータをスケール変換することで変わり得るということが挙げられる。

詳細[編集]

数学的にはPCAはデータの基底に対し直交変換を行い、新たな座標系を得ることであり[8]、新しい座標系はその第一成分(第一主成分と呼ばれる)から順に、データの各成分に対する分散が最大になるように選ばれる。

以下では、データ行列 X として、各列の標本平均が 0 になるものを考える[注 3]。データ行列の各列 p はそれぞれデータが持つ特定の指標に対応し、データ行列の各行 n はそれぞれ異なる事例に対する指標の組を表す[注 4]

PCAは p 次元ベクトル w(k) = (w1, ..., wp)(k) によってデータ行列 X の各行 x(i) を主成分得点のベクトル t(i) = (t1, ..., tk)(i) に変換することであり、主成分得点tk(i) はデータ点 x(i) と負荷量ベクトル w(k)内積によって与えられる。

{t_{k}}_{(i)} = \mathbf{x}_{(i)} \cdot \mathbf{w}_{(k)}.

負荷量ベクトル w単位ベクトルであり、各主成分得点の分散を第一主成分から順に最大化するように選ばれる。負荷量ベクトルの個数(つまりPCの数)k は、元の指標の数 p に等しいか、より小さい数が選ばれる (kp)。負荷量ベクトルの個数、つまり新しいデータ空間の次元を元の空間の次元より少なくとることで、次元削減英語版をすることができる(#次元削減を参照)。PCAによる次元削減は、データの分散に関する情報を残すように行われる。

第一主成分[編集]

第一主成分に対応する負荷量 w(1) は以下の条件を満たす[注 5]

\mathbf{w}_{(1)}
  = \underset{\Vert \mathbf{w} \Vert = 1}{\operatorname{\arg\,max}} \left\{ 
    \sum_i \left(t_1\right)^2_{(i)} 
  \right\}
  = \underset{\Vert \mathbf{w} \Vert = 1}{\operatorname{\arg\,max}} \left\{ 
    \sum_i \left(\mathbf{x}_{(i)} \cdot \mathbf{w} \right)^2 
  \right\}.

上記の関係を行列記法で表せば、以下のようになる。

\mathbf{w}_{(1)}
  = \underset{\Vert \mathbf{w} \Vert = 1}{\operatorname{\arg\,max}} \{ 
    \Vert \mathbf{Xw} \Vert^2 
  \}
  = \underset{\Vert \mathbf{w} \Vert = 1}{\operatorname{\arg\,max}} \left\{ 
    \mathbf{w}^\mathrm{T} \mathbf{X}^\mathrm{T} \mathbf{X w} 
  \right\}.

更に変数 w単位ベクトルという制約を除けば、上述の条件は次の等価な条件に簡約化することができる[注 6]


\mathbf{w}_{(1)} = {\operatorname{\arg\,max}} \left\{ 
  \frac{\mathbf{w}^\mathrm{T}\mathbf{X}^\mathrm{T} \mathbf{X w}}{\mathbf{w}^\mathrm{T} \mathbf{w}} 
\right\}.

右辺の最大化される量はレイリー商英語版と見ることができる。XTX対称行列だから、対称行列に関する基本的な結果より、レイリー商の最大値は対称行列の最大固有値となること、それに伴い負荷量は対応する固有ベクトルとなることが示される。

第一負荷量 w(1) が得られれば、データ点 x(i) に対応する主成分得点 t1(i) = x(i) · w(1)、あるいは対応するベクトル (x(i) · w(1))w(1) が得られる。

他の主成分[編集]

k 番目の主成分は k − 1 番目までの主成分をデータ行列 X から取り除くことで得られる:

\mathbf{\hat{X}}_{k} = \mathbf{X} - \sum_{s = 1}^{k - 1} \mathbf{X} \mathbf{w}_{(s)} \mathbf{w}_{(s)}^{\rm T} .

負荷量ベクトルは新たなデータ行列に対して主成分得点の分散が最大となるようなベクトルとして与えられる。


\mathbf{w}_{(k)} 
= \underset{\Vert \mathbf{w} \Vert = 1}{\operatorname{arg\,max}} \left\{ 
  \Vert \mathbf{\hat{X}}_{k} \mathbf{w} \Vert^2 
\right\} 
= {\operatorname{\arg\,max}} \left\{ 
  \tfrac{\mathbf{w}^\mathrm{T} \mathbf{\hat{X}}_{k}^\mathrm{T} \mathbf{\hat{X}}_{k} \mathbf{w}}{\mathbf{w}^\mathrm{T} \mathbf{w}} 
\right\}.

このことから、新たな負荷量ベクトルは対称行列 XTX の固有ベクトルであり、右辺の括弧内の量の最大値は対応する固有値を与えることが分かる。従って、すべての負荷量ベクトルは XTX の固有ベクトルである。

データ点 x(i) の第 k 主成分は主成分得点 tk(i) = x(i) · w(k) として負荷量ベクトルを基底とする表示が与えられ、また対応するベクトルは主成分得点に対応する基底ベクトルをかけた (x(i) · w(k)) w(k) となる。ここで w(k) は行列 XTX の第 k 固有ベクトルである。

X の完全な主成分分解は以下のように表わすことができる。

\mathbf{T} = \mathbf{X} \mathbf{W}

ここで Wp × p正方行列であり、各列ベクトルは行列の XTX固有ベクトルであり単位ベクトルである。

共分散[編集]

XTX はデータセット Xから与えられる経験的な標本共分散行列比例する。

データセット X に対する、2つの異なる主成分の間の標本共分散 Q は以下のようにして得られる:

\begin{align}
Q(\mathrm{PC}_{(j)}, \mathrm{PC}_{(k)}) 
& \propto (\mathbf{X}\mathbf{w}_{(j)})^\mathrm{T} \cdot (\mathbf{X}\mathbf{w}_{(k)}) \\
& = \mathbf{w}_{(j)}^\mathrm{T} \mathbf{X}^\mathrm{T} \mathbf{X} \mathbf{w}_{(k)}\\
& ~\overset{(\ast)}{=} \mathbf{w}_{(j)}^\mathrm{T} \lambda_{(k)} \mathbf{w}_{(k)} 
    \qquad (\mathbf{X}^\mathrm{T}\mathbf{X}\mathbf{w}_{(k)} = \lambda_{(k)}\mathbf{w}_{(k)}) \\
& = \lambda_{(k)} \mathbf{w}_{(j)}^\mathrm{T} \mathbf{w}_{(k)}.
\end{align}

(∗) の変形において、w(k)行列 XTX固有値 λ(k) に対応する固有ベクトルであることを利用した。XTX は対称行列であり、対称行列の異なる固有値に対応する固有ベクトル達は互いに直交するから、結局データセット X に対する異なる主成分間の標本共分散 Q(PC(j), PC(k)) はゼロとなる。

上述の結果を言い換えると、主成分変換は経験的な標本共分散行列を対角化する座標変換であると特徴づけられる。

元々の基底に対する経験共分散行列 Q は行列記法によって以下のように表わすことができる。


\mathbf{Q} \propto \mathbf{X}^\mathrm{T} \mathbf{X} 
= \mathbf{W} \mathbf{\Lambda} \mathbf{W}^\mathrm{T}.

ここで ΛXTX の固有値 λ(k) からなる対角行列である。固有値 λ(k) は対応する添え字の主成分得点の二乗和に等しい。


\lambda_{(k)} = \|\mathbf{X}\mathbf{w}_{(k)}\|^2 
= \sum_{i=1}^n (\mathbf{x}_{(i)} \cdot \mathbf{w}_{(k)})^2 
= \sum_{i=1}^n t_{k(i)}^2.

行列 W が得られれば、行列 W直交性を利用して、主成分ベクトルを基底とする経験共分散行列として次の表示が得られる。


\mathbf{W}^\mathrm{T} \mathbf{Q} \mathbf{W} 
\propto \mathbf{W}^\mathrm{T} \mathbf{W} \, \mathbf{\Lambda} \, \mathbf{W}^\mathrm{T} \mathbf{W}
=  \mathbf{\Lambda}.

次元削減[編集]

線型変換 T = XW はデータ点 x(i) を元の p 次元空間から、与えられたデータセットに対して各成分が互いに無相関になるような p 次元の空間へ写すが、一部の主成分だけを残すような変換も考えることができる。第一主成分から順に、各主成分に関するデータの分散単調減少するように負荷量ベクトルが得られるため、最初の L 個の負荷量ベクトルだけを残し、残りの説明能力の低い負荷量ベクトルを無視すると、次のような変換が得られる。

\mathbf{T}_L = \mathbf{X} \mathbf{W}_L

WLp × L の行列であり、TLn × L の行列である。上記の変換はデータ点 x ∈ Rp に対する変換として[注 7]t = WTx (t ∈ RL) と書くこともできる。つまり、PCAは p 個の特徴量を持つデータ点 xL 個の互いに無相関な特徴量を持つ主成分得点 t へ写す線型変換 W : Rp → RL を学習する手法であるといえる[9]。 データ行列を変換することで得られる主成分得点行列は、元のデータセットの分散を保存し、二乗再構成誤差 (reconstruction error) の総和、


\|\mathbf{T}\mathbf{W}^\mathrm{T} - \mathbf{T}_L\mathbf{W}_L^\mathrm{T}\|_2^2 
\qquad (\|\mathbf{X} - \mathbf{X}_L\|_2^2)

を最小化するように与えられる。

354の個体について、37のY染色体STRマーカーの反復回数から計算された Y-STR英語版 ハプロタイプに対するPCAの結果。PCAにより、個体のY染色体の遺伝的な系統についてクラスタリングするようなマーカーの線型結合を得ることに成功している。

元のデータセットの分散を出来る限り残すように次元削減することは、高次元のデータセットを可視化する上で重要である。例えば、主成分の数を L = 2 に選び、2つの主成分がなす平面にデータセットを射影すると、射影されたデータ点は主成分のなす平面に対して最もよく分散し、データに含まれるクラスタはそれぞれ分離される。したがって、2つの主成分がなす平面はデータを平面上にプロットする上で都合がよい。射影平面として別の平面を選んだ場合、クラスタ間のばらつきは小さくなり互いに重なり合うようになるため、実質上はそれぞれのクラスタを分類することが困難になってしまう。

回帰分析でも次元削減は有効である。回帰分析において、説明変数の数を増やすほど特定のデータに対して過剰適合したモデル、すなわち他のデータセットに対して誤った結果を与えるモデルを得がちである。モデル生成に使ったデータに対してモデルが過剰適合しないためには、説明変数の個数を適当に制限する必要があり、一つのアプローチとして、互いに強い相関を持つ説明変数を削減し、より少数の主成分によって回帰分析を行う方法がある。この方法を主成分回帰英語版と呼ぶ。

次元削減はノイズの大きなデータを分析する上でも適切であることが多い。データ行列の各列、つまりそれぞれの特徴量に対して独立同分布なガウシアンノイズが含まれる場合、変換されたデータ行列 T の列にも同様に独立同分布なガウシアンノイズが含まれる(座標軸の回転操作 W に対して独立同分布なガウス分布は不変であるため)。しかしながら、最初の少数の主成分に関しては、全体の分散に比べてノイズに由来する分散が小さくなるため、シグナル・ノイズ比を高めることができる。PCAは主要な情報を少数の主成分に集中させるため、次元削減によってノイズが支配的な成分だけを捨て、データ構造を反映した有用な成分を取り出すことができる。

ソフトウェア[編集]

注釈[編集]

  1. ^ : psychometrics. 心理測定、心理統計学などとも呼ばれる。
  2. ^ 数学的な共通点は多いものの、厳密には主成分分析と因子分析は異なる手法である。両者の違いに関する議論は例えば Jolliffe 2002, Chapter 7 を参照。
  3. ^ つまり事前処理として、生のデータの各成分から成分ごとの標本平均を引く。
  4. ^ たとえば列のラベルには ("年齢", "性別", "身長", "体重") など一般的な属性が入り、行のラベルには ("藤原", "木曽", "北条", "徳川") など事例を特定する識別子が与えられる。行と列のどちらにラベルを与えるかは本質的ではなく、列と指標を対応させることは単に慣習による。
  5. ^ arg maxx f(x)f(x)最大値をとるときの引数 x またはその集合を与える(arg max を参照)。作用素 arg max によって与えられる集合のは最大値点と呼ばれることが多い。
  6. ^ ゼロでない任意のノルムのベクトルが方程式を満たすため、実際には以下の方程式の解から単位ベクトルとなるものを選ぶ。
  7. ^ Rpp 次元の実数空間を表わす。

出典[編集]

参考文献[編集]

関連項目[編集]

外部リンク[編集]