主成分分析は、たくさんの変数を“少ない軸”にまとめ直す方法。
その軸は気分で決めるのではなく、共分散行列が持っている「ばらつきの向き」から決まる。

結論

主成分分析は、共分散行列の“固有ベクトル”で軸を取り直すこと。

主成分分析は、複数の変数が作るデータの散らばりを、できるだけ少ない本数の軸で表し直す手法です。
目的は、情報をなるべく落とさずに、見通しのよい座標へ変換することにあります。

ここで主役になるのが共分散行列です。
共分散行列は「どの方向にデータが広がっているか」を持っていて、その最も広がる方向が第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)意味を言葉にする

固有ベクトル=主成分方向、固有値=その方向の分散、寄与率=説明できる分散の割合。

落とし穴

“固有値問題だから難しい”で止まってしまう。

落とし穴は一つです。主成分分析を、線形代数のテクニックだけで理解しようとすること
本当の出発点は「どの向きに見れば、データの違いが一番よく見えるか」です。
その問いを数式にした結果として、固有値問題が出てくるだけです。

締め

共分散行列が“形”を持っているから、主成分分析ができる。

ストーク

結局、主成分分析は共分散行列の“形”を読む作業たい。どっち向きに一番広がっとるか、それを固有ベクトルで拾っとる。

シママ

うん、納得。主成分分析って独立した手法に見えてたけど、共分散行列の応用として見ると急に筋が通るのよ。

ストーク

よかね。共分散行列が“ただの表”から“形を持つ道具”に見えたら、今日は勝ちたい。

シママ

“勝ちたい”って言い方はいつも少し雑だけど…今日は確かに、ちゃんとつながった。ありがとう。