UMAP ゆーまっぷ
UMAP次元削減可視化多様体学習大規模データ
UMAPについて教えて
簡単に言うとこんな感じ!
t-SNEの「遅い・新データに使えない」という弱点を克服した次世代の次元削減・可視化手法だよ。数百万件のデータでもサクサク動き、学習したマップに新しいデータを追加することもできる。生物情報学やLLMの埋め込みベクトルの可視化で大活躍してるんだ!
UMAPとは
UMAP(Uniform Manifold Approximation and Projection)は、2018年にLeland McInnesらが発表した次元削減・可視化手法です。多様体学習の理論(データは高次元空間の中の低次元の曲面=多様体上にある)を背景に、データの局所的・大局的な構造を保ちながら次元を削減します。
t-SNEと同様にクラスター構造を可視化できますが、計算速度と新データへの対応力が大幅に向上しています。
t-SNEとの比較
| 比較項目 | t-SNE | UMAP |
|---|---|---|
| 計算速度 | 遅い(O(n²)) | 速い(近似O(n)) |
| 大規模データ | 苦手 | 得意 |
| 新データへの適用 | 困難 | 可能(transform()) |
| 大局的な構造の保存 | 弱い | 比較的良い |
| 局所的な構造の保存 | 得意 | 得意 |
| パラメータ調整 | 必要 | 必要 |
主なパラメータ
| パラメータ | 役割 | 目安 |
|---|---|---|
| n_neighbors | 局所構造の考慮範囲 | 5〜50(大きいほど大局的) |
| min_dist | 低次元空間での点の密集度 | 0.0〜0.5(小さいほど密集) |
| n_components | 出力次元数 | 2(可視化)/ 任意(前処理) |
| metric | 距離の計算方法 | euclidean, cosine など |
活用シーン
- 単細胞RNA-seq解析(bioinformatics):細胞タイプのクラスター可視化
- LLMの埋め込みベクトルの可視化:類似文書・意味的なクラスターの確認
- 画像特徴量の探索:類似画像のグループをインタラクティブに確認
- 前処理として使用:次元削減後の低次元表現を他のMLモデルに入力
歴史と背景
- 2018年:McInnesらが論文発表。コード公開と同時に急速に普及
- 2019〜:生命科学・自然言語処理でt-SNEの代替として広く採用
- 現在:大規模データ可視化のデファクトスタンダードに近い地位を確立
Pythonによる実装例
import umap
# UMAPの学習と変換
reducer = umap.UMAP(
n_neighbors=15,
min_dist=0.1,
n_components=2,
random_state=42
)
embedding = reducer.fit_transform(X)
# 新しいデータへの適用(t-SNEでは難しい)
new_embedding = reducer.transform(X_new)