No elimine ninguna variable, pero considere la posibilidad de utilizar PCA. He aquí por qué.
En primer lugar, como señala Anony-mousse, k-means no se ve muy afectado por la colinealidad/correlaciones. No es necesario desechar información por ello.
En segundo lugar, si coloca 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
(He eliminado la notación % y sólo he puesto valores entre 0 y 1, restringidos para que todos sumen 1).
La distancia euclidiana entre cada uno de esos clientes en su espacio natural 3d es $\sqrt{(1-0)^2+(0-1)^2+(0-0)^2} = \sqrt{2}$
Ahora digamos que se te cae CatC.
Customer CatA CatB
1 1 0
2 0 1
3 0 0
Ahora la distancia entre los clientes 1 y 2 sigue siendo $\sqrt{2}$ , pero entre los clientes 1 y 3, y 2 y 3, es sólo $\sqrt{(1-0)^2+(0-0)^2}=1$ . Has hecho artificialmente que el cliente 3 sea más similar a 1 y 2, de una forma que los datos brutos no apoyan.
En tercer lugar, la colineraridad/correlaciones no son el problema. Su dimensionalidad lo es. 100 variables es lo suficientemente grande como para que, incluso con 10 millones de puntos de datos, me preocupe que k-means pueda encontrar patrones espurios en los datos y ajustarse a ellos. En su lugar, piense en utilizar PCA para comprimirlos en un número más manejable de dimensiones, digamos 10 o 12 para empezar (quizá mucho más alto, quizá mucho más bajo; tendrá que mirar la varianza a lo largo de cada componente y jugar un poco para encontrar el número correcto). De este modo, acercará artificialmente algunas muestras, sí, pero lo hará de un modo que debería preservar la mayor parte de la varianza de los datos y que eliminará preferentemente las correlaciones.
\~
EDITAR:
Re, comentarios más abajo sobre PCA. Sí, tiene absolutamente patologías. Pero es bastante rápido y fácil de probar, por lo que sigue sin parecerme una mala apuesta si se quiere reducir la dimensionalidad del problema.
A este respecto, he probado a introducir rápidamente algunos conjuntos de datos sintéticos de 100 dimensiones en un algoritmo k-means para ver qué resultaba. Aunque las estimaciones de la posición central de los conglomerados no eran muy precisas, las estimaciones de la posición central de los conglomerados sí lo eran. afiliación (es decir, si dos muestras se asignaron al mismo conglomerado o no, que parece ser lo que le interesa al OP) era mucho mejor de lo que pensaba. Así que mi corazonada de antes estaba muy posiblemente equivocada - k-means puede funcionar bien en el r