Pourquoi les données mixtes posent-elles un problème pour les algorithmes de clustering basés sur les euclidiens?


21

La plupart des algorithmes de clustering et de réduction de dimensionnalité classiques (clustering hiérarchique, analyse des composants principaux, k-means, cartes auto-organisées ...) sont conçus spécifiquement pour les données numériques, et leurs données d'entrée sont considérées comme des points dans un espace euclidien.

C'est un problème bien sûr, car de nombreuses questions du monde réel impliquent des données mélangées: par exemple, si nous étudions les bus, la hauteur et la longueur et la taille du moteur seront des nombres, mais nous pourrions également être intéressés par la couleur (variable catégorielle: bleu / rouge / vert ...) et classes de capacité (variable ordonnée: petite / moyenne / grande capacité). Plus précisément, nous pourrions vouloir étudier ces différents types de variables simultanément.

Il existe un certain nombre de méthodes pour étendre les algos de clustering classiques à des données mixtes, par exemple en utilisant une dissemblance Gower pour se connecter à un clustering hiérarchique ou à une mise à l'échelle multidimensionnelle, ou à d'autres méthodes qui prennent une matrice de distance en entrée. Ou par exemple cette méthode, une extension de SOM à des données mixtes.

Ma question est: pourquoi ne pouvons-nous pas simplement utiliser la distance euclidienne sur des variables mixtes? ou pourquoi est-ce mauvais de le faire? Pourquoi ne pouvons-nous pas simplement coder de manière fictive les variables catégorielles, normaliser toutes les variables afin qu'elles aient un poids similaire dans la distance entre les observations et exécuter les algos habituels sur ces matrices?

C'est vraiment facile et jamais fait, donc je suppose que c'est très faux, mais quelqu'un peut-il me dire pourquoi? Et / ou donnez-moi quelques références? Merci


5
Vous pouvez faire tout ce que vous voulez avec vos données pour les représenter comme des points dans l'espace euclidien, mais la signification des entités peut disparaître. Le problème se situe au niveau de l'échelle de mesure et non au niveau de l'espace. L'échelle ordinale doit être correctement quantifiée, le codage factice n'aidera pas. L'échelle binaire du sens asymétrique (présent vs absent) appelle naturellement une autre distance métrique que la distance euclidienne; plus le problème de l'interpolation (aucune moyenne substantielle ne peut exister entre oui et non).
ttnphns

(suite) L'espace euclidien, c'est deux choses: il est continu (à grain fin) et il permet toutes les directions. Tous les types de données n'exigent pas ou n'accueillent pas un tel espace pour tenir compte des dissemblances résultant de la nature des données.
ttnphns

Le clustering hiérarchique fonctionne avec tout type de similitude, au fait. (sauf pour certains cas comme Ward) - en particulier, vous pouvez utiliser par exemple le coefficient de Jaccard qui est significatif pour certains cas catégoriels / binaires.
Anony-Mousse -Reinstate Monica

Réponses:


5

Il ne s'agit pas de ne pas pouvoir calculer quelque chose .

Les distances peuvent être utilisées pour mesurer quelque chose de significatif . Cela échouera beaucoup plus tôt avec les données catégorielles. Si cela fonctionne avec plus d'une variable, c'est ...

Si vous avez les attributs taille de chaussure et masse corporelle, la distance euclidienne n'a pas beaucoup de sens non plus. C'est bon quand x, y, z sont des distances. La distance euclidienne est alors la distance de ligne de visée entre les points.

Maintenant, si vous codez fictivement des variables, quelle signification cela donne-t-il?

De plus, la distance euclidienne n'a pas de sens lorsque vos données sont discrètes.

S'il n'existe que des valeurs entières x et y, la distance euclidienne donnera toujours des distances non entières. Ils ne correspondent pas aux données. De même, pour les variables codées factices, la distance ne correspondra pas à une quantité de variables factices ...

Lorsque vous prévoyez ensuite d'utiliser par exemple le clustering k-means, il ne s'agit pas seulement des distances, mais du calcul de la moyenne . Mais il n'y a pas de moyenne raisonnable sur les variables codées fictivement, n'est-ce pas?

Enfin, il y a la malédiction de la dimensionnalité . La distance euclidienne est connue pour se dégrader lorsque vous augmentez le nombre de variables. L'ajout de variables codées factices signifie que vous perdez le contraste de distance assez rapidement. Tout est aussi similaire que tout le reste, car une seule variable fictive peut faire toute la différence.


3

L'idée de l'interpolation est au cœur de ces problèmes de regroupement basés sur les métriques.

