主成分分析は、たくさんの変数を“少ない軸”にまとめ直す方法。
その軸は気分で決めるのではなく、共分散行列が持っている「ばらつきの向き」から決まる。
結論
主成分分析は、共分散行列の“固有ベクトル”で軸を取り直すこと。
主成分分析は、複数の変数が作るデータの散らばりを、できるだけ少ない本数の軸で表し直す手法です。
目的は、情報をなるべく落とさずに、見通しのよい座標へ変換することにあります。
ここで主役になるのが共分散行列です。
共分散行列は「どの方向にデータが広がっているか」を持っていて、その最も広がる方向が第1主成分になります。
数学的には、共分散行列の固有値・固有ベクトルを求めることが主成分分析の中心です。
固有ベクトルが新しい軸、固有値がその軸に沿った分散の大きさを表します。
今日は主成分分析たい。名前は大げさやけど、やっとることは「散らばりやすい向きに座標ば回し直す」だけたい。
“次元圧縮”って言われると何となく分かる気はするのよ。
でも、どうして共分散行列から主成分が出るのかが、まだちゃんとつながってない。
よかよか。今日は“便利な手法”としてじゃなく、“共分散行列の応用”として一本でつなぐばい。
あるある
「とりあえず2次元に落とす手法」で止まってしまう。
主成分分析は可視化のために2次元へ落とす手法、とだけ覚えると本質を外しやすいです。
本当は「どの方向に分散が大きいか」を軸として選び直す、共分散行列の読み替えです。
本文
共分散行列が“データ雲の形”を持っているから、主成分分析ができる。
1) 出発点:共分散行列は「散らばり方の地図」
まず、平均を引いたデータベクトル $\mathbf{x}-\boldsymbol{\mu}$ を考えます。
その共分散行列は
$$\Sigma=\mathrm{E}\left[(\mathbf{x}-\boldsymbol{\mu})(\mathbf{x}-\boldsymbol{\mu})^T\right]$$
で定義されます。
対角成分は各変数の分散、非対角成分は変数同士の共分散です。
幾何的には、共分散行列はデータ雲がどの方向に広がっているかを持っています。
もしある方向に大きく伸びた楕円体のようなデータなら、その「長軸」に相当する方向が存在します。
主成分分析は、その長軸を数式で取り出す操作です。
直感
共分散行列は、単なる数字表ではなく「データの形」を持つ。
主成分分析は、その形に合わせて座標軸を回す方法だと見ると分かりやすい。
2) 何を最大化したいのか:射影した先の分散
主成分分析の考え方は素直です。
元の多変量データを、ある1本の単位ベクトル $\mathbf{w}$ に射影してみます。
射影後のスカラー値を
$$z=\mathbf{w}^T(\mathbf{x}-\boldsymbol{\mu})$$
とします。
すると、この $z$ の分散が大きいほど、「その方向に見たときにデータの違いがよく見える」と言えます。
だから第1主成分は、「射影後の分散を最大にする方向」を選べばよい。
射影後の分散は
$$\mathrm{Var}(z)=\mathrm{Var}(\mathbf{w}^T(\mathbf{x}-\boldsymbol{\mu}))=\mathbf{w}^T\Sigma\mathbf{w}$$
になります。
ここで、$\mathbf{w}$ は単位ベクトルという条件
$$\mathbf{w}^T\mathbf{w}=1$$
を満たすとします。
つまり、“どの向きから見ると一番ばらついて見えるか”を探してるのね。
それが第1主成分になる、と。
そうたい。“情報が一番見える向き”って言い換えてもよか。分散が大きい向きほど、データの違いをよく残せるけんね。
3) 最大化問題を解くと、固有値問題になる
では、$\mathbf{w}^T\Sigma\mathbf{w}$ を $\mathbf{w}^T\mathbf{w}=1$ のもとで最大化します。
これは制約付き最適化なので、ラグランジュ未定乗数 $\lambda$ を使います。
$$L(\mathbf{w},\lambda)=\mathbf{w}^T\Sigma\mathbf{w}-\lambda(\mathbf{w}^T\mathbf{w}-1)$$
これを $\mathbf{w}$ で微分して 0 と置くと
$$\Sigma\mathbf{w}=\lambda\mathbf{w}$$
が出ます。
これはまさに共分散行列の固有値問題です。
つまり、主成分の方向 $\mathbf{w}$ は共分散行列の固有ベクトルであり、その方向の分散の大きさは対応する固有値 $\lambda$ になります。
第1主成分は最大の固有値に対応する固有ベクトル。
第2主成分は、その次に大きい固有値に対応する固有ベクトルです。
さらに第2主成分以降は、前の主成分と直交する条件も持ちます。
核心
主成分分析が固有値問題になるのは、射影後の分散 $\mathbf{w}^T\Sigma\mathbf{w}$ を最大化したいから。
だから共分散行列の固有値と固有ベクトルが、そのまま主成分の意味になる。
4) 小さな計算例:2変量データの共分散行列から主成分を見る
2変量データの共分散行列が、例えば次だったとします。
$$\Sigma=\begin{pmatrix}4 & 3\\ 3 & 4\end{pmatrix}$$
この固有値を求めます。
$$\det(\Sigma-\lambda I)=\det\begin{pmatrix}4-\lambda & 3\\ 3 & 4-\lambda\end{pmatrix}=(4-\lambda)^2-9=0$$
したがって
$$\lambda=7,\ 1$$
です。
最大固有値は 7 なので、第1主成分はそれに対応する固有ベクトルです。
$\lambda=7$ を代入すると
$$\begin{pmatrix}-3 & 3\\ 3 & -3\end{pmatrix}\mathbf{w}=\mathbf{0}$$
となるので、
$$\mathbf{w}_1\propto \begin{pmatrix}1\\1\end{pmatrix}$$
が第1主成分方向です。
つまりこのデータは、$x$ と $y$ が同時に増減する方向に一番大きく散らばっています。
逆に第2主成分は
$$\mathbf{w}_2\propto \begin{pmatrix}1\\-1\end{pmatrix}$$
で、こちらの分散は 1 と小さい。
だから、このデータはほとんど 1 本の軸で表せる、という判断ができます。
この例やと、データ雲は斜め右上に長く伸びとる感じたいね。第1主成分が $(1,1)$ 方向ってのは、その見た目と一致しとる。
あ、これは気持ちいい。共分散行列の非対角成分が大きいと、斜め方向に伸びる。その向きが固有ベクトルで出るのね。
5) 主成分得点:新しい軸に座標変換する
主成分方向が分かったら、元データをその軸へ射影します。
第1主成分ベクトルを $\mathbf{w}_1$ とすると、第1主成分得点は
$$z_1=\mathbf{w}_1^T(\mathbf{x}-\boldsymbol{\mu})$$
です。
これは「元の変数の組合せでできた新しい変数」です。
第2主成分も同様に作れます。
主成分分析は、元の変数そのものを捨てるというより、より見通しのよい座標へ変換していると考える方が正確です。
6) 次元圧縮とは何を捨てることか
主成分分析で 2 次元から 1 次元へ落とす、あるいは 10 変数を 2 主成分へ落とす、というとき、
捨てているのは「分散の小さい方向」です。
例えば固有値が
$$\lambda_1,\lambda_2,\dots,\lambda_p$$
なら、全分散は
$$\lambda_1+\lambda_2+\cdots+\lambda_p$$
です。
そして第1主成分が説明する分散の割合は
$$\frac{\lambda_1}{\lambda_1+\lambda_2+\cdots+\lambda_p}$$
になります。
これを寄与率と呼びます。
寄与率が高い主成分だけを残す、というのが次元圧縮の考え方です。
寄与率の意味
主成分分析で残す軸は、「分散をどれだけ説明しているか」で決める。
だから、寄与率は“情報をどれだけ残せているか”の目安になる。
7) 共分散行列を使うか、相関行列を使うか
主成分分析では、共分散行列を使う場合と、相関行列を使う場合があります。
ここは実務上かなり大事です。
共分散行列は単位の影響を受けます。
例えば「身長(cm)」と「体重(kg)」をそのまま入れると、スケールの大きい変数が主成分を強く支配しやすい。
変数ごとのスケール差を消したいなら、標準化して相関行列ベースで主成分分析を行います。
相関行列 $R$ は、共分散行列 $\Sigma$ と標準偏差の対角行列 $D$ を使って
$$R=D^{-1}\Sigma D^{-1}$$
と書けます。
つまり、相関行列ベースの主成分分析は「各変数を同じ土俵に乗せてから軸を探す」やり方です。
ここは大事ね。同じ主成分分析でも、共分散行列を使うか相関行列を使うかで、見たいものが変わる。
そうたい。単位込みの“絶対的な散らばり”を見たいなら共分散、変数を公平に見たいなら相関。そこを雑にすると解釈がぶれるたい。
8) よくあるつまずき
つまずき1:主成分分析を“とりあえず圧縮する手法”だと思う
本質は「分散の大きい方向を新しい軸として取り直す」こと。圧縮はその結果として起こる。
つまずき2:共分散行列と相関行列の使い分けを意識しない
変数の単位やスケール差が大きいなら、標準化して相関行列ベースで考える方が自然なことが多い。
つまずき3:固有値と固有ベクトルの意味が曖昧
固有ベクトルは主成分方向、固有値はその方向の分散の大きさ。ここを意味ごと覚える。
つまずき4:非対角成分の意味が見えない
共分散の非対角成分は、データ雲の傾きに対応する。0 でなければ、軸に対して斜めに広がる可能性がある。
テンプレ
主成分分析を説明するときの最短の型。
(1)共分散行列を置く
$$\Sigma=\mathrm{E}\left[(\mathbf{x}-\boldsymbol{\mu})(\mathbf{x}-\boldsymbol{\mu})^T\right]$$
(2)ある方向への射影後の分散を書く
$$z=\mathbf{w}^T(\mathbf{x}-\boldsymbol{\mu}),\quad \mathrm{Var}(z)=\mathbf{w}^T\Sigma\mathbf{w}$$
(3)分散最大化を考える
$$\mathbf{w}^T\mathbf{w}=1\ \text{のもとで}\ \mathbf{w}^T\Sigma\mathbf{w}\ \text{を最大化}$$
(4)固有値問題へ落とす
$$\Sigma\mathbf{w}=\lambda\mathbf{w}$$
(5)意味を言葉にする
固有ベクトル=主成分方向、固有値=その方向の分散、寄与率=説明できる分散の割合。
落とし穴
“固有値問題だから難しい”で止まってしまう。
落とし穴は一つです。主成分分析を、線形代数のテクニックだけで理解しようとすること。
本当の出発点は「どの向きに見れば、データの違いが一番よく見えるか」です。
その問いを数式にした結果として、固有値問題が出てくるだけです。
締め
共分散行列が“形”を持っているから、主成分分析ができる。
結局、主成分分析は共分散行列の“形”を読む作業たい。どっち向きに一番広がっとるか、それを固有ベクトルで拾っとる。
うん、納得。主成分分析って独立した手法に見えてたけど、共分散行列の応用として見ると急に筋が通るのよ。
よかね。共分散行列が“ただの表”から“形を持つ道具”に見えたら、今日は勝ちたい。
“勝ちたい”って言い方はいつも少し雑だけど…今日は確かに、ちゃんとつながった。ありがとう。