6 多次元データの主成分分析

次はデータ解析で用いられる主成分分析を紹介する。

例えば、個々の学生の複数科目の成績や学習時間のデータのように、 1 つのデータに複数の情報がついている多次元データについて、 その傾向を知るためや、データの次元の低減化などのために 「主成分分析」という手法が用いられることがある。 2 次元データの場合の回帰直線に多少似たところもある。

今、$N$ 個の $m$ 次元データ

$\displaystyle \mbox{\boldmath$x$}_j = \left[\begin{array}{r}x_{1,j}\\ \vdots\\ x_{m,j}\end{array}\right]
\hspace{1zw}(1\leq j\leq N)
$
を考える。各 $i$ 行データ $x_{i,j}$ ($1\leq j\leq N$) の 標本平均を $m_i$, 標本分散を $s_i^2$ とすると、
$\displaystyle m_i = \frac{1}{N}\sum_{k=1}^N x_{i,k},
\hspace{1zw}s_i^2 = \frac{1}{N-1}\sum_{k=1}^N(x_{i,k}-m_i)^2
$
となり、これにより各 $x_{i,j}$ を正規化した値を
$\displaystyle \bar{x}_{i,j} = \frac{x_{i,j}-m_i}{s_i}
$
とする。これにより、$\bar{x}_{i,j}$$j$ に関する標本平均が 0、 標本分散が 1 となり、$m$ 次元データ
$\displaystyle \mbox{\boldmath$\bar{x}$}_j = \left[\begin{array}{r}\bar{x}_{1,j}\\ \vdots\\ \bar{x}_{m,j}\end{array}\right]
$
の各行は「同じような大きさ」のデータとなる。 それに対し、 $\mbox{\boldmath$\bar{x}$}_j$ を位置ベクトルとする $m$ 次元空間の 点 $\mathrm {P}_j$ の散布図に対し、 データが最も長く伸びている方向 (回帰直線のようなもの) を 探すのが主成分分析である。

具体的には、 $\mbox{\boldmath$R$}^m$ の任意の単位ベクトル $\mbox{\boldmath$h$}$ に対して、 このデータの $\mbox{\boldmath$h$}$ 方向への正射影 $(\mbox{\boldmath$h$},\mbox{\boldmath$\bar{x}$}_j)$ (内積) の標本分散 $V=V(\mbox{\boldmath$h$})$ が最大となる方向 $\mbox{\boldmath$h$}$ を求めることが 目標となる。

$(\mbox{\boldmath$h$},\mbox{\boldmath$\bar{x}$}_j)$ ($1\leq j\leq N$) の平均は、

