Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Aprendizaje no supervisado, Unidad 5 — Evaluación de clustering, 5.2 — Métricas habituales ·

Distancia intra/inter cluster

Distancia intra/inter cluster

Introducción

En el ámbito del aprendizaje no supervisado, los clusters son una forma de agrupar datos similares entre sí. Para evaluar la calidad de estos clusters, uno de los enfoques más comunes es analizar la distancia entre los puntos dentro y fuera de un cluster (distancia intra/inter cluster). Esta métrica nos ayuda a comprender cómo se comportan los grupos formados y si están bien definidos.

Explicación principal

La distancia intra-cluster mide, en promedio, la proximidad de los elementos dentro del mismo grupo. Mientras que la distancia inter-cluster mide la separación entre diferentes grupos. La idea es que los clusters deben estar compactos (baja distancia intra) y bien separados (alta distancia inter).

A continuación, veremos cómo calcular estas distancias con un ejemplo sencillo utilizando el algoritmo de clustering K-means en Python.

import numpy as np
from sklearn.cluster import KMeans

# Generamos una muestra aleatoria de datos bidimensionales
np.random.seed(0)
X = np.random.randn(100, 2)

# Aplicamos K-means con k=3 clusters
kmeans = KMeans(n_clusters=3, random_state=42).fit(X)

# Obtenemos las etiquetas y los centroides
labels = kmeans.labels_
centroids = kmeans.cluster_centers_

print("Etiquetas:", labels)
print("Centroides:", centroids)

Distancia intra-cluster

Para calcular la distancia intra-cluster, podemos usar la función sklearn.metrics.pairwise_distances junto con las etiquetas obtenidas del modelo.

from sklearn.metrics import pairwise_distances

# Calculamos la matriz de distancias intra-cluster para cada cluster
dist_intra = [pairwise_distances(X[labels == i], centroids[i].reshape(1, -1)).mean() for i in range(kmeans.n_clusters)]

print("Distancia intra-cluster:", dist_intra)

Distancia inter-cluster

Para calcular la distancia inter-cluster, podemos usar el mismo método pero entre los centroides de diferentes clusters.

# Calculamos la matriz de distancias inter-cluster entre los centroides
dist_inter = [pairwise_distances([centroids[i]], [centroids[j]]).flatten()[0] for i in range(kmeans.n_clusters) for j in range(i + 1, kmeans.n_clusters)]

print("Distancia inter-cluster:", dist_inter)

Errores típicos / trampas

1. Interpretación errónea de la distancia intra-cluster

Una de las principales trampas es pensar que una baja distancia intra-cluster significa automáticamente un buen clustering. En realidad, puede deberse a clusters muy compactos pero también a clusters con mucho ruido o outliers.

2. Falta de normalización

Si los datos no están escalados correctamente, la distancia puede ser dominada por las características con mayor varianza, distorsionando el resultado.

3. Omitir la validación externa

Dependiendo del contexto, es importante verificar si los clusters corresponden a grupos reales en el dominio de aplicación. Un buen valor numérico no garantiza un clustering práctico o significativo.

Checklist accionable

  1. Verifica la escala de tus datos: Asegúrate de que todas las características estén en la misma escala para evitar distorsiones.
  2. Normaliza los datos: Utiliza técnicas como Min-Max scaling o StandardScaler para asegurar una mejor interpretación.
  3. Comprueba el número óptimo de clusters: No se debe basar solo en el valor numérico de la distancia, sino también en validaciones externas y análisis exploratorios.
  4. Analiza gráficamente los resultados: Visualiza los clusters para ver si están bien definidos y separados.
  5. Evalúa el rendimiento con múltiples métricas: Utiliza Silhouette score o Davies-Bouldin index como complemento a la distancia intra/inter.

Cierre

La evaluación de clustering es crucial para garantizar que los clusters sean significativos y útiles en tu análisis. La distancia intra/inter cluster es una herramienta poderosa pero debe usarse con cuidado, evitando errores comunes y validando las conclusiones en el contexto real del problema.

Siguientes pasos

  • Aplica estas técnicas a otros algoritmos de clustering: Asegúrate de que también se adapten a otros métodos como DBSCAN o hierarchical clustering.
  • Prueba con diferentes conjuntos de datos: Observa cómo varían los resultados y analiza las diferencias para entender mejor el comportamiento del clustering en diversos escenarios.
  • Aprende a interpretar gráficamente los clusters: Visualizaciones como scatter plots o dendrogramas pueden proporcionar insights valiosos.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).