本記事は機械学習の徹底解説シリーズに含まれます。
初学者の分かりやすさを優先するため,多少正確でない表現が混在することがあります。もし致命的な間違いがあればご指摘いただけると助かります。
お気持ち
本記事では,主成分分析と分散共分散行列の固有値問題とのつながりについてお伝えしていきます。主成分分析はデータ分析における「キホンのキ」ですが,線形代数や微積分という観点から見たときは,非常に良質な練習問題になります。そこで今回は,主成分分析を線形代数における固有値問題という観点から眺めてみます。
そもそも,主成分分析は正規直交基底への正射影だと考えることができます。どのような正規直交基底を選ぶかは,以下の2通りが考えられます。
- 正射影後のデータの分散が最大になる
- 正射影前後のデータの二乗誤差を最小にする
これらの2通りの方針について,どちらも固有値問題に帰着することを示します。
証明
下準備
まずは,両方針に共通して元のデータと射影後のデータを数学的に表現しておきましょう。射影先のベクトル$\vu$は,以下のように設定します。
\vu &= (u_1, u_2, \cdots, u_d)^T\\
|\vu| &= 1
\end{align}
$\vu$は$d$次元のベクトルですが,$\vu$上に射影した場合には$d$次元上の1点になってしまうことに注意です。簡単のため,最初は$1$点への射影について考え,そのあとに多次元に拡張したいと思います。さて,$d$次元$N$サンプルの対象のデータ$\vx$を用いて,射影前の各種統計量は以下のように表されます。
\vmu &= \frac{1}{N}\sum_{n=1}^{N} \vx_n \mSigma \\
&= \frac{1}{N} \sum_{n=1}^{N} (\vx_n - \vmu)(\vx_n - \vmu^T)
\end{align}
$\vu$上へ射影されたデータは,内積で表される$d$次元空間の点になります。これを利用して,以下のようにして射影後の各種統計量を求めます。
\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\; (\text{スカラー}) \\
\hat{\Sigma}
&= \frac{1}{N} \sum_{n=1}^N (\vu^T \vx_n - \vu^T \vmu) (\vu^T \vx_n - \vu^T \vmu)^T \\
&= \vu^T \mSigma\vu\; (\text{スカラー})
\end{align}
ここから,各方針に枝分かれしていきます。
分散最大
$|\vu|= \vu^T \vu = 1$という条件下で$\vu^T \mSigma\vu$を最大にすればOKです。条件付きの最大最小問題ですので,ラグランジュの未定乗数法を利用しましょう。
L(\vu, \lambda)
&= \vu^T \mSigma \vu - \lambda(\vu^T \vu)\\
\frac{\partial L}{\partial \vu}
&= (\mSigma + \mSigma^T)\vu - \lambda (\mI + \mI^T)\vu\\
&= 2(\mSigma \vu - \lambda\vu)\\
&= 0\\
\Leftrightarrow \mSigma \vu
&= \lambda\vu\\
\end{align}
この式を少しいじることで,$\lambda$に意味づけをしてあげましょう。
\lambda &= \vu^T \mSigma \vu
\end{align}
つまり,$\lambda$は射影後の分散そのものだということです。とても大切な事実です。つまり,$\vu$は$\mSigma$の最大固有値$\lambda$に対する固有ベクトルになります。なぜ最大なのかというと,今回の目的が射影後の分散$\lambda$を最大にすることが目的だったからです。
これを,$2$次元上への射影に拡張する場合は,新しい射影上のベクトル$\vu_2$が$\vu_1=\vu$に直交するという条件をつけて全く同じ議論を行えばOKです。すると,射影後の分散は大きい順に選ばれていきますので,出来上がる正規直交基底$(\vu_1, \vu_2, \cdots, \vu_{\tilde{d}})$は,$\mSigma$の固有値を大きい順に並べた$(\lambda_1, \lambda_2, \cdots, \lambda_{\tilde{d}})$に対応する固有ベクトルとして与えられることが示ました。
二乗誤差最小
こちらの方針では,$\vu$上に正射影したデータが$(\vu^T \vx_n)\vu$と現れることを利用します。これは,内積$\vu^T \vx_n$が正射影後の空間におけるデータの「長さ」を表していることを考えれば分かります。今回の目的はデータの射影前後の二乗誤差を最小にすることでした。実際に,二乗誤差を計算してみましょう。
\varepsilon^2
&= \sum_{n=1}^{N} |\vx_n - (\vu^T \vx_n)\vu |^2 \\
&= \sum_{n=1}^{N} \left( \vx_n - (\vu^T \vx_n)\vu \right)^T \left( \vx_n - (\vu^T \vx_n)\vu \right)\\
&= \sum_{n=1}^N \left( \vx_n^T \vx_n - 2(\vu^T \vx_n)^2 + (\vu^T \vx_n)^2 \right)\\
&\propto \sum_{n=1}^N - (\vu^T \vx_n)^2 \; (\because \vx_n^T \vx\text{は常に一定})
\end{align}
この式をよく眺めてみましょう。「変換後データの分散値の$-N$倍」になっていることが分かりますでしょうか。つまり,変換後データの分散値が$\vu^T \mSigma \vu$であることに注意すれば,以下の関係式が成立します。
\varepsilon^2 &= -N \vu^T \mSigma \vu
\end{align}
1. の方針は変換後データの分散$\vu^T \mSigma \vu$の最大化,2.の方針は二乗誤差$\varepsilon^2$の「最小化」でしたので,上の式より両者が等価であることが分かります。以上より,どちらの方針にしても,主成分分析は分散共分散行列の固有値問題に帰着することが示ました。
少しあっさり目に書いてしまったけど理解できたかな…?とにかく,どちらの方針に立っても主成分分析は分散共分散行列の固有値問題に帰着することが少しでも伝われば嬉しいな。
コメント