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%
Réponses:
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:
(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.
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.
la source
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.
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.
la source
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.
la source