← 15 · ¿Se pueden segmentar los clientes? H14

La mezcla gaussiana asigna cada punto con una probabilidad y aquí casi nunca duda

La pregunta de esta página

¿Qué se gana si el agrupamiento devuelve probabilidades en vez de etiquetas?

1 El problema

k-means reparte los 12.953 puntos en cuatro grupos y asigna cada uno a un grupo sin matices. El que cae justo en la frontera entre dos grupos recibe la misma etiqueta que el que está en el centro del suyo.

Eso importa cuando la etiqueta decide algo. Mandar una campaña de recuperación a un cliente que estaba en la frontera cuesta lo mismo que mandarla a uno del centro del grupo y tiene menos probabilidades de acertar.

Estos datos sirven para ver el método
La tabla no tiene clave de cliente, como explica la página del RFM. Esta página agrupa por correo, que lo comparten personas distintas, así que cada punto es un correo y no un cliente. Lo que la página enseña es qué añade un agrupamiento que da probabilidades.

2 Por qué engaña

El problema está en la salida. Una lista de etiquetas tiene el mismo aspecto venga de donde venga. No indica en qué casos el algoritmo estaba dudando.

Con una silueta de 0,40 con cuatro grupos, que es baja, cabe esperar que haya bastantes puntos de frontera.

3 El principio

Mezcla gaussiana
En lugar de repartir los puntos en grupos cerrados, supone que los datos vienen de varias distribuciones normales superpuestas y calcula, para cada punto, qué probabilidad tiene de venir de cada una. La asignación deja de ser un sí o un no.

Como efecto secundario, sus grupos pueden ser alargados o inclinados. Los de k-means son siempre esféricos, porque solo usa la distancia al centro.

4 La solución

Ajustar las dos con los mismos cuatro grupos y comparar. Lo interesante es la columna que solo tiene una de las dos: la seguridad de cada asignación.

5 Qué pasa con estos datos

k-means
4.313 · 3.754 · 3.703 · 1.183
cada punto al 100 % en su grupo, siempre
Mezcla gaussiana
7.581 · 3.549 · 1.155 · 668
pertenencia media de 0,999

La mezcla asigna con una seguridad media de 0,999. El 99,9 % de los puntos va a su grupo con más de un 90 % de probabilidad y el 0,0 % queda por debajo del 60 %.

Un resultado distinto del esperado
La página se preparó esperando encontrar puntos de frontera. Casi no los hay: la mezcla asigna cada punto con casi total seguridad. Eso no contradice la silueta baja. Una probabilidad alta indica que cada punto tiene una campana claramente más probable. No indica que los grupos estén separados. Una explicación probable, sin comprobar, es que la frecuencia solo toma unos pocos valores enteros y la mezcla se ajusta a esos escalones.

Lo que enseña es a no leer una seguridad alta como prueba de que hay grupos bien separados. Para eso está la silueta, que aquí es baja. Además, los tamaños de los grupos de la mezcla no se parecen a los de k-means, así que los dos algoritmos no están describiendo la misma división.

6 Para qué sirve

Cuando la etiqueta dispara una acción con coste. Con probabilidades se puede actuar solo sobre los seguros, dejar los dudosos para revisión y tener un criterio explícito en vez de una etiqueta sin más información.

Y como contraste. Ajustar una mezcla sobre los mismos datos que un k-means cuesta poco. Comparar los dos repartos muestra si los grupos se mantienen al cambiar de método.

El detalle técnico

Cuatro componentes con covarianza completa y semilla 42, sobre el mismo RFM tipificado que k-means. El BIC sale en -56.624, que sirve para comparar entre números de componentes y no para juzgar el ajuste por sí solo.

Ver la diferencia de salida
km = KMeans(n_clusters=4, random_state=42).fit(X)
gm = GaussianMixture(n_components=4, covariance_type="full", random_state=42).fit(X)

etiqueta = km.labels_          # un numero de grupo, sin mas
prob = gm.predict_proba(X)     # una fila de probabilidades por punto
seguridad = prob.max(axis=1)   # cuanto cree la mezcla en su propia respuesta

Fuente: segmentacion.json, campo h14_mezclas.