次元削減とPCA — データの「本質の軸」を見つける

100次元のデータも、実は数本の方向にほとんどの情報が詰まっていることが多い。分散が最大になる軸=主成分を探してそこへデータを射影するのが主成分分析(PCA)です。軸をぐるぐる回しながら、「情報を保ったまま次元を減らす」とはどういうことかを体感します。

1. なぜ次元を減らすのか

現実のデータは特徴量が多く、そのままでは可視化できない(人間が見られるのはせいぜい3次元)、計算が重い、そして次元が増えるほど点同士の距離の差が縮んで学習が難しくなる「次元の呪い」に苦しみます。

幸い、多くの実データでは特徴量同士が強く相関しています。身長と体重、気温とアイスの売上 — 見かけは2つの軸でも、データの散らばりは実質「1本の方向」に集中していたりする。この少数の本質的な方向だけを残し、残りを捨てるのが次元削減です。用途は大きく2つ。

2. 「射影」と「分散」— 情報を最も保つ軸はどれ?

2次元のデータを1次元に減らすには、原点を通る軸を1本選び、各点をその軸の上へ垂直に落とす(射影する)だけです。問題は「どの軸を選ぶか」。

軸の選び方で、射影後の点の散らばり=分散は大きく変わります。分散が小さい軸を選ぶと点が団子状に重なって区別がつかなくなる。つまり分散が大きい軸ほど、元のデータの「違い」を保っているのです。下のデモで角度スライダーを回して、分散が最大になる角度を自分の手で探してみてください。

射影と分散 — 軸を回して「情報が残る方向」を探す
水色の点=元の2次元データ、オレンジの点=軸上への射影(影)、グレーの垂線=「射影」という操作。右のカーブは軸の角度と射影後の分散の関係で、山の頂上にあたる角度が第1主成分(PC1)です。
POINT — 分散の最大化 = 情報の保持 射影でつぶしたあとも点同士の区別がつくのは、射影後の散らばり(分散)が大きい軸。だから PCA は「射影後の分散が最大になる軸」を第1主成分とし、それと直交する中で分散最大の軸を第2主成分、…と順に選んでいく。

3. 数式で見ると — 共分散行列の固有値問題

単位ベクトル v の方向へ射影したときの分散は、データの共分散行列 Σ を使って vTΣv と書けます。「‖v‖=1 の制約のもとで vTΣv を最大化せよ」という問題をラグランジュの未定乗数法で解くと、次の条件にたどり着きます。

Σv = λv 共分散行列 Σ の固有ベクトル v が主成分の方向、固有値 λ がその方向での分散。λ の大きい順に第1・第2・…主成分となる

つまり主成分探しは固有値問題そのもの。d 次元のデータなら固有ベクトルは d 本あり、固有値 λk は「第 k 主成分がどれだけの分散(情報)を担っているか」を表します。全体に占める割合が寄与率です。

寄与率k = λk / (λ1 + λ2 + … + λd) 上位から足し上げたものが累積寄与率。「主成分を何本残すか」はこれを見て決める(9割保持が目安のひとつ)
一歩先へ — 実装は SVD 数値計算では共分散行列を明示的に作らず、データ行列を直接特異値分解(SVD)するのが定石。数学的には同じ答えだが、桁落ちに強く高速。scikit-learn の PCA も内部では SVD を使っている。

4. 第1主成分だけで再構成する — 何が失われるか

次元削減は「圧縮」なので、必ず何かを捨てています。第1主成分の座標だけを保存し、そこから元の2次元空間に戻す(再構成する)と、各点は PC1 の軸上に張りつきます。元の位置とのズレ=第2主成分方向の散らばりが、捨てた情報の正体です。

主成分での再構成 — 点が「本質の軸」に潰れていく
青い線=PC1 の軸、破線=PC2 の方向。スライダーを右へ動かすと各点が PC1 上の「自分の影」へ移動し、2次元データが実質1次元になります。赤い線が失われる情報(PC2 方向の成分)。それでも全分散の約9割は残ります。
注意 — スケールを揃えてから PCA は「分散が大きい方向」を無条件にえらいと見なす。単位の違う特徴量(cm と kg と円など)をそのまま入れると、数値がたまたま大きい特徴量が主成分を独占してしまう。実務では各特徴量を平均0・分散1に標準化してから PCA にかけるのがほぼ必須。

5. 高次元データを圧縮する — 8次元 → 数本の主成分

本領を発揮するのは高次元です。下のデータは8次元(1サンプル=8個の数値)で、折れ線1本が1サンプル。一見バラバラですが、実はこのカーブ群は3種類の基本パターンの混ぜ合わせ+ノイズで作られています。主成分を1本ずつ増やしながら再構成すると、それが暴かれていきます。

8次元データの圧縮 — 何本の主成分で元に戻せる?
水色=元の8次元データ(12サンプル表示)、オレンジ=m 本の主成分だけから再構成したカーブ。m=3 で2本の線はほぼ重なり、累積寄与率は99%に達します — 8次元に見えたデータの中身は実質3次元だった、ということです。

6. まとめ

一歩先へ — 直線では捉えられないとき PCA が引けるのはあくまで「まっすぐな軸」。渦巻きやS字のように曲がった構造には、カーネル法で非線形化したカーネルPCAや、可視化に特化した t-SNE・UMAP が使われる。それでも、まず PCA — 速くて解釈しやすい線形手法 — から試すのが今も定石。