Cuando usas k-means tienes que decidir algo incómodo de entrada: cuántos grupos, k, vas a buscar en el conjunto de datos. Y como el algoritmo no lo decide por ti, casi todo el mundo recurre al mismo truco: el método del codo. Dibujas una curva, buscas el “punto donde se dobla” y ese es tu número de clusters. Rápido, visual y aparentemente objetivo.
El problema es que el método del codo se malinterpreta y se sobrevalora con la misma facilidad con la que se usa. No es un criterio objetivo, no siempre existe un codo, y cuando lo hay no tiene por qué corresponder al número “verdadero” de grupos. En esta entrada vemos qué dice realmente, cómo leerlo bien y dónde están sus límites.
Qué es exactamente el método del codo
Para cada valor de k se ejecuta k-means y se mide lo compactos que han quedado los grupos mediante la suma de cuadrados intra-cluster (WCSS, también llamada inercia o distorsión): \text{WCSS}(k) = \sum_{j=1}^{k} \sum_{x \in C_j} \lVert x - \mu_j \rVert^2, es decir, la suma de las distancias al cuadrado de cada punto al centroide \mu_j de su grupo. Esto es, ni más ni menos, la propia función objetivo que k-means minimiza.
Luego se representa \text{WCSS}(k) frente a k. La curva siempre baja: cuantos más grupos permitas, más cerca queda cada punto de su centroide, hasta llegar a WCSS =0 cuando hay un grupo por punto. Típicamente cae en picado al principio y luego se aplana. Ese cambio brusco de pendiente, el “codo”, se interpreta como el k óptimo.

