2.4.5
t-SNE
まとめ
- t-SNE は高次元での近傍関係を低次元でも再現する可視化向け手法である。
- KL divergence 最小化により局所構造を強く保存し、クラスタの見え方を改善する。
- perplexity や学習率で結果が変わるため、複数設定で安定性確認が必要である。
- 主成分分析(PCA) の概念を先に学ぶと理解がスムーズです
直感 #
t-SNEは『近い点は近く、遠い点は必ずしも正確でなくてよい』という設計で、局所構造を重視して2次元へ配置します。クラスタ探索には有効ですが、軸の意味づけより近傍のまとまりを見る手法です。
詳細な解説 #
t-SNE(t-Distributed Stochastic Neighbor Embedding)は高次元データの局所構造を 2 次元や 3 次元に可視化するための手法です。クラスタの分離具合や潜在構造を見る探索的分析に最適です。
1. 仕組みの概要 #
- 高次元空間で近傍確率 \(P_{ij}\) を構築
- 低次元空間の点でも同様に \(Q_{ij}\) を定義
- Kullback-Leibler ダイバージェンス \(\mathrm{KL}(P \parallel Q)\) を最小化するよう座標を更新
- 対称化した確率と Student-t 分布を使うことでクラスタ間を離す
2. Python 実装 #
| |
3. ハイパーパラメータ #
perplexity: 有効近傍数に相当。データ数の 5〜50 程度で探索learning_rate: 低すぎると収束しない、高すぎると構造が崩れるn_iter: 1000 以上を推奨。early_exaggerationでクラスタを離しやすくする
4. 注意点 #
- 座標はランダム初期化に依存し、絶対位置に意味はない
- 新しい点を既存埋め込みに追加するのは難しい(
openTSNEなどが必要) - 距離の大小を厳密に解釈してはいけない(近傍関係を見るためのツール)
5. まとめ #
- t-SNE は探索的データ分析やレポート用の可視化に強力
- パラメータ感度が高いため複数設定で比較し、再現性を確保する
- UMAP など後継手法も合わせて検討すると洞察が広がります
- 主成分分析(PCA) — 線形な次元削減
- Isomap — もう一つの多様体学習
- Kernel-PCA — 非線形PCA
- UMAP — t-SNEより高速な非線形次元削減
Perplexity と埋め込み #
Perplexity を変えると t-SNE の結果がどう変化するか確認できます。