本記事は機械学習の徹底解説シリーズに含まれます。
初学者の分かりやすさを優先するため,多少正確でない表現が混在することがあります。もし致命的な間違いがあればご指摘いただけると助かります。
はじめに
本稿では,主成分分析が分散共分散行列の固有値問題に帰着する理由をお伝えします。主成分分析はデータ分析における「キホンのキ」ですが,線形代数や微積分という観点から見たときは非常に良質な練習問題になります。そこで今回は,主成分分析を線形代数における固有値問題という観点から眺めてみます。
そもそも,主成分分析は正規直交基底への正射影だと考えることができます。どのような正規直交基底を選ぶかは以下の2通りが考えられます。
- 正射影後のデータの分散が最大になる
- 正射影前後のデータの二乗誤差を最小にする
正射影先の$D$次元単位縦ベクトルを$\vu\in\mR^{D\times 1}$,$D$次元$N$サンプルデータを$\vx\in\mR^{D\times N}$とします。正射影の定義より$\vu$上への$\vx_{n}$の正射影の長さは$\vu^{T}\vx_{n}$であり,正射影ベクトルを$\tilde{\vx}_{n}$とおくと$(\vu^{T}\vx_{n})\vu$と表されます。これを図示すると以下のようになります。
$\|\vx_{n}\|^{2}$が定数であることを踏まえると,三平方の定理から$\|\tilde{\vx}_{n}\|^{2}$の最大化と$\|\vx_{n}{-}\tilde{\vx}_{n}\|^{2}$の最小化は等価になります。$\|\tilde{\vx}_{n}\|^{2}$は「正射影後のデータの分散」を表し,$\|\vx_{n}{-}\tilde{\vx}_{n}\|^{2}$は「正射影前後のデータの二乗誤差」を表しますので,1.と2.が等価であることが分かりました。そこで,以下では1.の方針で主成分分析が分散共分散行列の固有値問題に帰着することを示します。
証明
定義より,正射影前の平均ベクトル$\vmu\in\mR^{D\times 1}$と分散共分散行列$\Sigma\in\mR^{D\times D}$は,
\vmu &= \frac{1}{N}\sum_{n=1}^{N} \vx_{n},\quad
\Sigma = \frac{1}{N} \sum_{n=1}^{N} (\vx_n - \vmu)(\vx_n - \vmu)^T
\end{align}
となります。正射影後の平均値$\hat{\mu}$は以下のように表されます。
\hat{\mu}
&= \frac{1}{N}\sum_{n=1}^{N}\vu^{T}\vx_{n}
= \vu^T \frac{1}{N}\sum_{n=1}^{N} \vx_n
= \vu^{T}\vmu
\end{align}
ただし,$\vu^{T}\vmu$はスカラーであることに注意してください。同様に,正射影後の分散$\hat{\sigma}^{2}$は
\hat{\sigma}^{2}
&= \frac{1}{N}\sum_{n=1}^{N}(\vu^{T}\vx_{n}-\vu^{T}\vmu)^{2} \\[0.7em]
&= \frac{1}{N}\sum_{n=1}^{N}(\vu^{T}\vx_{n}-\vu^{T}\vmu)(\vu^{T}\vx_{n}-\vu^{T}\vmu) \\[0.7em]
&= \frac{1}{N}\sum_{n=1}^{N}(\vu^{T}\vx_{n}-\vu^{T}\vmu)(\vu^{T}\vx_{n}-\vu^{T}\vmu)^{T} \\[0.7em]
&= \frac{1}{N}\sum_{n=1}^{N}(\vu^{T}\vx_{n}-\vu^{T}\vmu)(\vx_{n}^{T}\vu-\vmu^{T}\vu) \\[0.7em]
&= \vu^{T}\left\{\frac{1}{N}\sum_{n=1}^{N}(\vx_{n}-\vmu)(\vx_{n}-\vmu)^{T}\right\}\vu
= \vu^{T}\Sigma\vu
\end{align}
と表されます。$\|\vu\|{=}\vu^{T}\vu{=}1$という条件下で$\vu^T \Sigma\vu$を最大化します。条件付きの最大最小問題ですので,ラグランジュの未定乗数法を利用しましょう。目的関数$L$は,
L(\vu, \lambda) &= \vu^{T}\Sigma\vu - \lambda(\vu^{T}\vu-1)
\end{align}
と表されます。$L$を$\vu$で偏微分して$0$とおくと,スカラーのベクトルによる微分の公式より,
\frac{\partial L}{\partial \vu}
&= \left(\Sigma + \Sigma^{T}\right)\vu - \lambda\left(\mI + \mI^{T}\right)\vu
= 2(\Sigma\vu - \lambda\vu) = 0
\end{align}
が得られます。すなわち,
\lambda\vu=\Sigma\vu\label{偏微分の結果}
\end{align}
が得られます。この時点で固有方程式は得られているのですが,あえて$\lambda$に意味づけをしましょう。式($\ref{偏微分の結果}$)の両辺に左から$\vu^{T}$をかけると,$\vu^{T}\vu=1$より
\lambda &= \vu^{T}\Sigma\vu = \hat{\Sigma}
\end{align}
が得られます。つまり,$\lambda$は正射影後のデータに対する分散そのものだということです。今回の目的が正射影後の分散を最大にすることであったことを踏まえると,$\vu$は$\Sigma$の最大固有値$\lambda$に対する固有ベクトルになることが分かりました。
これを$2$次元以上へ拡張する場合は,グラム・シュミットの正規直交化法を用いて$\vu_{1}$に直交する基底$\vu_{2}$を構成してから同じ議論を行います。正射影後の分散は大きい順に選ばれていきますので,正規直交基底$(\vu_1,\cdots,\vu_{\tilde{D}})$は$\Sigma$の固有値を大きい順に並べた$(\lambda_{1},\cdots,\lambda_{\tilde{D}})$に対応する固有ベクトルとして与えられることが示されました。
コメント
コメント一覧 (8件)
式(3), (4) において、シグマが前の式にくっついて表示されているようです。
初学者様
ご指摘誠にありがとうございます。記事を全面的に修正しました。
式(4) の共分散行列も転置がカッコの外に出るかと思います。
初学者様
ご指摘誠にありがとうございます。記事を全面的に修正しました。
すごく良い記事で参考になります。
ただ、目的関数Lの制約の部分は$\lambda(\vu^{T}\vu-1)$ですね。
かめ様
ご指摘ありがとうございます。本文を修正しました。
(19)から(20)式で$\vu\vu^T=1$にしているようですが, $\vu\vu^T$は$D{\times}D$行列なので一般に$1$にならない気がします。
りねいく様
ご指摘ありがとうございます。コメントを受けて,本文を全面的に修正しました。