主成分分析

主成分分析の概要

手順(主成分分析)

データ行列 \(X\) に対して以下の順に処理を行う。

  1. \(X\) を中心化する
    \[ \tilde{X}=X-\boldsymbol{1}\boldsymbol{\mu}^\top \]
  2. \(X\) の標本分散共分散行列 \(\hat{\Sigma}_X\) を求める
    \[ \hat{\Sigma}_X=\frac{1}{N}\tilde{X}^\top \tilde{X} \]
  3. \(\hat{\Sigma}_X\) の固有値 \(\lambda\) とその固有ベクトル \(\boldsymbol{w}_\lambda\) を求める

このとき、固有値が大きい順に、その固有ベクトルが主成分に対応する。

主成分分析の理論

データを

\[ \boldsymbol{x}_i= \begin{bmatrix} x_{i1} \\ x_{i2} \\ \vdots \\ x_{id} \end{bmatrix} \in\mathbb{R}^d \quad (i=1,2,\cdots,N) \]

とします。

平均ベクトルを

\[ \boldsymbol{\mu}=\frac{1}{N}\sum_{i=1}^N\boldsymbol{x}_i \in \mathbb{R}^d \]

とします。

データを中心化したデータ行列は

\[ \tilde{X}=X-\boldsymbol{1}\boldsymbol{\mu}^\top \]

となります。

データ行列の各データをある単位ベクトル \(\boldsymbol{w}\) の方向に射影するとき

\[ \tilde{X}\boldsymbol{w} \]

\(\tilde{X}\boldsymbol{w}\) の分散 \(S_{\tilde{X}\boldsymbol{w}}^2\) を考えます。

\[ \begin{align} S_{\tilde{X}\boldsymbol{w}}^2 &=\frac{1}{N}\|\tilde{X}\boldsymbol{w}-0\|^2 \\ &=\frac{1}{N}\|\tilde{X}\boldsymbol{w}\|^2 \\ &=\frac{1}{N}(\tilde{X}\boldsymbol{w})^\top(\tilde{X}\boldsymbol{w}) \\ &=\frac{1}{N}\boldsymbol{w}^\top \tilde{X}^\top \tilde{X}\boldsymbol{w} \\ &=\boldsymbol{w}^\top \left(\frac{1}{N}\tilde{X}^\top \tilde{X}\right)\boldsymbol{w} \end{align} \]

ここで、\(\dfrac{1}{N}\tilde{X}^\top \tilde{X}\) は標本分散共分散行列 \(\hat{\Sigma}_X\) なので

\[ S_{\tilde{X}\boldsymbol{w}}^2=\boldsymbol{w}^\top \hat{\Sigma}_X \boldsymbol{w} \]

と書けます。 これを \(\|\boldsymbol{w}\|=1\)(単位ベクトル)という条件の下で、最大化することを考えます。

最適化問題
\[ \max_{\boldsymbol{w}}\boldsymbol{w}^\top \hat{\Sigma}_X\boldsymbol{w} \quad \text{subject to} \quad \|\boldsymbol{w}\|=1 \]

条件付き最適化問題なので、ラグランジュの未定乗数法を使います。 ラグランジュ関数 \(\mathcal{L}\) は次のようになります。

\[ \mathcal{L}(\boldsymbol{w},\lambda)=\boldsymbol{w}^\top \hat{\Sigma}_X\boldsymbol{w}-\lambda(\boldsymbol{w}^\top\boldsymbol{w}-1) \]

\(\mathcal{L}(\boldsymbol{w},\lambda)\) を \(\boldsymbol{w}\) で偏微分すると

\[ \begin{align} \frac{\partial\mathcal{L}}{\partial\boldsymbol{w}} &=\frac{\partial}{\partial\boldsymbol{w}}\{\boldsymbol{w}^\top \hat{\Sigma}_X\boldsymbol{w}-\lambda(\boldsymbol{w}^\top\boldsymbol{w}-1)\}\\ &=\frac{\partial}{\partial\boldsymbol{w}}(\boldsymbol{w}^\top \hat{\Sigma}_X\boldsymbol{w})-\lambda\frac{\partial}{\partial\boldsymbol{w}}(\boldsymbol{w}^\top\boldsymbol{w})\\ &=(\hat{\Sigma}_X+\hat{\Sigma}_X^\top)\boldsymbol{w}-\lambda(2\boldsymbol{w})\\ &=2\hat{\Sigma}_X\boldsymbol{w}-2\lambda\boldsymbol{w} \quad (\because \hat{\Sigma}_X^\top=\hat{\Sigma}_X) \end{align} \]

\(\dfrac{\partial\mathcal{L}}{\partial\boldsymbol{w}}=\boldsymbol{0}\) とすると

\[ \begin{align} &\frac{\partial\mathcal{L}}{\partial\boldsymbol{w}}=\boldsymbol{0}\\ &\Longleftrightarrow 2\hat{\Sigma}_X\boldsymbol{w}-2\lambda\boldsymbol{w}=\boldsymbol{0}\\ &\Longleftrightarrow \hat{\Sigma}_X\boldsymbol{w}=\lambda\boldsymbol{w}\\ \end{align} \]

よって、求める \(\boldsymbol{w}\) は \(\hat{\Sigma}_X\) の固有ベクトルであることがわかりました。 続いて、この固有値問題を解きます。

\[ \det(\hat{\Sigma}_X-\lambda E)=0 \]

この固有方程式を解くことで、固有値 \(\lambda\) を求めます。

\[ \lambda=\lambda_1,\lambda_2,\cdots \]

ここで、ある固有値 \(\lambda_i\) に対して \(\hat{\Sigma}_X\boldsymbol{w}=\lambda_i\boldsymbol{w}\) より

\[ \boldsymbol{w}^\top \hat{\Sigma}_X\boldsymbol{w} =\boldsymbol{w}^\top \lambda_i\boldsymbol{w} =\lambda_i(\boldsymbol{w}^\top\boldsymbol{w}) =\lambda_i\|\boldsymbol{w}\|^2 =\lambda_i \]

となるので

\[ \max_{\boldsymbol{w}}\boldsymbol{w}^\top \hat{\Sigma}_X\boldsymbol{w} \quad \text{subject to} \quad \|\boldsymbol{w}\|=1 \]

\[ \max_i\lambda_i \]

に等しいことがわかりました。 すなわち、固有値の中で最大の固有値に対応する固有ベクトルが、求める \(\boldsymbol{w}\) となります。

ここで求まった \(\boldsymbol{w}\) が第1主成分です。

演習問題

問題
解答