WhatsApp

  
¿Que es UMAP?

Introducción

UMAP, abreviatura de Aproximación y Proyección Uniforme de Manifold, es una técnica de reducción de dimensionalidad que ha ganado popularidad en el análisis de datos por su capacidad para preservar estructuras complejas de alta dimensión en un espacio de dimensiones bajas. En este blog, exploraremos qué es UMAP, cómo funciona y cómo se puede utilizar para visualizar y analizar datos de alta dimensión de manera eficiente.

¿Qué es UMAP?:

UMAP es un algoritmo de aprendizaje no supervisado que aproxima la estructura de los datos de alta dimensión a través de la construcción de un grafo ponderado que representa las relaciones entre los puntos de datos. Luego, utiliza técnicas de optimización para encontrar una proyección en un espacio de dimensiones bajas que conserve las relaciones locales y globales en los datos de alta dimensión.

Principales Características de UMAP

  • Preservación de Estructuras Complejas: UMAP es capaz de preservar estructuras complejas como agrupaciones, curvas y manifolds en datos de alta dimensión.
  • Eficiencia Computacional: UMAP es relativamente rápido y escalable, lo que lo hace adecuado para conjuntos de datos grandes.
  • Flexibilidad: UMAP ofrece flexibilidad en la elección de parámetros, lo que permite ajustar el algoritmo según las características específicas de los datos y los objetivos del análisis.

Cómo Funciona UMAP

  • Construcción del Grafo de Vecinos: UMAP construye un grafo de vecinos ponderado que captura las relaciones locales entre los puntos de datos en el espacio de alta dimensión.
  • Optimización de la Proyección: Utiliza técnicas de optimización para encontrar una proyección en un espacio de dimensiones bajas que preserva las relaciones del grafo de vecinos.
  • Optimización de la Distancia Cruzada: UMAP optimiza una función de distancia cruzada que mide la discrepancia entre las distancias en el espacio de alta dimensión y el espacio proyectado.

Aplicaciones de UMAP

  • Visualización de Datos: UMAP se utiliza comúnmente para visualizar conjuntos de datos de alta dimensión en espacios de dimensiones bajas, lo que facilita la exploración y comprensión de la estructura de los datos.
  • Análisis de Agrupamientos: UMAP puede ayudar a identificar patrones y estructuras en los datos, lo que puede ser útil en tareas de agrupamiento y clasificación.
  • Reducción de Dimensiones para Aprendizaje Automático: UMAP puede servir como paso previo a algoritmos de aprendizaje automático, reduciendo la dimensionalidad de los datos sin perder información importante.

Ejemplo práctico

Para este ejemplo te recomiendo usar una libreta en Python, el archivo deberá tener la extensión: .ipynb

  1. Instalación: Puedes instalar UMAP utilizando pip, el administrador de paquetes de Python. Ejecuta el siguiente comando en tu terminal o símbolo del sistema:
                               pip install umap-lear

    2. Importa las bibliotecas necesarias:

    import pandas as pd
    import matplotlib.pyplot as plt
    import numpy as np
    import plotly.express as pxfrom sklearn.datasets
    import load_digitsfrom sklearn.model_selection             
    import train_test_split

    3. Prepara los datos y etiquetas y explora las dimensiones de los datos.

    X,y=load_digits(return_X_y=True)
    fig,axs=plt.subplots(2,5,sharey=False,tight_layout=True,figsize=(12,6))
    plt.gray()
    n=0
    for i in range(2):   
        for j in range(5):       
            axs[i,j].matshow(digitos.images[n])       
            axs[i,j].set(title=y[n])       
    n+=1plt.show()
  • 4. Dimensiones del Conjunto de Datos: Antes de cualquier transformación, es           fundamental conocer las dimensiones de nuestro conjunto de datos. Aquí verificamos la forma de las imágenes, lo que nos da una idea de la cantidad de imágenes y su dimensionalidad.
                                        X.shape
                                        y.shape
  • 5.  Configuración de UMAP

Para aplicar UMAP, primero definimos sus parámetros. Estos parámetros determinarán cómo se realiza la reducción de dimensionalidad y pueden influir en la calidad de la visualización.

Parámetros de UMAP

Estamos inicializando UMAP con una serie de parámetros específicos. A continuación, se describe el propósito y significado de cada parámetro:

  • n_neighbors: Es el número de vecinos cercanos que UMAP considerará al trazar la estructura subyacente de los datos. Un valor de 100 indica que UMAP observará los 100 vecinos más cercanos. Este parámetro puede influir en la granularidad de la reducción; valores más bajos tienden a enfocarse en estructuras locales, mientras que valores más altos pueden enfocarse en estructuras más globales.
  • n_components`: Es el número de dimensiones en las que se quiere reducir los datos. En este caso, estamos reduciendo los datos a 3 dimensiones.
  • metric: Es la métrica que UMAP usará para medir distancias en el espacio de alta dimensión. Estamos utilizando la métrica euclidiana, que es la medida de distancia estándar en la geometría.
  • min_dist: Es una restricción para evitar que los puntos se acerquen demasiado entre sí en el espacio de baja dimensión. Un valor de 0.5 asegura que hay cierta dispersión en la visualización.
  • local_connectivity: Es el número de vecinos más cercanos que se usarán para la conectividad local en una estructura de KNN. En este caso, estamos considerando 2 vecinos para la conectividad local.
  • random_state: Es una semilla para el generador de números aleatorios, asegurando que los resultados sean reproducibles.

Estos parámetros han sido seleccionados para adaptarse a la naturaleza y estructura de nuestros datos, y pueden influir en cómo UMAP reduce la dimensionalidad y visualiza el conjunto de datos.

reductor=UMAP(n_neighbors=100, 
              n_components=3,
metric='euclidean',
min_dist=0.1,random_state=0)

    6. Aplicar UMAP y visualizacion de datos:

x_trans=reductor.fit_transform(X)x_trans.shape
def graficar_umap(x,y): arr_concat=np.concatenate(( x,y.reshape(y.shape[0],1)),axis=1) df=pd.DataFrame(arr_concat, columns=['x','y','z','e']) df['e']=df['e'].astype(int) df.sort_values(by='e',axis=0, ascending=True, inplace=True) fig=px.scatter_3d(df,x='x',y='y',z='z', color=df['e'].astype(str)) fig.update_traces(marker=dict( size=3,line=dict(color='black', width=0.1))) fig.show()  graficar_umap(x_trans,y)

Resultado

Conclusión

UMAP es una herramienta poderosa en el análisis de datos que permite explorar y comprender la estructura de datos de alta dimensión de manera eficiente. Con una comprensión básica de cómo funciona UMAP y algunos ejemplos prácticos, puedes comenzar a aplicar esta técnica en tus propios proyectos de análisis de datos.


Kevin Rodríguez 29 abril, 2024
Compartir


Iniciar sesión dejar un comentario

  
Reducción de dimensiones en análisis de datos sin perder información