5 · Elegir K: codo, silueta, k-means++
Dos diagnósticos te dicen K: el codo en inercia vs K, y el pico de la puntuación de silueta — más por qué k-means++ te da ventaja.
Dos diagnósticos te dicen K: el codo en inercia vs K, y el pico de la puntuación de silueta.
Sin esto:
Sin estos, elegir K es pura adivinanza.
K-Means requiere que especifiques K de antemano — pero los datos del mundo real raramente te dicen cuántos clusters esperar. Dos diagnósticos clásicos te ayudan a elegir:
1. El método del codo grafica la inercia vs K. A medida que K aumenta, añadir un nuevo cluster siempre reduce la inercia (en el extremo, K = N da inercia cero). La idea: busca el codo — la K más allá de la cual añadir más clusters deja de reducir mucho la inercia. Es una heurística, no un teorema, pero es rápida y a menudo útil.
2. Puntuación de silueta — para cada punto i, calcula:
s(i) = (b(i) − a(i)) / max(a(i), b(i))
donde a(i) = distancia media a todos los demás puntos en el mismo cluster (cohesión), y b(i) = distancia media a todos los puntos en el otro cluster más cercano (separación). La silueta va de −1 a 1:
- +1 → el punto está perfectamente en su propio cluster y lejos de los vecinos
- 0 → el punto está en el límite entre dos clusters
- −1 → el punto está más cerca de otro cluster que del suyo propio (probablemente mal asignado)
La puntuación de silueta media de todos los puntos es una métrica de calidad resumida — mayor es mejor. Grafícala vs K y elige el pico.
3. Inicialización K-Means++ — En lugar de centroides iniciales completamente aleatorios, k-means++ elige el primer centroide uniformemente al azar, luego elige cada centroide posterior con probabilidad proporcional a la distancia al cuadrado desde el centroide existente más cercano. Esto dispersa deliberadamente los centroides iniciales, dando al algoritmo de Lloyd un punto de partida mucho mejor.
Dos métricas adicionales para contrastar tu elección:
- Índice de Davies-Bouldin (DB) — razón de dispersión dentro del cluster a separación entre clusters; menor es mejor.
- Índice de Calinski-Harabasz (CH) — razón de dispersión entre clusters a dentro del cluster; mayor es mejor.
Python (in browser)
Gráfica del codo — la inercia disminuye bruscamente hasta K=5 y se aplana después. La línea roja discontinua marca el K verdadero.
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Python (in browser)
La puntuación de silueta alcanza su pico en K=5 — esto coincide con la gráfica del codo y el número verdadero de clusters.
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Python (in browser)
20 pruebas comparando inicialización aleatoria vs k-means++ — k-means++ logra consistentemente menor inercia media con menos varianza.
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Python (in browser)
Las tres métricas coinciden en K=5 — la silueta alcanza el pico (mayor es mejor), Davies-Bouldin está cerca del mínimo (menor es mejor), Calinski-Harabasz alcanza el pico (mayor es mejor).
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Guía de decisión — cuándo el codo, la silueta, DB y CH no coinciden en el mejor K.
Si la puntuación de silueta para un clustering es 0.05, la calidad del clustering es...
- El método del codo grafica la inercia vs K — busca el giro donde añadir clusters deja de pagar en compacidad.
- La puntuación de silueta = (b−a)/max(a,b) va de −1 a +1; mayor es mejor; elige la K con la silueta media más alta.
- K-Means++ dispersa los centroides iniciales lejos entre sí (proporcional a la distancia al cuadrado), alcanzando consistentemente mejores soluciones que la inicialización puramente aleatoria.
- Davies-Bouldin (menor es mejor) y Calinski-Harabasz (mayor es mejor) proporcionan verificaciones adicionales; cuando los diagnósticos no coinciden, confía en la silueta y la inspección visual.
- K-Means++ ha sido el predeterminado de sklearn desde v0.23 — lo obtienes automáticamente sin especificar init.
Selección del número de segmentos de clientes en análisis de marketing; selección del número de temas en NLP no supervisado (modelos de temas LDA); conteo de clusters en pipelines de reducción de dimensionalidad y luego clustering.
Si lo quitas: Defaultearías a K=3 o K=5 por superstición.