$\displaystyle \frac{1}{N}\sum_{k=1}^N(\mbox{\boldmath$h$},\mbox{\boldmath$\bar{...
...x{\boldmath$\bar{x}$}_k\right)
= (\mbox{\boldmath$h$},\mbox{\boldmath$0$}) = 0
$
なので、標本分散 $V(\mbox{\boldmath$h$})$ は、
  $\displaystyle
V(\mbox{\boldmath$h$}) = \frac{1}{N-1}\sum_{k=1}^N(\mbox{\boldmath$h$},\mbox{\boldmath$\bar{x}$}_k)^2$ (12)
となる。

なお、原点を通る $\mbox{\boldmath$h$}$ 方向の直線 $\ell_h$$\mathrm {P}_j$ から 引いた垂線の足を $\mathrm {Q}_j$ とすると (図 5)、

図 5: $\mathrm {P}_j$, $\mathrm {Q}_j$
\begin{figure}\begin{center}
%\par
\setlength{\unitlength}{0.18mm}
\begin{pi...
...ldmath$h$},\mbox{\boldmath$\bar{x}$}_j)$}
\end{picture}
\end{center}\end{figure}
$\displaystyle (\mbox{\boldmath$h$},\mbox{\boldmath$\bar{x}$}_j)= \vert\mathrm{O...
...ert,
\hspace{1zw}n_j(\mbox{\boldmath$h$}) = \vert\mathrm{P}_j\mathrm{Q}_j\vert
$
なので、 $\triangle\mathrm{OP}_j\mathrm{Q}_j$$\mathrm {Q}_j$ が直角の 直角三角形なので、
$\displaystyle (\mbox{\boldmath$h$},\mbox{\boldmath$\bar{x}$}_j)^2
=\vert\mathrm...
...j\vert^2
=\vert\mbox{\boldmath$\bar{x}$}_j\vert^2 - n_j(\mbox{\boldmath$h$})^2
$
となり、 $V(\mbox{\boldmath$h$})$
$\displaystyle V(\mbox{\boldmath$h$})
= \frac{1}{N-1}\sum_{k=1}^N\vert\mbox{\boldmath$\bar{x}$}_k\vert^2
- \frac{1}{N-1}\sum_{k=1}^N n_j(\mbox{\boldmath$h$})^2
$
なので、 $V(\mbox{\boldmath$h$})$ を最大にするような方向 $\mbox{\boldmath$h$}$ は、 $\mathrm {P}_j$$\ell_h$ との距離の平方和
$\displaystyle \sum_{k=1}^N n_j(\mbox{\boldmath$h$})^2
$
を最小にする方向、という風に見ることもでき、 2 次元データに対する回帰直線に似たものになる。 ただし回帰直線は、データ点から回帰直線までの距離ではなく、 データ点と $y$ 方向の回帰直線までの距離を考えるので、 実際には $\ell_h$ は回帰直線とは少し違うものになる (cf.[1])。

さて、(12) の内積の平方は、行列と見て、

$\displaystyle (\mbox{\boldmath$h$},\mbox{\boldmath$\bar{x}$}_j)^2
= (\,{}^t\!{\...
...\boldmath$\bar{x}$}_j\,{}^t\!{\mbox{\boldmath$\bar{x}$}}_j)\mbox{\boldmath$h$}
$
と書けるので、 $V(\mbox{\boldmath$h$})$ は、
  $\displaystyle
V(\mbox{\boldmath$h$}) = \,{}^t\!{\mbox{\boldmath$h$}}B\mbox{\bo...
...^N\mbox{\boldmath$\bar{x}$}_j\,{}^t\!{\mbox{\boldmath$\bar{x}$}}_j
= [b_{i,j}]$ (13)
となり、さらにこの $b_{i,j}$ は、
$\displaystyle b_{i,j}
= \frac{1}{N-1}\sum_{k=1}^N\bar{x}_{i,k}\bar{x}_{j,k}
= ...
...\frac{1}{s_is_j}\sum_{k=1}^N(x_{i,k}-m_i)(x_{j,k}-m_j)
=\frac{s_{i,j}}{s_is_j}
$
となり、$s_{i,j}$ $\mbox{\boldmath$x$}_k$$i$ 行と $j$ 行のデータの 標本共分散
$\displaystyle s_{i,j}= \frac{1}{N-1}\sum_{k=1}^N(x_{i,k}-m_i)(x_{j,k}-m_j)
$
であるから、$b_{i,j}$$i$ 行と $j$ 行の相関係数、 すなわち $B$ $\mbox{\boldmath$x$}_k$ の各行に関する相関行列になる。

$B$ は対称行列であり、よって $B$$m$ 個の実数の固有値

$\displaystyle \lambda_1\geq \lambda_2\geq\cdots\geq \lambda_m
$
および正規直交基底をなす固有ベクトル $\mbox{\boldmath$p$}_1,\ldots,\mbox{\boldmath$p$}_m$ を 持ち、 $P=[\mbox{\boldmath$p$}_1\ \ldots\ \mbox{\boldmath$p$}_m]$ は直交行列で、
$\displaystyle \,{}^t\!{P}BP = \left[\begin{array}{ccc}\lambda_1 & \multicolumn{...
...
\multicolumn{2}{l}{\raisebox{0ex}{\LARGE$0$}} & \lambda_m\end{array}\right]
$
となる。よって、 $\mbox{\boldmath$\bar{h}$}=\,{}^t\!{P}\mbox{\boldmath$h$}$ ( $\mbox{\boldmath$h$}=P\mbox{\boldmath$\bar{h}$}$) とすると、
$\displaystyle V(\mbox{\boldmath$h$})$ $\textstyle =$ $\displaystyle \,{}^t\!{\mbox{\boldmath$h$}}B\mbox{\boldmath$h$}
\ =\ \,{}^t\!{\...
...aisebox{0ex}{\LARGE$0$}} & \lambda_m\end{array}\right]\mbox{\boldmath$\bar{h}$}$ 
  $\textstyle =$ $\displaystyle \lambda_1\bar{h}_1^2+\cdots+\lambda_m\bar{h}_m^2$(14)
となる。 $V(\mbox{\boldmath$h$})$ は任意の $\mbox{\boldmath$h$}$ に対して 0 以上 だから $\lambda_m\geq 0$ で、$P$ は直交行列だから
$\displaystyle \vert\mbox{\boldmath$\bar{h}$}\vert=\vert\,{}^t\!{P}\mbox{\boldmath$h$}\vert=\vert\mbox{\boldmath$h$}\vert=1
$
なので、(14) より $V(\mbox{\boldmath$h$})$ の 最大値は $\lambda_1$ で、 $\mbox{\boldmath$\bar{h}$}=\mbox{\boldmath$e$}_1$、 すなわち $\mbox{\boldmath$h$}=P\mbox{\boldmath$e$}_1=\mbox{\boldmath$p$}_1$ のときにその最大値を取る。 つまり最大固有値に対する固有ベクトル $\mbox{\boldmath$p$}_1$ が主成分方向となる。 $\mbox{\boldmath$p$}_2$ は、それに垂直な第 2 主成分方向となり、以下同様となる。

つまり、軸を $\mbox{\boldmath$p$}_1,\ldots,\mbox{\boldmath$p$}_m$ で考えれば、 最初のいくつかの軸にデータの傾向が顕著に現れ、 最後の軸の方ではデータ毎の違いが小さくなっている。 そのため、最初のいくつかの軸成分のみを取ることで データの傾向をあまり変えずにデータの次元を削減することができるようになる。

竹野茂治@新潟工科大学
2024-02-29