La idea subyacente al algoritmo k-means es tratar de encontrar grupos que minimicen la varianza dentro del grupo (o hasta una constante la suma correspondiente de cuadrados o SS), lo que equivale a maximizar la SS entre grupos porque la varianza total es fijo. Como se menciona en la wiki, puede usar directamente el SS interno y observar su variación al aumentar el número de clústeres (como lo haríamos en el análisis factorial con un diagrama de pantalla): un cambio brusco en la evolución de SS sugiere una solución óptima , aunque esto simplemente se basa en la apreciación visual. Como la varianza total es fija, es equivalente estudiar cómo evoluciona la relación entre el SS y el total, también llamado porcentaje de varianza explicado, porque en este caso presentará una gran brecha de una k a la siguiente k +1.
En resumen, solo tiene que calcular la distancia al cuadrado entre cada punto de datos y su respectivo centro (o centroide), para cada grupo; esto le da el SS dentro, y el total dentro de SS es solo la suma del grupo específico WSS (transformarlos en varianza es solo una cuestión de dividirlos entre los grados de libertad correspondientes); el SS intermedio se obtiene restando el WSS total del SS total, obteniéndose este último considerando k = 1, por ejemplo.
Por cierto, con k = 1, WSS = TSS y BSS = 0.
Si después de determinar el número de grupos o dónde detenerse con el k-means, puede considerar la estadística Gap como una alternativa a los criterios de codo:
Tibshirani, R., Walther, G. y Hastie, T. (2001). Estimación del número de clústeres en un conjunto de datos a través de la estadística de brecha . JR Statist. Soc. B , 63 (2): 411-423.