Prenez la méthode que vous venez de citer et considérons une variable continue telle que le poids. Vous avez 100 kg et vous avez 10 kg dans vos données. Lorsque vous voyez un nouveau 99kg, la métrique vous permettra d'approcher 100kg --- même si vous ne l'avez jamais vu. Malheureusement, il n'existe aucune interpolation pour les données discrètes.

Un autre argument en faveur de cette question est qu'il n'existe aucun moyen naturel de le faire. Vous voulez attribuer 3 valeurs dans R et les rendre à égale distance entre chaque paire, ce serait impossible. Si vous les affectez à différentes catégories et exécutez disons PCA, alors vous perdez les informations qui reflètent en fait la même catégorie.


1
Merci! Je comprends le problème d'interpolation, mais dans de nombreuses applications, ce n'est pas un problème (par exemple, lorsque nous savons que les bus sont verts, rouges ou bleus et qu'aucune autre couleur n'existe dans notre jeu de données). Et je pense qu'il existe des moyens faciles de standardiser les variables fictives afin que chaque variable catégorielle ait un "poids" similaire à celui de chaque variable numérique (si les variables numériques ont également été standardisées au préalable). Ou pour attribuer arbitrairement des poids aux différentes variables ...
jubo

0

Un problème avec les valeurs catégorielles désordonnées est que si vous les codez fictivement, vous forcez un ordre et donc une nouvelle signification pour les variables. Par exemple, si vous encodez le bleu en 1 et l'orange en 2 et le vert 3, vous indiquez qu'un modèle de données avec une valeur orange est plus proche d'un modèle avec une valeur verte que celui avec la valeur bleue.

Une façon de gérer cela est de leur faire de nouvelles fonctionnalités (colonnes). Pour chaque valeur distincte, vous créez une nouvelle fonctionnalité binaire et la définissez sur true / false (en d'autres termes, le code binaire code les valeurs et fait de chaque bit une colonne). Pour chaque modèle de données de ce nouvel ensemble de fonctionnalités, une seule fonctionnalité aura la valeur 1 et toutes les autres 0. Mais cela n'empêche généralement pas l'algorithme de formation d'attribuer des valeurs de centroïde proches de 1 à plusieurs fonctionnalités. Bien entendu, cela peut entraîner des problèmes d'interprétation, car cela n'a pas de sens dans le domaine des données.

Vous n'avez pas le même problème avec les "classes de capacité" à savoir les catégories ordonnées car dans ce cas l'affectation des valeurs numériques fait sens.

Et bien sûr, si vous utilisez des caractéristiques de nature ou unité de mesure différentes ou une plage de valeurs différente, vous devez toujours normaliser les valeurs.

/programming/19507928/growing-self-organizing-map-for-mixed-type-data/19511894#19511894

/programming/13687256/is-it-right-to-normalize-data-and-or-weight-vectors-in-a-som/13693409#13693409


C'est ce que je voulais dire par "codage factice" pour les variables catégorielles, mais merci. Et btw je ne suis pas d'accord avec votre déclaration sur les facteurs ordonnés ("classes de capacité") car il n'y a aucun moyen de choisir entre par exemple (1,2,3) ou (1,2,100), ce qui ferait une énorme différence pour un algorithme basé sur la distance.
jubo

0

La réponse est en fait assez simple, nous avons juste besoin de comprendre ce que sont réellement les informations dans une variable fictive. L'idée d'une variable fictive dénote la présence ou l'absence de niveaux de facteurs (valeurs discrètes d'une variable catégorielle). Il est censé représenter quelque chose de non mesurable, non quantifiable, en stockant les informations sur leur présence ou non. C'est pourquoi une variable fictive est exprimée en chiffres binaires, autant que les valeurs discrètes de la variable catégorielle qu'elle représente (ou moins 1).

Représenter les niveaux des facteurs en tant que valeurs 0/1 n'a de sens que dans une équation analytique, comme un modèle linéaire (c'est un concept facile pour ceux qui peuvent interpréter les coefficients des modèles statistiques). Dans une variable fictive, les informations de la variable catégorielle sous-jacente sont stockées dans l'ordre des bits. Lorsque vous utilisez ces bits comme dimensions pour mapper un échantillon d'entrée à un espace d'entités (comme dans le cas d'une matrice de similitude / distance), les informations dans l'ordre des bits sont complètement perdues.


1
Merci! En fait, mon point est que les variables catégorielles codées factices ont un sens (une certaine) dans une distance euclidienne: si les valeurs sont différentes, elles ajoutent 2 à la distance au carré, sinon elles ajoutent 0. Et vous pouvez normaliser les variables muettes dans différentes de prendre en compte le nombre de catégories ou leurs probabilités.
jubo
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.