このプロジェクトについて
UMAP(Uniform Manifold Approximation and Projection)は、可視化および一般的な非線形埋め込みのための次元削減手法であり、Pythonパッケージumap-learnとして実装されている。scikit-learnのtransformerと同様に動作するよう設計されており、既存のパイプラインにおいてt-SNEの代替として利用できる。
この手法は3つの仮定に基づいている。データがリーマン多様体上に一様に分布していること、リーマン計量が局所的に一定であること、多様体が局所的に連結していることである。これらの仮定を用いてファジィ位相的表現を構築し、最も近い等価構造を持つ低次元射影を探索することで埋め込みを求める。数学的詳細はArXiv論文1802.03426に記述されており、より広範な導入はNature Reviews Methods Primersの記事に掲載されている。
インストールはconda-forge(conda install -c conda-forge umap-learn)またはPyPI(pip install umap-learn)から利用可能である。依存パッケージはscikit-learn、numpy、scipy、numba、tqdm、pynndescentである。オプションの追加機能として、プロット(matplotlib、datashader、holoviews)、Parametric UMAP(TensorFlow)、x86におけるtbb CPU最適化が含まれる。
基本的な使い方はscikit-learnと同様である。
import umap
from sklearn.datasets import load_digits
digits = load_digits()
embedding = umap.UMAP().fit_transform(digits.data)
主要なパラメータには、局所構造と大域構造のどちらをどの程度保存するかを制御するn_neighbors(一般的に5〜50、妥当なデフォルトは10〜15)、点の密集度を制御するmin_dist(0.001〜0.5、妥当なデフォルトは0.1)、入力空間における距離関数を選択するmetricがある。スパース行列の入力もサポートされている。
文書化されている利点には、大規模・高次元データセットにおける高速性、一般的な前処理のための埋め込み次元でのスケーリング、一部の大域構造の保存、コサインや相関などの非計量距離のサポート、transformによる既存の埋め込みへの新しい点の追加、ラベルをyとして渡すことによる教師あり・半教師あり次元削減が含まれる。実験的な機能には、逆変換、双曲埋め込みなどの非ユークリッド埋め込み、不確実性付き埋め込み、予備的なデータフレームサポートがある。
このパッケージはdensMAPも提供しており、densmap=Trueで有効化すると、局所密度情報を保存するようにUMAPを拡張する。densMAPはdens_frac、dens_lambda、dens_var_shift、output_densなどのパラメータを追加し、より大きなn_neighbors値(例:30)を推奨する。Parametric UMAPはニューラルネットワークを学習してUMAPベースの変換を獲得し、未知データに対する高速な推論、より頑健な逆変換、オートエンコーダの変種、半教師あり分類をサポートする。umap.plotサブパッケージは、ホバーツールと診断オプションを備えた基本的およびインタラクティブなプロットを提供する。
GPUアクセラレーションについては、READMEでtorchdrが紹介されている。これはPyTorchベースの実装であり、kNN計算、アフィニティ構築、埋め込み最適化をGPU上で高速化する。
ドキュメントはRead the Docsでホストされており、FAQも含まれている。プロジェクトは3条項BSDライセンスで提供され、貢献を歓迎している。READMEでは、JOSSソフトウェア論文、ArXiv論文、および該当する場合はdensMAP、Parametric UMAP、Nature Primerの参考文献を引用するよう利用者に求めている。
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.