主成分分析[2]

実験や調査においては、多数の項目を記録することが多い。項目数が少ない時にはグラフや統計量を用いてその特性を簡単に知ることが出来るが、項目数が多い時にはデータの関係が複雑になり、結果の分析が難しくなる。これを解決する手法として、Hotelling氏が1933年に提唱した主成分分析(Principal Component Analysis;PCA)がある。主成分分析は各データを独立に扱うのではなく、主成分と呼ばれる総合的な指標によってデータの持つ関係や特徴を表す。 これをもう少し詳しく説明すると、データが本来もっている情報の損失を最小限に抑えながら、 このデータを合成変数(主成分)に縮約して低次元化を行うことで、 多量のデータに埋もれた情報を把握するというのがこの手法である。 このことを、以下に具体的な式を用いて説明する。

$ P$ 個のデータ $ x_p(p=1,2,\ldots,P)$ がある時、 $ N(N \leq P)$ 個の主成分 $ z_n(n=1,2,\ldots,N)$ とこれらの関係は、次式のような互いに独立な線形結合として表される。

$\displaystyle z_n = \sum_{p=1}^{P}a_{pn}x_p$ (5)

ここで$ z_n$ は第$ n$ 主成分と呼ばれ、その結合係数$ a_{pn}$ は以下の式を満たす必要がある。

$\displaystyle \sum_{p=1}^Pa_{pn}^2 = 1$ (6)

主成分が多くの情報を持つようにするためには、この結合係数を上手く決めてやる必要があり、それにはデータの分散に着目する。この例を示す為にFigure 3.1のような2次元のデータを考える。この図において、データのばらつきが最も大きくなる方向に着目すると、$ z_{1}$ という軸が出来ることが分かる。これが第1主成分となり、このような軸が出来るように式(3.5)の結合係数を決定するのである。しかし、これだけではデータの持つ情報を大まかに表したとは言えない。そこで次にデータのばらつきが大きい軸、すなわち第2主成分$ z_{2}$ をとり、これによって情報量の損失を最小にしながら、 $ x_{1}, x_{2}$ から得られる特性を上手く把握することが出来る。

ここで、もし全てのデータが一直線上に並んだならば第2主成分は0となり、$ z_{2}$ はデータの分析に全く役に立たないことになる。よって、データのばらつきである分散が大きいほど、情報を多く含んでいると言えるのである。以上の例は2次元という簡単な例であった為に、主成分分析はあまり役に立たないが、高次元であるとその効果は顕著に現れる。

図 3.1: PCA in two-dimensional data
\includegraphics{fig01.eps}
結合係数の決定の仕方としては、特異値分解に基づくものとスペクトル分解に基づくものがある。 第$ i$ 主成分の結合係数$ a_i$ は、前者においてはデータ行列$ X$ $ i$ 番目に大きな特異値$ \sigma _i$ に対応する右特異ベクトルとして与えられ、後者においては行列$ X^{T}X$ $ i$ 番目に大きな固有値 $ \lambda _i$ に対応する固有ベクトルとして与えられる。前者については3.1.5項でもう少し詳しく説明することにして、ここでは後者について取り扱う。

ここでは分かりやすく第1主成分を取り上げて、結合係数が固有ベクトルで表されることを示す。 まず、第1主成分の分散 $ \sigma ^2_{z_1}$ は式(3.7)のように与えられ、ここで$ t_1$ は第1主成分得点と言い、これは$ n$ 番目のデータに対応する第1主成分の値をベクトルにまとめたものである。また$ V$ は分散共分散行列を表す。ここで、$ N-1$ で割っていることから標準分散ではなく不偏分散を用いていることが分かり、後述するRの関数もこちらを採っているようである。不偏分散は、母集団が大きく標本が少ない時に向く。

$\displaystyle \sigma ^2_{z_1}$ $\displaystyle =$ $\displaystyle \frac{1}{N-1}t^T_{1}t_1$  
  $\displaystyle =$ $\displaystyle \frac{1}{N-1}(Xa_1)^T(Xa_1)$  
  $\displaystyle =$ $\displaystyle a^T_{1}(\frac{1}{N-1}X^{T}X)a_1$  
  $\displaystyle =$ $\displaystyle a^T_{1}Va_1$ (7)

第1主成分を最大にするには、この式(3.7):$ f$ を式(3.6):$ g$ の下で最大となるようにすれば良く、それにはラグランジュの乗数法から式を導き、それを結合係数$ a_1$ で偏微分して0 とおけば良い。
$\displaystyle J_1$ $\displaystyle =$ $\displaystyle f+\lambda g$  
  $\displaystyle =$ $\displaystyle a^T_{1}Va_{1}-\lambda (a^T_{1}a_{1}-1)$  
$\displaystyle \frac{\partial J_1}{\partial a_1}$ $\displaystyle =$ $\displaystyle 2Va_{1}-2\lambda a_{1}=0$  
$\displaystyle (V-\lambda I)a_1$ $\displaystyle =$ 0 (8)
$\displaystyle \vert V-\lambda I\vert$ $\displaystyle =$ 0 (9)

ここで$ I$ は単位行列を示し、式(3.9)のように固有方程式が得られた。このことより、結合係数$ a_1$ は分散共分散行列$ V$ の固有値$ \lambda$ および固有ベクトルとして与えられることが分かる。この固有値が大きい主成分ほど情報を多くもっていることになり、大きい固有値から順に、その対応する主成分が第1主成分, 第2主成分, $ \ldots$ , 第$ N$ 主成分に当たる。 また式(3.7)に式(3.8), 式(3.6)を代入することにより、以下の式が導かれる。
$\displaystyle \sigma ^2_{z_1}$ $\displaystyle =$ $\displaystyle a^{T}_{1}Va_1$  
  $\displaystyle =$ $\displaystyle a^{T}_{1}\lambda a_1$  
  $\displaystyle =$ $\displaystyle \lambda$ (10)

これは先程述べたように分散が情報の大きさを決定していることを示しており、最大値をとるべき $ \sigma ^2_{z_1}$ は最大固有値に等しい必要がある。これまでのことを以下第$ N$ 主成分まで同様に導くことが出来る。以上のことより、結合係数$ a$ は最大固有値に対する固有ベクトルとして求められ、これがスペクトル分解に基づく結合係数の決め方になる。 なお、ここまで分散共分散行列を使って主成分分析を行う方法を記したが、相関係数行列を使って行う方法もある。どちらも一長一短であり、どちらが良いとは一概には言えない。

ここまで単に式を追ってきただけであったが、実際に測定や調査を行う時には、各項目は異なる単位系となることが多い。よって、単位の取り方により異なる主成分が得られることになり、 同じ単位系であっても分散が大きく異なる項目に対して主成分分析を行えば、 大きい方の影響を強く受けることになり、正しい結果が得られなくなる。そこで全ての項目を何らかの手法を用いて標準化する必要が出てくるが、広く利用されている方法として、各項目において平均1・分散1となるように正規化するものがある。このような処置を施すことで、得られる結果の信頼性を高めることが出来る。

Deguchi Lab. 2017年3月6日