ひとことで言うと#
「たくさんの変数を持つデータを、情報の損失を最小限に抑えながら少ない変数にまとめる技術」。100個の特徴量を2〜3個に圧縮して可視化したり、モデルの学習効率を上げたりする。データの本質的な構造を見抜くための強力なツール。
押さえておきたい用語#
- PCA(Principal Component Analysis)
- 主成分分析。分散が最大になる方向にデータを射影し、少ない変数で元データの情報を表現する線形手法を指す。
- 累積寄与率(Cumulative Contribution Rate)
- 削減後の主成分が元データの分散(情報量)をどの程度説明しているかの割合のこと。80〜95%を目安に次元数を決める。
- t-SNE(t-Distributed Stochastic Neighbor Embedding)
- 高次元データの近傍関係を保ちながら2〜3次元に圧縮する非線形手法のこと。クラスタの可視化に特に強い。
- 次元の呪い(Curse of Dimensionality)
- 変数が増えるほどデータ間の距離が均一化し、分析や学習の性能が低下する現象のこと。次元削減が必要になる根本的な理由。
次元削減の全体像#
こんな悩みに効く#
- 変数が多すぎてデータの全体像が掴めない
- 機械学習モデルの学習に時間がかかりすぎる
- 高次元データを2次元で可視化して、パターンやクラスタを発見したい
基本の使い方#
次元削減の手法を選ぶ前に、データの特性と分析の目的を整理する。
確認事項:
- 変数の数と型: 数値変数のみか、カテゴリ変数も含むか
- データの規模: サンプル数と変数の比率
- 目的: 可視化、前処理、ノイズ除去、特徴量圧縮のどれか
- 線形性: データ間の関係が線形か非線形か
ポイント: 目的によって最適な手法が異なる。可視化ならt-SNEやUMAP、前処理ならPCAが定番。
目的とデータの性質に応じて適切な手法を選ぶ。
主な手法:
- PCA(主成分分析): 分散が最大になる方向にデータを射影する。線形手法の基本
- t-SNE: 高次元の近傍関係を保ちながら2〜3次元に圧縮。可視化に強い
- UMAP: t-SNEより高速で、大域的な構造も保持しやすい
- LDA(線形判別分析): クラス間の分離が最大になるように次元を削減
- オートエンコーダ: ニューラルネットで非線形な次元削減を学習
選択の目安:
- 探索的な可視化 → t-SNE / UMAP
- 前処理としてモデルに入力 → PCA / LDA
- 複雑な非線形構造 → UMAP / オートエンコーダ
削減後の次元数を定量的に判断する。
PCAの場合の判断基準:
- 累積寄与率: 元の分散の80〜95%を説明できる次元数を選ぶ
- スクリープロット: 固有値の減少が緩やかになる「肘」の位置を見る
- 下流タスクの精度: 実際にモデルに入れて精度を比較する
ポイント: 「とりあえず2次元」で可視化するだけでなく、目的に応じた適切な次元数を選ぶことが重要。
次元削減の結果をビジネス的に意味のある形で解釈する。
- PCAの場合: 各主成分がどの元の変数と関係が強いかを確認する(因子負荷量)
- 可視化の場合: クラスタや外れ値のパターンを確認し、ドメイン知識と照合する
- 前処理の場合: 次元削減前後でモデルの精度や計算時間を比較する
注意: t-SNEやUMAPの可視化では、点間の距離やクラスタの大きさに過度な意味を読み取らない。
具体例#
状況: 年商50億円の小売企業。顧客データ(50変数: 購買履歴、行動データ、属性情報)を使って顧客セグメントを作りたいが、50次元のままではクラスタリングの精度が低い。
アプローチ:
- 前処理: 欠損値補完、標準化を実施
- PCAで次元削減: 50変数 → 8主成分(累積寄与率85%)
- UMAPで可視化: 8主成分 → 2次元にマッピングし、顧客の分布を確認
- クラスタリング: PCAの8次元でk-meansを実行し、5つのセグメントを抽出
主成分の解釈:
- 第1主成分: 購買金額と購買頻度に強く関連 → 「購買力」
- 第2主成分: 来店頻度とオンライン利用率に関連 → 「チャネル選好」
- 第3主成分: 購入カテゴリの多様性に関連 → 「嗜好の幅」
50変数をそのまま使ったクラスタリングよりも、PCA後のクラスタリングのほうがシルエットスコアが0.15→0.38に改善。ノイズが除去されたことで、各セグメントの特徴が明確になりマーケティング施策に直結した。
状況: 製薬企業の研究チーム。がん患者200名の遺伝子発現データ(20,000遺伝子)から、がんのサブタイプを分類したい。変数が多すぎてそのままでは分析不可能。
アプローチ:
- PCAで20,000変数 → 50主成分に圧縮(累積寄与率72%)
- UMAPで50主成分 → 2次元に可視化
- 可視化の結果、4つの明確なクラスタが出現
結果:
- 4つのクラスタが既知のがんサブタイプ(I〜IV型)と85%一致
- 残り15%のうち、既存の分類と異なる12名の患者を詳細分析したところ、新しいサブタイプの候補を発見
- 計算時間: 20,000次元のままクラスタリングすると48時間 → PCA後は3分
次元削減は「情報を捨てる」のではなく「ノイズを捨てて本質を残す」技術。20,000変数を50に圧縮しても生物学的に意味のあるパターンが保持され、むしろ新発見にもつながった。
状況: 月間ユーザー30万人のECサイト。商品数8,000点の閲覧・購入履歴をもとにレコメンドモデルを構築しているが、ユーザー×商品のマトリクスが巨大すぎて学習に12時間かかる。
アプローチ:
- ユーザー×商品マトリクス(8,000次元)をPCAで200次元に圧縮
- 200次元の特徴量で協調フィルタリングモデルを再構築
結果:
- モデルの学習時間: 12時間 → 45分(16倍高速化)
- レコメンド精度(MAP@10): 0.18 → 0.21(3ポイント改善)
- 精度が上がった理由: 購入回数1回の「ノイズ的な」データが圧縮で除去された
次元削減は精度と効率のトレードオフではなく、ノイズ除去効果により両方を同時に改善できるケースがある。まずPCAで圧縮してからモデルを構築するアプローチは、計算コストの削減にも直結する。
やりがちな失敗パターン#
- 標準化せずにPCAを実行する — スケールの大きい変数に引きずられてしまう。PCAの前にデータを標準化(平均0、分散1)するのが基本
- t-SNEの結果を過信する — クラスタ間の距離やクラスタのサイズには意味がないことが多い。あくまで近傍関係の可視化であり、定量的な分析には使わない
- 次元削減で情報を捨てすぎる — 累積寄与率50%で圧縮すると重要な情報が失われる。下流タスクの精度で次元数の妥当性を必ず検証する
- ハイパーパラメータをデフォルトのまま使う — t-SNEのperplexityやUMAPのn_neighborsは結果に大きく影響する。複数の設定で試し、結果が安定するか確認する
まとめ#
次元削減は、高次元データを扱いやすくするための必須技術。PCA、t-SNE、UMAPなど目的に応じた手法を選び、適切な次元数で圧縮することで、可視化・モデリング・解釈のすべてが改善する。まずはPCAでデータの構造を把握し、必要に応じてt-SNEやUMAPで可視化するところから始めよう。