Ne supprimez aucune variable, mais pensez à utiliser PCA. Voici pourquoi.
Tout d'abord, comme l'a souligné Anony-mousse, k-means n'est pas très affecté par la colinéarité / corrélations. Vous n'avez pas besoin de jeter des informations à cause de cela.
Deuxièmement, si vous supprimez vos variables de la mauvaise manière, vous rapprocherez artificiellement certains échantillons. Un exemple:
Customer CatA CatB CatC
1 1 0 0
2 0 1 0
3 0 0 1
(J'ai supprimé la notation% et j'ai simplement mis des valeurs entre 0 et 1, contraintes de sorte qu'elles résument toutes à 1.)
La distance euclidienne entre chacun de ces clients dans leur espace 3D naturel est ( 1 - 0 )2+ ( 0 - 1 )2+ ( 0 - 0 )2-----------------------√= 2-√
Supposons maintenant que vous abandonniez CatC.
Customer CatA CatB
1 1 0
2 0 1
3 0 0
Maintenant, la distance entre les clients 1 et 2 est toujours , mais entre les clients 1 et 3 et 2 et 3, c'est seulement √2-√( 1 - 0 )2+ ( 0 - 0 )2---------------√= 1
Troisièmement, la collinarité / corrélations n'est pas le problème. Votre dimensionnalité est. 100 variables est suffisamment grande pour que même avec 10 millions de points de données, je crains que k-means puisse trouver des motifs parasites dans les données et s'y adapter. Au lieu de cela, pensez à utiliser PCA pour le compresser en un nombre plus gérable de dimensions - disons 10 ou 12 pour commencer (peut-être beaucoup plus élevé, peut-être beaucoup plus bas - vous devrez regarder la variance le long de chaque composant et jouer avec un peu, pour trouver le bon numéro). Vous rapprocherez artificiellement certains échantillons de cette opération, oui, mais vous le ferez d'une manière qui devrait préserver la majeure partie de la variance des données et qui supprimera de préférence les corrélations.
~~~~~
ÉDITER:
Re, commentaires ci-dessous sur PCA. Oui, il a absolument des pathologies. Mais c'est assez rapide et facile à essayer, donc cela ne me semble pas un mauvais pari si vous voulez réduire la dimensionnalité du problème.
Sur cette note cependant, j'ai essayé de lancer rapidement quelques ensembles de données synthétiques 100 dimensions dans un algorithme k-means pour voir ce qu'ils ont trouvé. Bien que les estimations de la position centrale du cluster n'étaient pas si précises, l' appartenance au cluster (c'est-à-dire si deux échantillons ont été affectés au même cluster ou non, ce qui semble être ce qui intéresse le PO) était bien meilleure que je ne le pensais. Donc, mon intuition plus tôt était probablement fausse - la migration de k-means fonctionne très bien sur les données brutes.