¿Necesito descartar variables que estén correlacionadas / colineales antes de ejecutar kmeans?

13

Estoy ejecutando kmeans para identificar grupos de clientes. Tengo aproximadamente 100 variables para identificar grupos. Cada una de estas variables representa el% de gasto de un cliente en una categoría. Entonces, si tengo 100 categorías, tengo estas 100 variables, de modo que la suma de estas variables es del 100% para cada cliente. Ahora, estas variables están fuertemente correlacionadas entre sí. ¿Debo eliminar algunos de estos para eliminar la colinealidad antes de ejecutar kmeans?

Aquí están los datos de muestra. En realidad tengo 100 variables y 10 millones de clientes.

Customer CatA CatB CatC   
1         10%  70%  20%   
2         15%  60%  25%
Ashish Jha
fuente
1
¿Has probado el análisis de PCA para descorrelacionar tus datos?
Miroslav Sabo
2
"Colineal" no es lo mismo que "correlacionado". Entonces su pregunta sigue sin estar clara
ttnphns

Respuestas:

10

No descarte ninguna variable, pero considere usar PCA. Este es el por qué.

En primer lugar, como señaló Anony-mousse, k-means no se ve gravemente afectado por la colinealidad / correlaciones. No es necesario tirar información por eso.

En segundo lugar, si elimina las variables de forma incorrecta, acercará artificialmente algunas muestras. Un ejemplo:

Customer CatA CatB CatC
1        1    0    0
2        0    1    0
3        0    0    1

(Eliminé la notación% y simplemente puse valores entre 0 y 1, restringidos para que todos sumen 1.)

La distancia euclidiana entre cada uno de esos clientes en su espacio natural en 3D es (10)2+(01)2+(00)2=2

Ahora digamos que sueltas CatC.

Customer CatA CatB 
1        1    0    
2        0    1    
3        0    0    

Ahora la distancia entre los clientes 1 y 2 sigue siendo , pero entre los clientes 1 y 3, y 2 y 3, es solo2(10)2+(00)2=1

En tercer lugar, la colineraridad / correlaciones no son el problema. Tu dimensionalidad es. 100 variables son lo suficientemente grandes como para que incluso con 10 millones de puntos de datos, me preocupe que k-means pueda encontrar patrones espurios en los datos y se ajuste a eso. En cambio, piense en usar PCA para comprimirlo en un número de dimensiones más manejable, digamos 10 o 12 para comenzar (tal vez mucho más alto, tal vez mucho más bajo), tendrá que mirar la variación a lo largo de cada componente y jugar un poco, para encontrar el número correcto). Artificialmente acercará algunas muestras haciendo esto, sí, pero lo hará de una manera que debería preservar la mayor parte de la variación en los datos, y que eliminará preferentemente las correlaciones.

~~~~~

EDITAR:

Re, comentarios a continuación sobre PCA. Sí, absolutamente tiene patologías. Pero es bastante rápido y fácil de probar, por lo que todavía no me parece una mala apuesta si quieres reducir la dimensionalidad del problema.

Sin embargo, en esa nota, intenté lanzar rápidamente algunos conjuntos de datos sintéticos 100 dimensionales en un algoritmo k-means para ver qué se les ocurrió. Si bien las estimaciones de la posición central del grupo no eran tan precisas, la membresía del grupo (es decir, si dos muestras se asignaron al mismo grupo o no, que parece ser lo que le interesa al OP) fue mucho mejor de lo que pensé que sería. Por lo tanto, mi intuición anterior posiblemente era incorrecta: k-significa que migth funciona bien en los datos sin procesar.

Palmadita
fuente
1
Creo que se debe tener mucho cuidado al eliminar las variables por PCA. En primer lugar, las variaciones deben normalizarse antes de dicha eliminación, ya que puede eliminar incorrectamente las variables solo porque tienen una escala diferente debido a sus unidades. En segundo lugar, eliminaría solo aquellas dimensiones que tienen una variación minúscula, ya que PCA asume una base ortogonal si tiene una variación en una dirección no ortogonal, esto será capturado por k-means pero eliminado por PCA.
Cagdas Ozgenc
1
(X1,X2)1ρ>0Y=X1X2(X1,X2)X1+X2X1X2YX1+X2
1
Es una discusión irrelevante en el entorno no supervisado. Para la configuración supervisada sí, a PCA no le importa la relación con la variable objetivo. Si la dirección de dependencia cae en dirección de baja varianza, mala suerte.
Cagdas Ozgenc
2

En un ejemplo de juguete en 2d o 3d, no debería hacer mucha diferencia, solo agrega algo de redundancia a sus datos: todos sus puntos están en un hiperplano dimensional (d-1) extraño. Así son los medios del clúster. Y la distancia en este hiperplano dimensional (d-1) es un múltiplo lineal de la misma distancia, por lo que no cambia nada.

(x,y)(x,y,x+y)xy

Veamos el ejemplo más simple: variables duplicadas.

Si ejecuta PCA en su conjunto de datos y duplica una variable, esto significa efectivamente poner el peso duplicado en esta variable. PCA se basa en la suposición de que la variación en cada dirección es igualmente importante, por lo que, de hecho, debe sopesar cuidadosamente las variables (teniendo en cuenta las correlaciones, también hacer cualquier otro preprocesamiento necesario) antes de hacer PCA.

HA SALIDO - Anony-Mousse
fuente
1
A la luz de mi análisis en stats.stackexchange.com/a/50583 , este razonamiento parece ser incorrecto.
whuber
He mejorado mucho mi respuesta, estaba demasiado basada en los datos de ejemplo del juguete.
HA SALIDO - Anony-Mousse
1

Es aconsejable eliminar variables si están altamente correlacionadas .

Independientemente del algoritmo de agrupamiento o método de vinculación, una cosa que generalmente se sigue es encontrar la distancia entre puntos. Mantener variables que están altamente correlacionadas es todo menos darles más, duplicar el peso al calcular la distancia entre dos puntos (como todas las variables están normalizadas, el efecto generalmente será doble).

En resumen, la fuerza de las variables para influir en la formación de conglomerados aumenta si tiene una alta correlación con cualquier otra variable.

Tarun Kumar Yellapu
fuente