← 15 · ¿Se pueden segmentar los clientes? H12
Con cincuenta columnas de ruido, el contraste entre distancias cae un 78,0 %
¿Por qué añadir variables puede empeorar un agrupamiento?
1 El problema
El RFM usa tres variables. Es tentador añadir más: provincia, categoría preferida, mes de la primera compra, días entre pedidos. La idea es que, con más información, el agrupamiento será mejor.
Si las variables nuevas no aportan información, con k-means pasa lo contrario, y la razón está en la aritmética de la distancia.
2 Por qué engaña
Agrupar consiste en decir que unos puntos están cerca y otros lejos. Para eso, las distancias tienen que ser claramente distintas entre sí.
Cada variable nueva suma su diferencia al cuadrado. Si la variable no aporta señal, suma una cantidad parecida a todas las parejas. Si se añaden cincuenta variables así, las distancias se van pareciendo cada vez más.
3 El principio
4 La solución
Se mide con el contraste: la distancia mayor menos la menor, dividido por la media. Cuanto más alto, mejor se distinguen los puntos entre sí.
El experimento parte de 1.500 puntos RFM calculados por correo y les va añadiendo columnas de ruido puro, que hacen el papel de variables que no aportan nada.
5 Qué pasa con estos datos
| Variables | Contraste | |
|---|---|---|
| 1 | 3,069 | |
| 2 | 4,139 | |
| 3 | 4,288 | |
| 5 | 3,329 | |
| 10 | 2,437 | |
| 20 | 1,787 | |
| 50 | 0,942 |
El contraste alcanza su máximo, 4,288, con tres variables, que son justo las tres del RFM. A partir de ahí cae. Con cincuenta baja a 0,942, una caída del 78,0 % desde el máximo.
6 Para qué sirve
Para no meter todas las columnas disponibles en un agrupamiento. Cada variable tiene que justificar su presencia, porque las que no aportan tapan el efecto de las que sí.
Cuando hacen falta muchas variables, lo recomendable es reducirlas antes, con componentes principales u otra técnica de reducción, y agrupar sobre el resumen.
El detalle técnico
Muestra de 1.500 correos del RFM tipificado, con columnas normales de media cero y desviación uno añadidas hasta llegar a cada dimensión. Distancia euclídea de todos contra todos, con generador de semilla 42. La subida de 1 a 3 variables viene de la construcción: hasta 3 las columnas son las del RFM y el ruido se añade después. Que el contraste suba no mide cuánta información aportan.
Ver el experimento
# Se parte de los puntos RFM y se les anaden columnas de ruido puro
for dim in [1, 2, 3, 5, 10, 20, 50]:
Z = anadir_ruido_hasta(X, dim)
dist = distancias_todas_contra_todas(Z)
contraste = (dist.max() - dist.min()) / dist.mean() # cuanto se distinguen
Fuente: segmentacion.json, campo h12_dimensionalidad.