データと前処理

UMAP ゆーまっぷ

UMAP次元削減可視化多様体学習大規模データ
UMAPについて教えて

簡単に言うとこんな感じ!

t-SNEの「遅い・新データに使えない」という弱点を克服した次世代の次元削減・可視化手法だよ。数百万件のデータでもサクサク動き、学習したマップに新しいデータを追加することもできる。生物情報学やLLMの埋め込みベクトルの可視化で大活躍してるんだ!


UMAPとは

UMAP(Uniform Manifold Approximation and Projection)は、2018年にLeland McInnesらが発表した次元削減・可視化手法です。多様体学習の理論(データは高次元空間の中の低次元の曲面=多様体上にある)を背景に、データの局所的・大局的な構造を保ちながら次元を削減します。

t-SNEと同様にクラスター構造を可視化できますが、計算速度新データへの対応力が大幅に向上しています。


t-SNEとの比較

比較項目t-SNEUMAP
計算速度遅い(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)

関連用語