Sobre el proyecto
UMAP (Uniform Manifold Approximation and Projection) es una técnica de reducción de dimensionalidad para visualización y embedding no lineal general, implementada como el paquete de Python umap-learn. Está diseñado para funcionar como un transformador de scikit-learn, por lo que puede usarse como alternativa directa a t-SNE en canalizaciones existentes.
El método se basa en tres supuestos: los datos se distribuyen uniformemente sobre una variedad riemanniana, la métrica riemanniana es localmente constante y la variedad es localmente conexa. Estos supuestos se usan para construir una representación topológica difusa, y el embedding se encuentra buscando una proyección de baja dimensión con la estructura equivalente más cercana. La matemática se describe en el artículo de ArXiv 1802.03426, con una introducción más amplia en un artículo de Nature Reviews Methods Primers.
La instalación está disponible a través de conda-forge (conda install -c conda-forge umap-learn) o PyPI (pip install umap-learn). Depende de scikit-learn, numpy, scipy, numba, tqdm y pynndescent. Los extras opcionales cubren trazado (matplotlib, datashader, holoviews), UMAP paramétrico (TensorFlow) y optimizaciones de CPU tbb en x86.
El uso básico refleja scikit-learn:
import umap
from sklearn.datasets import load_digits
digits = load_digits()
embedding = umap.UMAP().fit_transform(digits.data)
Los parámetros clave incluyen n_neighbors, que controla cuánta estructura local frente a global se preserva (comúnmente 5-50, con 10-15 como valor predeterminado sensato), min_dist, que controla cuán juntos se empaquetan los puntos (0.001-0.5, con 0.1 como valor predeterminado razonable), y metric, que selecciona la función de distancia en el espacio de entrada. Se admite la entrada de matriz dispersa.
Los beneficios documentados incluyen velocidad en conjuntos de datos grandes y de alta dimensionalidad, escalado en la dimensión de embedding para preprocesamiento general, preservación de cierta estructura global, soporte para distancias no métricas como coseno y correlación, la capacidad de añadir nuevos puntos a un embedding existente mediante transform, y reducción supervisada o semisupervisada pasando etiquetas como y. Las características experimentales incluyen transformación inversa, embeddings no euclidianos como embeddings hiperbólicos, embeddings con incertidumbre y soporte preliminar para dataframe.
El paquete también proporciona densMAP, habilitado con densmap=True, que aumenta UMAP para preservar información de densidad local. densMAP añade parámetros como dens_frac, dens_lambda, dens_var_shift y output_dens, y recomienda valores mayores de n_neighbors (p. ej., 30). UMAP paramétrico entrena una red neuronal para aprender una transformación basada en UMAP, lo que admite inferencia más rápida en datos no vistos, transformaciones inversas más robustas, variantes de autoencoder y clasificación semisupervisada. Un subpaquete umap.plot ofrece trazado básico e interactivo con herramientas de hover y opciones de diagnóstico.
Para la aceleración por GPU, el README apunta a torchdr, una implementación basada en PyTorch que acelera el cálculo de kNN, la construcción de afinidad y la optimización de embedding en GPU.
La documentación está alojada en Read the Docs, incluida una FAQ. El proyecto tiene licencia BSD de 3 cláusulas y acepta contribuciones. El README pide a los usuarios que citen el artículo de software de JOSS, el artículo de ArXiv y, cuando corresponda, las referencias de densMAP, UMAP paramétrico y Nature Primer.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.