02.7
次元削減
まとめ
次元削減は、数十〜数千列あるデータを、ばらつきや点同士の近さをできるだけ保ったまま 2〜3 本の軸に写し直す技術です。この章では、分散が最大の方向を軸にする PCA と SVD、クラスの分離が最大の方向を軸にする LDA、カーネルで曲がった構造を広げる Kernel PCA、近傍の関係だけを守って平面に並べる t-SNE・UMAP・Isomap を扱います。線形手法は軸の意味を係数で説明できる代わりに曲がった構造を広げられず、非線形手法は可視化に強い代わりに新しい点を同じ写像で変換しにくい、という違いが選び方の軸です。読み終えると、
n_components や perplexity のような引数が図をどう変えるかを理解し、可視化・ノイズ除去・前処理のどれが目的かで手法を選べるようになります。直感 #
30 列ある表データの散布図は 30 次元なので、そのままでは描けません。PCA は 30 本の軸を回転させ、点がいちばん広く散らばる向きを第 1 主成分、それに直交する中で次に散らばる向きを第 2 主成分として、2 本の軸だけで描き直します。一方で t-SNE や UMAP は「どの点とどの点が近いか」だけを守って平面に並べ直すので、大域的な距離は捨てる代わりに塊の分かれ方がはっきり見えます。目的が可視化なら局所の近さ、下流モデルの前処理ならばらつき(分散)の保存を優先する、という使い分けです。
詳細な解説 #
このチャプターで学べること #
- PCA(主成分分析)が分散を最大化する軸を固有値分解で求める仕組みと、累積寄与率 0.9 などで
n_componentsを決める方法 - SVD(特異値分解)と PCA の関係
- LDA(線形判別分析)がクラス間分散とクラス内分散の比を最大化して教師あり次元削減を行う仕組み
- Kernel PCA の
gammaが同心円を広げる仕組み - t-SNE・UMAP・Isomap が
perplexityやn_neighborsで近傍を定義し、高次元データの局所構造を保って可視化する仕組み
これがわかるとできること #
- 目的(可視化・ノイズ除去・計算効率化)に応じて PCA・t-SNE・UMAP のどれを使うかを選択できる
- 同心円のような曲がった構造に Kernel PCA や Isomap を選べる
PCA(n_components=0.9)のように次元削減を前処理パイプラインに組み込み、下流モデルの性能を改善できる
手法クイックリファレンス #
| 手法 | 種別 | 教師 | 推奨場面 |
|---|---|---|---|
| PCA | 線形 | なし | 前処理・ノイズ除去・可視化 |
| SVD | 線形 | なし | 大規模行列・推薦システム |
| LDA | 線形 | あり | クラス分離を重視する圧縮 |
| Kernel PCA | 非線形 | なし | 非線形構造の可視化 |
| t-SNE | 非線形 | なし | 高次元データの2D/3D可視化 |
| Isomap | 非線形 | なし | 多様体構造の保存 |
学習の進め方 #
まず PCA で「平均を引く・共分散行列を作る・固有値の大きい順に軸を選ぶ」の 3 手順と、寄与率の読み方を押さえます。次に SVD で同じ結果が特異値分解からも得られることを確認し、LDA でクラスラベルを使うと軸の選び方がどう変わるかを見ます。最後に t-SNE・UMAP・Isomap・Kernel PCA のスライダーで perplexity・n_neighbors・gamma を動かし、非線形手法が同じ手書き数字データをどう並べ替えるかを比べます。
まとめ #
この章で扱うのは線形手法(PCA/SVD/LDA)と非線形手法(Kernel PCA/t-SNE/UMAP/Isomap)の 7 つです。目的が可視化なのか前処理なのかを決め、データの構造(直線的か曲がっているか、クラスラベルがあるか)に応じて手法を使い分けられるようになることがゴールです。どの手法でも StandardScaler で列のスケールを揃える前処理が前提で、これを省くと値の範囲が広い列だけが第 1 軸を決めてしまいます。