Notas de aprendizaje automático: ¿Qué es UMAP?

1. Descripción general de las UMAP

  La aproximación y proyección de variedad unificada (UMAP) es una técnica de reducción de dimensionalidad que se puede utilizar para visualizaciones similares a t-SNE, pero también para la reducción de dimensionalidad no lineal general. UMAP es un algoritmo de reducción de dimensionalidad basado en múltiples tecnologías de aprendizaje e ideas de análisis de datos topológicos. Proporciona un marco muy general para tratar el aprendizaje múltiple y la reducción de la dimensionalidad, pero también puede proporcionar implementaciones concretas concretas.

  El algoritmo se basa en tres suposiciones sobre los datos:

  Los datos se distribuyen uniformemente en la variedad de Riemann; la
  métrica de Riemann es localmente constante (o se puede aproximar);
  las variedades están localmente conectadas.

  Sobre la base de estos supuestos, las variedades se pueden modelar con topologías difusas. Las incrustaciones se encuentran buscando proyecciones de baja dimensión de los datos con la topología difusa equivalente más cercana.
  UMAP ofrece muchas ventajas sobre t-SNE, sobre todo una mayor velocidad y una mejor conservación de la estructura global de los datos.

  El núcleo de UMAP es muy similar a t-SNE: ambos usan un algoritmo de diseño de gráficos para organizar los datos en un espacio de baja dimensión. En el sentido más simple, UMAP crea una representación gráfica de alta dimensión de los datos y luego optimiza la gráfica de baja dimensión para que sea lo más similar posible en estructura. Si bien las matemáticas que usa UMAP para construir gráficos de alta dimensión son avanzadas, la intuición detrás de ellos es bastante simple.

  Para construir el gráfico inicial de alta dimensión, UMAP construye algo llamado "complejo simplicial difuso". Esto es realmente solo una representación de un gráfico ponderado, con pesos de borde que representan la probabilidad de que dos puntos estén conectados. Para determinar la conectividad, UMAP extiende un radio hacia afuera desde cada punto, conectando puntos cuando estos radios se superponen. Elegir este radio es fundamental: elegir demasiado pequeño dará como resultado grupos pequeños y aislados, mientras que elegir demasiado grande conectará todo. UMAP supera este desafío eligiendo localmente un radio basado en la distancia al vecino más cercano de cada punto n. Luego, UMAP "difumina" el gráfico al reducir la probabilidad de conexiones a medida que crece el radio. Finalmente, al especificar que cada punto debe estar conectado al menos con su vecino más cercano, UMAP asegura que la estructura local esté equilibrada con la estructura global.

2. Instalación UMAP

  UMAP depende de scikit-learn, por lo que scikit-learn depende de numpy y scipy.

pip instalar umap-aprender

(1) función de dibujo

  UMAP incluye un subpaquete umap.plot para trazar los resultados de incrustación de UMAP. Este paquete debe importarse por separado porque tiene dependencias adicionales (matplotlib, datashader y holoviews). Permite un dibujo rápido y fácil. Ejemplo de uso:

import umap
import umap.plot
from sklearn.datasets import load_digits

digits = load_digits()

mapper = umap.UMAP().fit(digits.data)
umap.plot.points(mapper, labels=digits.target)

  Si desea utilizar la función de dibujo, puede instalarla con el siguiente comando

pip install umap-learn[gráfico]

(2) UMAP parametrizado

  El parámetro UMAP proporciona soporte para entrenar redes neuronales para aprender transformaciones de datos basadas en UMAP. Esto se puede usar para admitir una inferencia más rápida sobre nuevos datos no vistos, transformaciones inversas más potentes, versiones de UMAP con codificador automático y clasificación semisupervisada (especialmente para datos que están bien separados por UMAP y una cantidad muy limitada de datos etiquetados).
  Si desea utilizar UMAP paramétrico, debe instalar Tensorflow

pip instalar umap-aprender[parametric_umap]

3. Uso de las UMAP

import umap
from sklearn.datasets import load_digits
digits = load_digits()
embedding = umap.UMAP(n_neighbors=5,
	min_dist=0.3,
	metric='correlation').fit_transform(digits.data)
umap.plot.points(mapper, labels=digits.target)

  Los principales parámetros que puede configurar UMAP son los siguientes:

  n_neighbors: Esto determina el número de vecinos utilizados en la aproximación local de la estructura múltiple. Los valores más grandes harán que se conserve una mayor estructura global a costa de la pérdida de la estructura local detallada. En general, este parámetro debe estar a menudo en el rango de 5 a 50, eligiendo de 10 a 15 como un valor predeterminado razonable.

  min_dist: esto controla la fuerza con la que la incrustación permite que los puntos se compriman juntos. Los valores más grandes aseguran una distribución más uniforme de los puntos incrustados, mientras que los valores más pequeños permiten que el algoritmo se optimice con mayor precisión para las estructuras locales. Los valores razonables están en el rango de 0,001 a 0,5, siendo 0,1 un valor predeterminado razonable.

  Métrica: Esto determina la elección de la métrica utilizada para medir distancias en el espacio de entrada. Se ha codificado una amplia variedad de métricas, y se puede pasar una función definida por el usuario siempre que numba la haya JIT.

(1) Ejemplo 1

  UMAP es muy eficaz para incorporar grandes conjuntos de datos de gran dimensión. En particular, escala bien tanto en la dimensión de entrada como en la dimensión de incrustación. Para obtener el mejor rendimiento, recomendamos instalar la biblioteca de cálculo vecina más cercana, pynndescent. UMAP puede ejecutarse sin él, pero se ejecutará más rápido si está instalado, especialmente en máquinas de varios núcleos.

  Para problemas como el conjunto de datos de dígitos MNIST de 784 dimensiones con 70 000 muestras de datos, UMAP puede integrarse en menos de un minuto (en comparación con los 45 minutos de la implementación t-SNE de scikit-learn). A pesar de esta eficiencia de tiempo de ejecución, UMAP aún produce incrustaciones de alta calidad.

  Conjunto de datos de dígitos MNIST obligatorio, integrado en 42 segundos con un procesador Intel Core i7 de 3,1 GHz (n_neighbors=10, min_dist=0,001) (después de instalar pynndescent y calentar numba jit):
Conjunto de datos de dígitos MNIST

(2) Ejemplo 2

  El conjunto de datos "Fashion MNIST" (también 70 000 muestras de datos en 784 dimensiones). UMAP generó esta incrustación en 49 segundos (n_neighbors=5, min_dist=0.1)
Moda MNIST

(3) Ejemplo 3

El conjunto de datos de UCI Shuttle (43500 muestras en 8 dimensiones) incorpora bien la distancia de correlación en 44 segundos (tenga en cuenta que el cálculo de la distancia de correlación lleva más tiempo):
Conjunto de datos de UCI Shuttle

Supongo que te gusta

Origin blog.csdn.net/bashendixie5/article/details/124400062
Recomendado
Clasificación