À propos du projet
UMAP (Uniform Manifold Approximation and Projection) est une technique de réduction de dimensionnalité pour la visualisation et l'embedding non linéaire général, implémentée sous forme du paquet Python umap-learn. Elle est conçue pour fonctionner comme un transformateur scikit-learn, ce qui permet de l'utiliser comme alternative directe au t-SNE dans les pipelines existants.
La méthode repose sur trois hypothèses : les données sont uniformément distribuées sur une variété riemannienne, la métrique riemannienne est localement constante, et la variété est localement connexe. Ces hypothèses servent à construire une représentation topologique floue, et l'embedding est trouvé en recherchant une projection de faible dimension avec la structure équivalente la plus proche. Les mathématiques sont décrites dans l'article ArXiv 1802.03426, avec une introduction plus large dans un article Nature Reviews Methods Primers.
L'installation est disponible via conda-forge (conda install -c conda-forge umap-learn) ou PyPI (pip install umap-learn). Elle dépend de scikit-learn, numpy, scipy, numba, tqdm et pynndescent. Des extras optionnels couvrent le traçage (matplotlib, datashader, holoviews), UMAP paramétrique (TensorFlow) et les optimisations CPU tbb sur x86.
L'utilisation de base reflète scikit-learn :
import umap
from sklearn.datasets import load_digits
digits = load_digits()
embedding = umap.UMAP().fit_transform(digits.data)
Les paramètres clés incluent n_neighbors, qui contrôle la quantité de structure locale par rapport à globale préservée (généralement 5-50, avec 10-15 comme défaut raisonnable), min_dist, qui contrôle la compacité des points (0,001-0,5, avec 0,1 comme défaut raisonnable), et metric, qui sélectionne la fonction de distance dans l'espace d'entrée. L'entrée de matrice creuse est prise en charge.
Les avantages documentés incluent la vitesse sur les grands ensembles de données à haute dimensionnalité, la mise à l'échelle en dimension d'embedding pour le prétraitement général, la préservation d'une certaine structure globale, le support de distances non métriques telles que le cosinus et la corrélation, la capacité d'ajouter de nouveaux points à un embedding existant via transform, et la réduction supervisée ou semi-supervisée en passant des étiquettes comme y. Les fonctionnalités expérimentales incluent la transformée inverse, les embeddings non euclidiens tels que les embeddings hyperboliques, les embeddings avec incertitude et un support préliminaire des dataframes.
Le paquet fournit également densMAP, activé avec densmap=True, qui augmente UMAP pour préserver les informations de densité locale. densMAP ajoute des paramètres tels que dens_frac, dens_lambda, dens_var_shift et output_dens, et recommande des valeurs plus grandes de n_neighbors (par exemple 30). UMAP paramétrique entraîne un réseau de neurones pour apprendre une transformation basée sur UMAP, prenant en charge une inférence plus rapide sur des données non vues, des transformées inverses plus robustes, des variantes d'autoencodeur et une classification semi-supervisée. Un sous-paquet umap.plot offre un traçage de base et interactif avec des outils de survol et des options de diagnostic.
Pour l'accélération GPU, le README pointe vers torchdr, une implémentation basée sur PyTorch qui accélère le calcul kNN, la construction d'affinités et l'optimisation d'embedding sur GPU.
La documentation est hébergée sur Read the Docs, y compris une FAQ. Le projet est sous licence BSD à 3 clauses et accueille les contributions. Le README demande aux utilisateurs de citer l'article logiciel JOSS, l'article ArXiv et, le cas échéant, les références densMAP, UMAP paramétrique et Nature Primer.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.