UMAP para descubrir tus datos

6 January 2023| Tags: datos, Machine Learning, UMAP

Introducción

UMAP (Uniform Manifold Approximation and Projection) es un método de reducción de dimensionalidad y clustering de datos. Su objetivo es mapear datos de alta dimensión en un espacio de menor dimensión de manera que se preserve cierta estructura de los datos originales. Esta técnica es muy útil para visualizar y entender mejor conjuntos de datos complejos.

En taniwa llevamos tiempo trabajando con UMAP y hemos visto que es una herramienta muy útil para entender mejor los datos. En este artículo vamos a ver cómo funciona UMAP y cómo podemos utilizarlo en nuestro día a día.

Saber más

El clustering tiene como finalidad principal lograr el agrupamiento de conjuntos de objetos no etiquetados, para lograr construir subconjuntos de datos conocidos como clústers. Cada clúster está formado por una colección de elementos que resultan similares entre sí, pero que poseen elementos diferenciales con respecto a otros objetos pertenecientes al conjunto de datos y que pueden conformar un cluster independiente.

Este tipo de proceso es aplicado en modelos de machine learning de tipo no-supervisado, osea prescindimos de etiquetado o clasificación previa. El Clustering, en este caso sirve para segmentar datos en grupos de dimensiones similares en base a características para facilitar este proceso.

Además aplicamos estrategias de reducción de dimensionalidad que simplifican los modelos, permitiendo identificar qué características son más o menos importantes en el conjunto de datos.

El modelo del que estamos hablando es UMAP [Uniform Manifold Approximation and Projection], que es una técnica de reducción de dimensiones que puede utilizarse para la visualización de forma similar a t-SNE, pero también para la reducción general de dimensiones no lineales. Los detalles de la matemática subyacente pueden encontrarse en el artículo en ArXiv.

En taniwa nos gusta UMAP por (1) su capacidad de separación clara entre los clúster y (2) lo intuitivo de sus representaciones gráficas.

UMAP hace un excelente trabajo separando elementos comparado con t-SNE o PCA. A menudo también funciona mejor preservando la estructura global de los datos que t-SNE. Esto significa que , en general, proporciona una imagen global y completa de los datos a la vez que conserva las relaciones cercanas entre las instancias.

Atentos, siempre hay que ajustar el algoritmo a los datos y hay más opciones que las que vamos a ver aquí, como comentan en este otro artículo

UMAP funciona de la siguiente manera:

  1. Primero, se calcula la distancia entre todos los puntos de datos en el espacio de alta dimensión.
  2. Luego, se construye un grafo en el que cada punto de datos es un nodo y las aristas del grafo conectan puntos de datos cercanos entre sí.
  3. A continuación, se utiliza un algoritmo de optimización para minimizar una función de costo que mide la distorsión del mapeo de alta dimensión a baja dimensión. Esto se hace iterativamente hasta que se encuentra un mapeo óptimo. 4.Una vez que se tiene el mapeo óptimo, los datos se pueden visualizar en el espacio de menor dimensión y se pueden utilizar técnicas de clustering tradicionales para agrupar los datos en clusters.

En cuanto a cómo se compara UMAP con otros algoritmos de clustering, hay algunas ventajas y desventajas a considerar. En general, UMAP es una técnica de reducción de dimensionalidad y clustering muy versátil y puede funcionar bien en una amplia variedad de conjuntos de datos. Sin embargo, a veces puede ser más lento que otros algoritmos debido a la complejidad del proceso de optimización utilizado.

También es importante tener en cuenta que UMAP no es adecuado para todos los tipos de datos y puede no funcionar tan bien en conjuntos de datos con una estructura muy complicada o con mucho ruido.

Ejemplo

Un ejemplo sencillo de UMAP es el siguiente:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
import numpy as np
import umap
import matplotlib.pyplot as plt

# Generamos algunos datos aleatorios de alta dimensión
data = np.random.randn(1000, 10)

# Aplicamos UMAP para reducir la dimensión de los datos a 2D
reducer = umap.UMAP()
embedding = reducer.fit_transform(data)

# Graficamos los datos en el espacio de menor dimensión
plt.scatter(embedding[:, 0], embedding[:, 1])
plt.show()

Si te interesa el tema mírate la página principal de UMAP aquí o pregúntale a ChatGPT como nosotros hemos hecho.

Foto capturada desde UMP explorer

SO WHAT DO YOU THINK ?

Contact us and tell us your needs
+34 644 237 135

Contact hola@taniwa.es