次元削減とPCA — データの「本質の軸」を見つける
100次元のデータも、実は数本の方向にほとんどの情報が詰まっていることが多い。分散が最大になる軸=主成分を探してそこへデータを射影するのが主成分分析(PCA)です。軸をぐるぐる回しながら、「情報を保ったまま次元を減らす」とはどういうことかを体感します。
1. なぜ次元を減らすのか
現実のデータは特徴量が多く、そのままでは可視化できない(人間が見られるのはせいぜい3次元)、計算が重い、そして次元が増えるほど点同士の距離の差が縮んで学習が難しくなる「次元の呪い」に苦しみます。
幸い、多くの実データでは特徴量同士が強く相関しています。身長と体重、気温とアイスの売上 — 見かけは2つの軸でも、データの散らばりは実質「1本の方向」に集中していたりする。この少数の本質的な方向だけを残し、残りを捨てるのが次元削減です。用途は大きく2つ。
- 可視化:高次元データを2〜3次元に落として人間の目で眺める
- 前処理:ノイズや冗長な特徴量を削って、後段の学習を速く・安定にする
2. 「射影」と「分散」— 情報を最も保つ軸はどれ?
2次元のデータを1次元に減らすには、原点を通る軸を1本選び、各点をその軸の上へ垂直に落とす(射影する)だけです。問題は「どの軸を選ぶか」。
軸の選び方で、射影後の点の散らばり=分散は大きく変わります。分散が小さい軸を選ぶと点が団子状に重なって区別がつかなくなる。つまり分散が大きい軸ほど、元のデータの「違い」を保っているのです。下のデモで角度スライダーを回して、分散が最大になる角度を自分の手で探してみてください。
3. 数式で見ると — 共分散行列の固有値問題
単位ベクトル v の方向へ射影したときの分散は、データの共分散行列 Σ を使って vTΣv と書けます。「‖v‖=1 の制約のもとで vTΣv を最大化せよ」という問題をラグランジュの未定乗数法で解くと、次の条件にたどり着きます。
つまり主成分探しは固有値問題そのもの。d 次元のデータなら固有ベクトルは d 本あり、固有値 λk は「第 k 主成分がどれだけの分散(情報)を担っているか」を表します。全体に占める割合が寄与率です。
PCA も内部では SVD を使っている。
4. 第1主成分だけで再構成する — 何が失われるか
次元削減は「圧縮」なので、必ず何かを捨てています。第1主成分の座標だけを保存し、そこから元の2次元空間に戻す(再構成する)と、各点は PC1 の軸上に張りつきます。元の位置とのズレ=第2主成分方向の散らばりが、捨てた情報の正体です。
5. 高次元データを圧縮する — 8次元 → 数本の主成分
本領を発揮するのは高次元です。下のデータは8次元(1サンプル=8個の数値)で、折れ線1本が1サンプル。一見バラバラですが、実はこのカーブ群は3種類の基本パターンの混ぜ合わせ+ノイズで作られています。主成分を1本ずつ増やしながら再構成すると、それが暴かれていきます。
6. まとめ
- 次元削減:相関だらけの高次元データを、少数の本質的な軸で表し直す。可視化と前処理が二大用途。
- PCA:射影後の分散が最大になる軸=主成分を選ぶ。分散の最大化が情報の保持になる。
- 数学の正体:共分散行列の固有値問題 Σv = λv。固有ベクトルが軸、固有値がその軸の分散。
- 寄与率:各主成分が担う分散の割合。累積寄与率を見て「何本残すか」を決める。