La interpretación correcta
La lógica detrás del codo es razonable: es un argumento de rendimientos decrecientes.
- Antes del codo: añadir un grupo más captura estructura real de los datos, así que la WCSS cae mucho.
- Después del codo: los grupos que de verdad existían ya están separados; añadir más solo subdivide grupos coherentes, y la WCSS apenas mejora.
El codo marca, por tanto, el punto donde dejas de pagar por estructura real y empiezas a pagar por trocear lo que ya estaba bien. Una forma equivalente y a veces más intuitiva de verlo es en términos de varianza explicada: como WCSS$(1)$ es la varianza total, la fracción 1 - \text{WCSS}(k)/\text{WCSS}(1) es la “varianza explicada por el agrupamiento”, y el codo es donde esa ganancia se aplana.
Leído así, el método es honesto: es una forma visual de detectar el punto de equilibrio entre complejidad (k) y ajuste (WCSS baja). El error no está en el método, sino en tratarlo como si entregara una respuesta exacta y objetiva. No lo hace.
Las limitaciones (que son muchas)
El codo suele ser ambiguo o sencillamente no existe
En datos reales, la curva muchas veces baja de forma suave, sin ningún punto claro donde se doble. ¿El codo está en 3, en 4 o en 5? Dos analistas pueden mirar el mismo gráfico y elegir valores distintos. El método no tiene una regla de decisión: depende del ojo de quien lo lee, lo que lo hace subjetivo y poco reproducible.
La WCSS nunca te dice cuándo parar
Como la WCSS decrece de forma monótona y solo llega a su mínimo (cero) cuando k=n, no tiene un mínimo interior que optimizar. No estás buscando el valor que minimiza una métrica; estás juzgando a ojo un cambio de pendiente. Eso lo distingue de criterios que sí tienen un óptimo bien definido.
Hereda todos los supuestos de k-means
El método del codo no es más válido que el algoritmo que hay debajo. k-means asume grupos esféricos, de tamaño y densidad similares y separados linealmente. Si tus clusters son alargados, de densidades muy distintas o de forma no convexa, k-means los partirá mal, y el codo reflejará esa partición defectuosa. La heurística no puede rescatar a un algoritmo que no encaja con la estructura de los datos.
Es muy sensible a la escala
La WCSS se construye con distancias, y las distancias dependen de las unidades. Si no estandarizas, las variables con más varianza dominan el cálculo y deforman tanto el agrupamiento como el codo. Igual que en PCA, estandarizar (z-score) no es un paso opcional, es una decisión de modelado que cambia el resultado.
Depende de la aleatoriedad de k-means
k-means parte de centroides iniciales aleatorios y puede converger a soluciones distintas en ejecuciones distintas. Eso significa que la WCSS de un mismo k puede variar entre corridas. Sin múltiples reinicios (k-means++, varios n_init), el codo puede moverse de una ejecución a otra.
Solo mide compacidad, no separación
La WCSS solo cuantifica cómo de apretados están los puntos dentro de cada grupo. No dice nada sobre cómo de separados están los grupos entre sí. Podrías tener clusters compactos pero solapados, y el codo no se enteraría. Una buena solución de clustering necesita ambas cosas: cohesión interna y separación externa.
No detecta la ausencia de estructura
Si tus datos no tienen ninguna estructura de grupos (una nube uniforme), el método del codo te dará un codo de todos modos y elegirás algún k, descubriendo grupos que no existen. La WCSS siempre baja al añadir centroides, haya o no clusters reales. El método no sabe responder “aquí no hay nada que agrupar”.
La maldición de la dimensionalidad
En muchas dimensiones las distancias tienden a concentrarse (todos los puntos acaban a distancias parecidas), las diferencias de WCSS se aplanan y el codo se difumina hasta volverse inservible.
Alternativas y complementos
La buena noticia es que el codo no tiene que ir solo. Conviene apoyarlo en métricas con criterios más definidos:
- Coeficiente de silueta (silhouette). Para cada punto combina su cohesión (distancia media a su grupo) y su separación (distancia al grupo vecino más cercano). Tiene un máximo que sí puedes optimizar y, a diferencia de la WCSS, mide separación además de compacidad.
- Estadístico gap (gap statistic). Compara la WCSS observada con la que se esperaría si no hubiera ninguna estructura (una distribución de referencia sin clusters). Tiene una regla de decisión más principiada y, crucialmente, puede indicar k=1, es decir, “no hay grupos”.
- Índices de Calinski-Harabasz y Davies-Bouldin. Cocientes entre dispersión inter e intra-grupo, con óptimos bien definidos (máximo y mínimo, respectivamente).
- Algoritmo Kneedle. Detecta el codo de forma algorítmica, eliminando parte de la subjetividad de elegirlo a ojo.
- Modelos de mezcla gaussiana con BIC/AIC. Un enfoque basado en modelo que selecciona el número de componentes con un criterio de información, en lugar de inspeccionar una curva.
- Métodos que no requieren fijar k. DBSCAN o HDBSCAN encuentran los grupos (y el ruido) sin que tengas que decidir el número de antemano, y manejan formas no esféricas.
Y, por encima de todo: el conocimiento del dominio y la interpretabilidad de los grupos resultantes. Si los clusters que sugiere el codo no significan nada en tu problema, el número “óptimo” no sirve de nada.
Cómo usarlo bien
El método del codo es útil como primera aproximación, no como veredicto. En la práctica:
- Estandariza las variables antes de calcular nada.
- Usa varios reinicios (k-means++) para que la curva sea estable.
- Cruza el codo con el silhouette (u otra métrica): si ambos apuntan al mismo k, tienes más confianza; si discrepan, investiga.
- Inspecciona los grupos que salen, no solo el número: ¿tienen sentido?, ¿son interpretables?
- Trátalo como un rango plausible, no como un único valor sagrado.
Conclusiones
La moraleja repite la de toda buena estadística: una herramienta visual cómoda no exime de entender qué mide. El codo te da una pista razonable sobre cuántos grupos buscar; convertirla en una verdad exacta es justo el error que conviene no cometer.
En resumen:
- El método del codo grafica la propia función objetivo de k-means (WCSS) frente a k y busca el punto de rendimientos decrecientes.
- Su interpretación correcta es la de un equilibrio entre complejidad y ajuste, no la de un criterio objetivo: no hay regla de decisión y el codo lo eliges a ojo.
- A menudo el codo es ambiguo o no existe, y la WCSS nunca te dice cuándo parar porque solo baja.
- Hereda los supuestos de k-means (grupos esféricos), es sensible a la escala y a la aleatoriedad, solo mide compacidad y no detecta la ausencia de clusters.
- Apóyalo siempre en otras métricas con óptimo definido —silhouette, gap statistic, Calinski-Harabasz— y en el sentido común del dominio.
Deja una respuesta