← 15 · ¿Se pueden segmentar los clientes? H2 · H3
La inercia baja siempre, así que por sí sola no dice cuántos grupos elegir
¿Cuántos grupos pedirle a k-means, si ese número es justo lo que no se sabe?
1 El problema
Con una tabla descrita por recencia, frecuencia y valor, agrupar es una línea de código. El problema es el número: k-means exige indicar cuántos grupos se quieren antes de empezar. Ese número es justo lo que no se sabe.
La respuesta habitual es mirar la inercia, que mide lo compactos que quedan los grupos, y buscar el codo de la curva.
2 Por qué engaña
La inercia siempre baja al subir k. Con tantos grupos como puntos vale cero, porque cada uno es su propio grupo y es totalmente compacto. Por eso la curva no tiene mínimo y el codo se elige a simple vista.
Aquí cae un 62,8 % de k=2 a k=6 sin ningún escalón claro. Dos personas que miran la misma curva pueden elegir números distintos.
3 El principio
A diferencia de la inercia, la silueta puede empeorar al subir k. Por eso sí sirve para elegir.
4 La solución
Calcular las dos para cada k y mirarlas juntas. La inercia indica lo compactos que son los grupos y la silueta indica si son grupos separados o trozos de una nube continua.
5 Qué pasa con estos datos
| k | Inercia | Silueta | Tamaños | |
|---|---|---|---|---|
| 2 | 25.176 | 0,3874 | 8.687 · 4.266 | |
| 3 | 17.655 | 0,3721 | 5.602 · 4.873 · 2.478 | |
| 4 | 13.141 | 0,3966 | 4.313 · 3.754 · 3.703 · 1.183 | |
| 5 | 10.767 | 0,4043 | 4.178 · 3.728 · 2.670 · 1.293 · 1.084 | |
| 6 | 9.375 | 0,4136 | 4.139 · 3.724 · 2.654 · 1.210 · 902 · 324 |
La mejor silueta sale en k = 6, con 0,4136. Lo importante es ese valor: ninguna de las cinco llega a 0,5.
Que la silueta mejore al subir k también es una señal de alerta. Cuando el mejor k es el mayor de los probados, puede que el algoritmo esté recortando trozos de la nube en lugar de encontrar grupos.
6 Para qué sirve
Para no presentar como hallazgo un corte arbitrario. Con una cartera real, los grupos se pueden usar igualmente, porque cortarla en tramos de valor es útil aunque los tramos no sean naturales. Lo que no se puede afirmar es que esos grupos estaban en los datos.
La página de mezclas gaussianas mira lo mismo por otro camino, con probabilidades en lugar de fronteras.
El detalle técnico
k-means con 10 arranques y semilla 42 sobre las tres variables RFM calculadas por correo y tipificadas. Tipificar es obligatorio, por lo que pasa si no se hace. La silueta se calcula sobre una muestra de 4.000 correos de los 12.953, porque exige todas las distancias contra todas.
Ver las dos medidas
for k in [2, 3, 4, 5, 6]:
km = KMeans(n_clusters=k, n_init=10, random_state=42).fit(X)
inercia = km.inertia_ # siempre baja al subir k
sil = silhouette_score(X[muestra], km.labels_[muestra]) # esta si opina
Fuente: segmentacion.json, campo h2_h3_kmeans.