6 · Jerárquico + DBSCAN: clusters de cualquier forma
Cuando la suposición de clusters esféricos de K-Means falla, recurre al clustering jerárquico o DBSCAN — basado en densidad, nativo para outliers, sin necesidad de K.
Cuando la suposición de clusters esféricos de K-Means falla, recurre al clustering jerárquico (sin necesidad de K) o DBSCAN (maneja formas arbitrarias + outliers de forma nativa).
Sin esto:
Sin alternativas, K-Means en un dataset con forma de media luna da resultados basura y no sabrías por qué.
K-Means funciona perfectamente cuando los clusters son aproximadamente esféricos y de tamaño similar. Pero muchos datasets reales tienen estructuras que K-Means no puede representar — medias lunas, anillos, cadenas, o datasets con outliers. Dos algoritmos abordan estos fallos:
El clustering jerárquico (aglomerativo) comienza con cada punto como su propio cluster, luego fusiona repetidamente los dos clusters más cercanos hasta que todos los puntos pertenecen a un único cluster. Esto construye un dendrograma — un árbol de fusiones. Puedes cortar el dendrograma a cualquier altura para obtener cualquier número de clusters de 1 a N. La elección clave es el criterio de enlace, que define "más cercano" entre dos clusters:
| Enlace | Distancia entre clusters A y B | |---|---| | Simple | distancia mínima entre cualquier punto en A y cualquier punto en B | | Completo | distancia máxima entre cualquier punto en A y cualquier punto en B | | Promedio | distancia media entre todos los pares (A, B) | | Ward | minimizar el aumento de varianza dentro del cluster en la fusión (similar al objetivo de K-Means) |
El enlace Ward es generalmente el mejor predeterminado — produce clusters compactos y de tamaño similar.
DBSCAN (Clustering Espacial Basado en Densidad de Aplicaciones con Ruido) funciona de manera completamente diferente. Define la estructura a través de la densidad:
- Un punto es un punto núcleo si tiene ≥
min_samplesvecinos dentro de la distanciaeps. - Un punto es un punto frontera si está dentro de
epsde un punto núcleo pero tiene menos demin_samplesvecinos. - Un punto es ruido (etiqueta = −1) si no es ni núcleo ni alcanzable desde ningún punto núcleo.
- Un cluster = un punto núcleo + todos los puntos alcanzables desde él (directa o transitivamente).
El superpoder de DBSCAN: puede descubrir clusters de cualquier forma — medias lunas, anillos, cadenas — sin especificar K. Su etiqueta de ruido identifica nativamente los outliers. Debilidad: los hiperparámetros eps y min_samples son difíciles de elegir sin conocimiento del dominio.
Python (in browser)
Dendrograma de clustering jerárquico Ward — grandes saltos en la altura de fusión marcan los límites naturales de los clusters. Cortar en K=4 produce los cuatro clusters de blobs.
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Python (in browser)
K-Means vs DBSCAN en el dataset de medias lunas (make_moons) — K-Means corta cada media luna a la mitad; DBSCAN recupera perfectamente los dos brazos.
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Python (in browser)
DBSCAN con 10 outliers inyectados — la etiqueta de ruido (−1) los identifica de forma nativa sin un paso separado de detección de anomalías.
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Python (in browser)
Rejilla de hiperparámetros 3×3 de DBSCAN en make_moons — eps demasiado pequeño fragmenta los clusters; eps demasiado grande fusiona todo; min_samples controla la tolerancia al ruido.
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Guía de selección de algoritmos — cuándo elegir K-Means vs jerárquico vs DBSCAN.
En el dataset make_moons, ¿por qué K-Means falla en recuperar las dos medias lunas?
- El clustering jerárquico (Ward) construye un dendrograma de abajo hacia arriba — córtalo a cualquier altura para obtener cualquier K sin reajustar.
- DBSCAN define clusters vía conectividad de densidad — un punto es núcleo si tiene ≥ min_samples vecinos dentro de eps; los puntos de ruido (etiqueta=−1) son outliers naturales.
- DBSCAN encuentra clusters de forma arbitraria (medias lunas, anillos) porque usa conectividad de densidad, no límites de Voronoi — no se requiere la suposición de K-Means de clusters esféricos.
- Elegir eps y min_samples para DBSCAN es la parte difícil — usa la heurística del gráfico de distancia k como punto de partida, luego ajusta visualmente.
- Selección de algoritmo: K-Means para clusters esféricos + K conocida; Jerárquico para exploración de jerarquía; DBSCAN para formas arbitrarias + outliers + K desconocida.
Detección de anomalías (la etiqueta de ruido de DBSCAN = anomalía); clustering de journeys de clientes con métodos jerárquicos; clustering espacial / GIS de incidentes usando DBSCAN; los heatmaps de expresión génica usan los dendrogramas del clustering jerárquico.
Si lo quitas: Te quedarías atascado con K-Means y producirías clusterings incorrectos en cada dataset con forma no blob.