Sobre o projeto
UMAP (Uniform Manifold Approximation and Projection) é uma técnica de redução de dimensionalidade para visualização e incorporação não linear geral, implementada como o pacote Python umap-learn. Foi projetada para funcionar como um transformador do scikit-learn, podendo ser usada como alternativa direta ao t-SNE em pipelines existentes.
O método baseia-se em três suposições: os dados estão uniformemente distribuídos em uma variedade Riemanniana, a métrica Riemanniana é localmente constante e a variedade é localmente conexa. Essas suposições são usadas para construir uma representação topológica difusa, e a incorporação é encontrada buscando uma projeção de baixa dimensionalidade com a estrutura equivalente mais próxima. A matemática é descrita no artigo do ArXiv 1802.03426, com uma introdução mais ampla em um artigo da Nature Reviews Methods Primers.
A instalação está disponível via conda-forge (conda install -c conda-forge umap-learn) ou PyPI (pip install umap-learn). Depende de scikit-learn, numpy, scipy, numba, tqdm e pynndescent. Extras opcionais cobrem plotagem (matplotlib, datashader, holoviews), UMAP paramétrico (TensorFlow) e otimizações de CPU tbb em x86.
O uso básico espelha o scikit-learn:
import umap
from sklearn.datasets import load_digits
digits = load_digits()
embedding = umap.UMAP().fit_transform(digits.data)
Os parâmetros principais incluem n_neighbors, que controla quanta estrutura local versus global é preservada (comumente 5-50, com 10-15 como padrão sensato), min_dist, que controla quão firmemente os pontos são compactados (0,001-0,5, com 0,1 como padrão razoável), e metric, que seleciona a função de distância no espaço de entrada. Entrada de matriz esparsa é suportada.
Os benefícios documentados incluem velocidade em conjuntos de dados grandes e de alta dimensionalidade, escalabilidade na dimensão de incorporação para pré-processamento geral, preservação de alguma estrutura global, suporte a distâncias não métricas como cosseno e correlação, capacidade de adicionar novos pontos a uma incorporação existente via transform e redução supervisionada ou semissupervisionada passando rótulos como y. Recursos experimentais incluem transformação inversa, incorporações não euclidianas como incorporações hiperbólicas, incorporações com incerteza e suporte preliminar a dataframe.
O pacote também fornece densMAP, habilitado com densmap=True, que amplia o UMAP para preservar informações de densidade local. O densMAP adiciona parâmetros como dens_frac, dens_lambda, dens_var_shift e output_dens, e recomenda valores maiores de n_neighbors (por exemplo, 30). O UMAP paramétrico treina uma rede neural para aprender uma transformação baseada em UMAP, suportando inferência mais rápida em dados não vistos, transformações inversas mais robustas, variantes de autoencoder e classificação semissupervisionada. Um subpacote umap.plot oferece plotagem básica e interativa com ferramentas de hover e opções de diagnóstico.
Para aceleração por GPU, o README aponta para torchdr, uma implementação baseada em PyTorch que acelera o cálculo de kNN, a construção de afinidade e a otimização da incorporação na GPU.
A documentação está hospedada no Read the Docs, incluindo um FAQ. O projeto é licenciado sob BSD de 3 cláusulas e aceita contribuições. O README pede que os usuários citem o artigo de software do JOSS, o artigo do ArXiv e, quando aplicável, as referências do densMAP, UMAP paramétrico e Nature Primer.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.