UMAP: Ferramenta Poderosa de Visualização e Detecção de Anomalias

insira a descrição da imagem aqui

O mais importante na redução da dimensionalidade dos dados é reduzir a dimensionalidade dos dados mantendo o máximo possível de informações originais, sendo os mais conhecidos o PCA e o tSNE, mas ambos apresentam alguns problemas.

A velocidade do PCA é relativamente rápida, mas ao custo de perder muitas informações estruturais subjacentes após a redução de dados; tSNE pode preservar a estrutura subjacente dos dados, mas a velocidade é muito lenta;
UMAP é um algoritmo de redução e visualização de dimensionalidade proposto em 2018, que usa aproximação e projeção de forma uniforme de fluxo (UMAP), que pode não apenas obter a vantagem de velocidade do PCA, mas também reter o máximo de informações de dados possível, e seu efeito de visualização também é muito bonito, como segue:

UMAP tem algumas grandes vitórias em sua encarnação atual.

Introdução ao Umap
Unified Manifold Aproximação e Projeção (UMAP) é uma técnica de redução de dimensionalidade que pode ser usada para visualizações semelhantes a t-SNE, mas também para redução geral de dimensionalidade não linear. O algoritmo é baseado em três suposições sobre os dados:

  • Os dados são distribuídos uniformemente na variedade Riemanniana;
  • A métrica Riemanniana é uma constante local (ou pode ser aproximada);
  • Os coletores são conectados localmente.

Com base nessas suposições, as variedades podem ser modeladas com topologias fuzzy. Embeddings são encontrados procurando projeções de baixa dimensão dos dados com a topologia fuzzy equivalente mais próxima.
Primeiro, UMAP é rápido. Ele pode lidar com grandes conjuntos de dados e dados de alta dimensão sem esforço, além do que a maioria dos pacotes t-SNE pode gerenciar. Isso inclui conjuntos de dados esparsos de dimensões muito altas. UMAP foi usado com sucesso diretamente com dados em mais de um milhão de dimensões.

Em segundo lugar, UMAP escala bem na dimensão de incorporação - não é apenas para visualização! Você pode usar UMAP como uma técnica geral de redução de dimensionalidade como uma etapa preliminar para outras tarefas de aprendizado de máquina. Com um pouco de atenção, funciona bem com a biblioteca de cluster hdbscan (consulte Clustering com UMAP para obter mais detalhes).

Terceiro, em comparação com a maioria das implementações de t-SNE, o UMAP geralmente tem melhor desempenho na preservação de alguns aspectos da estrutura global dos dados. Isso significa que muitas vezes fornece uma melhor visão geral de seus dados e preserva os relacionamentos com os vizinhos locais.

Quarto, UMAP suporta uma variedade de funções de distância, incluindo funções de distância não métricas, como distância de cosseno e distância de correlação. Você pode finalmente incorporar vetores de palavras usando a distância do cosseno!

Quinto, UMAP suporta a adição de novos pontos a embeddings existentes por meio de métodos de transformação sklearn padrão. Isso significa que UMAP pode ser usado como um transformador de pré-processamento em pipelines sklearn.

Sexto, UMAP suporta redução de dimensionalidade supervisionada e semi-supervisionada. Isso significa que, se você quiser usar as informações do rótulo como informação extra para redução de dimensionalidade (mesmo que seja apenas um rótulo parcial), poderá fazê-lo - tão simples quanto fornecê-lo como o parâmetro y no método de ajuste.

Sétimo, UMAP suporta uma variedade de recursos experimentais adicionais, incluindo: uma "transformada inversa" que aproxima uma amostra de alta dimensão que será mapeada para um determinado local no espaço de incorporação; a capacidade de incorporar em espaços não euclidianos, Inclui incorporações hiperbólicas e embeddings com incerteza; há também um suporte muito rudimentar para embedding de quadros de dados.

Finalmente, UMAP tem uma base teórica sólida em aprendizagem múltipla (veja nosso artigo sobre ArXiv). Isso justifica a abordagem e permite outras extensões que serão adicionadas à biblioteca em breve.

código mostrar como abaixo:

import umap
import umap.plot
from sklearn.impute import SimpleImputer
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import QuantileTransformer
from sklearn.datasets import load_digits

X, y = load_digits(return_X_y=True)
pipe = make_pipeline(SimpleImputer(), QuantileTransformer())
X_processed = pipe.fit_transform(X)
manifold = umap.UMAP().fit(X_processed, y)
umap.plot.points(manifold, labels=y, theme="fire")

insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/m0_47256162/article/details/122506244
Recomendado
Clasificación