← 15 · ¿Se pueden segmentar los clientes? H12

Con cincuenta columnas de ruido, el contraste entre distancias cae un 78,0 %

La pregunta de esta página

¿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.

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é les pasa a las distancias al sumar columnas.

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

La maldición de la dimensionalidad
Al subir el número de variables, la distancia mayor y la menor se van pareciendo. Cuando se igualan, «cerca» y «lejos» dejan de tener sentido y cualquier algoritmo basado en distancias pierde su base.

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.

Qué significa un contraste por debajo de 1
Un contraste menor que 1 significa que la diferencia entre el par más lejano y el más cercano es menor que la distancia típica. Cuanto más bajo, más probable es que los grupos que salgan los cree el algoritmo y no estén en los datos.

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.