Dois-je supprimer des variables qui sont corrélées / colinéaires avant d'exécuter kmeans?


13

Je lance kmeans pour identifier les clusters de clients. J'ai environ 100 variables pour identifier les grappes. Chacune de ces variables représente le% des dépenses d'un client sur une catégorie. Donc, si j'ai 100 catégories, j'ai ces 100 variables telles que la somme de ces variables est de 100% pour chaque client. Maintenant, ces variables sont fortement corrélées entre elles. Dois-je en supprimer certains pour supprimer la colinéarité avant d'exécuter kmeans?

Voici les exemples de données. En réalité, j'ai 100 variables et 10 millions de clients.

Customer CatA CatB CatC   
1         10%  70%  20%   
2         15%  60%  25%

1
Avez-vous essayé l'analyse PCA afin de décorréler vos données?
Miroslav Sabo

2
"Colinéaire" n'est pas tout à fait la même chose que "corrélé". Votre question n'est donc pas claire
ttnphns

Réponses:


10

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 (10)2+(01)2+(00)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 seulement2(10)2+(00)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.


1
Je pense que beaucoup de précautions doivent être prises lors de l'élimination des variables par l'ACP. Tout d'abord, les variances doivent être normalisées avant une telle élimination car vous pouvez éliminer de manière incorrecte les variables simplement parce qu'elles ont une échelle différente en raison de leurs unités. Deuxièmement, après cela, j'éliminerais uniquement les dimensions qui ont une variation minuscule, car comme l'ACP suppose une base orthogonale si vous avez une variation dans une direction non orthogonale, cela sera capturé par k-means mais éliminé par PCA.
Cagdas Ozgenc

1
(X1,X2)1ρ>0Y=X1X2(X1,X2)X1+X2X1X2YX1+X2

1
Il s'agit d'une discussion non pertinente dans le cadre non supervisé. Pour un paramètre supervisé oui, l'ACP ne se soucie pas de la relation avec la variable cible. Si le sens de la dépendance tombe dans le sens de la faible variance, pas de chance.
Cagdas Ozgenc

2

Sur un exemple de jouet en 2D ou 3D, cela ne devrait pas faire beaucoup de différence, cela ajoute juste une certaine redondance à vos données: tous vos points sont sur un hyperplan dimensionnel (d-1) impair. Il en va de même pour les moyennes de cluster. Et la distance dans cet hyperplan dimensionnel (d-1) est un multiple linéaire de la même distance, donc cela ne change rien.

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

Regardons l'exemple le plus simple: les variables en double.

Si vous exécutez PCA sur votre ensemble de données et que vous dupliquez une variable, cela signifie effectivement mettre du poids en double sur cette variable. L'ACP est basée sur l'hypothèse que la variance dans toutes les directions est également importante - vous devez donc, en effet, pondérer soigneusement les variables (en tenant compte des corrélations, effectuer également tout autre prétraitement nécessaire) avant d'effectuer l'ACP.


1
À la lumière de mon analyse sur stats.stackexchange.com/a/50583 , ce raisonnement semble être incorrect.
whuber

J'ai beaucoup amélioré ma réponse, elle était trop basée sur les données d'exemple de jouet.
A QUIT - Anony-Mousse

1

Il est conseillé de supprimer les variables si elles sont fortement corrélées .

Indépendamment de l'algorithme de clustering ou de la méthode de liaison, une chose que vous suivez généralement est de trouver la distance entre les points. Garder des variables qui sont fortement corrélées est tout sauf leur donner plus, doubler le poids dans le calcul de la distance entre deux points (Comme toutes les variables sont normalisées, l'effet sera généralement double).

En bref, la force des variables pour influencer la formation de grappes augmente si elle a une forte corrélation avec toute autre variable.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.