Clustering hiérarchique avec données de type mixte - quelle distance / similarité à utiliser?

34

Dans mon jeu de données, nous avons à la fois des variables continues et des variables naturellement discrètes. Je veux savoir si nous pouvons faire une classification hiérarchique en utilisant les deux types de variables. Et si oui, quelle mesure de distance est appropriée?

Bêta
la source
Quel logiciel utilises-tu?
rolando2
@ rolando2: J'utilise R (package hclus).
Beta
1
Y a-t-il une raison d'utiliser la classification hiérarchique?
suncoolsu
N / a. Je pose juste cette question pour le bien de ma connaissance. Peut-on faire hiérarchique quand on a un type de données mixte? Si oui, alors pourquoi? Si non, alors pourquoi?
Bêta le
@ user4278 Eh bien, quel est votre objectif en fin ? Cherchez-vous à identifier des grappes (d'individus)?
chl

Réponses:

45

Une solution consiste à utiliser le coefficient de similarité de Gower, qui est une mesure composite 1 ; il prend des variables quantitatives (telles que l'échelle d'évaluation), binaires (telles que présent / absent) et nominales (telles que travailleur / enseignant / employé). Plus tard, Podani 2 a ajouté une option permettant de prendre également des variables ordinales.12

Le coefficient est facile à comprendre même sans formule; vous calculez la valeur de similarité entre les individus pour chaque variable, en prenant en compte le type de variable, puis une moyenne pour toutes les variables. Habituellement, un programme calculant Gower vous permettra de pondérer les variables, c'est-à-dire leur contribution, à la formule composite. Cependant, la pondération correcte de variables de types différents pose un problème . Il n’existe pas de directives claires, ce qui donne à Gower ou à d’autres indices "composites" des facteurs d’attirance de proximité.

Les facettes de la similarité de Gower ( GS ):

  • Lorsque toutes les variables sont quantitatives (intervalle), le coefficient correspond à la distance de Manhattan normalisée dans l'intervalle et convertie en similarité. En raison de la normalisation, des variables de différentes unités peuvent être utilisées en toute sécurité. Cependant, vous ne devez pas oublier les valeurs aberrantes. (Vous pouvez également décider de normaliser par une autre mesure d'étalement que l'intervalle.) En raison de cette normalisation par une statistique, telle que l'intervalle, qui est sensible à la composition des individus de l'ensemble de données, la similarité entre deux individus peut changer de valeur. si vous supprimez ou ajoutez d'autres personnes dans les données.
  • Lorsque toutes les variables sont ordinales, elles sont d'abord classées, puis Manhattan est calculé, comme ci-dessus avec les variables quantitatives, mais avec l'ajustement spécial pour les égalités.
  • Lorsque toutes les variables sont binaires (avec une signification asymétrique des catégories: attribut "présent" vs "absent"), le coefficient est le coefficient de correspondance de Jaccard (ce coefficient est traité lorsque les deux individus ne possèdent pas l'attribut ni correspondance ni incompatibilité).
  • Lorsque toutes les variables sont nominales (y compris également les dichotomiques de signification symétrique: "this" vs "that"), le coefficient est le coefficient de dés correspondant que vous obtenez de vos variables nominales si vous les recodez en variables nominales (voir cette réponse pour plus d'informations) .

(Il est facile d’élargir la liste des types. Par exemple, on pourrait ajouter un sommand pour les variables de comptage, en utilisant une distance khi-carré normalisée convertie en similarité.)

Le coefficient est compris entre 0 et 1.

1GS1GS1GS1GS

Avec les distances euclidiennes (distances prenant en charge l’espace euclidien), pratiquement toutes les techniques classiques de regroupement conviendront. Y compris K-means (si votre programme K-means peut traiter des matrices de distance, bien sûr) et y compris les méthodes de Ward, centroïde, médianes du clustering hiérarchique . L'utilisation de K-moyennes ou d'autres méthodes basées sur la distance euclidienne avec une distance métrique immobile non euclidienne est peut-être heuristiquement admissible. Avec des distances non métriques, aucune méthode de ce type ne peut être utilisée.

Le paragraphe précédent indique si K-means ou Ward's ou un tel regroupement est légal ou non avec une distance de Gower mathématiquement (géométriquement). Du point de vue de l’ échelle de mesure («psychométrique»), il ne faut pas en calculer l’écart moyen ou de distance euclidienne dans aucune donnée catégorielle (nominale, binaire ou ordinale); donc de cette position, vous ne pouvez tout simplement pas traiter le coefficient de Gower par K-means, Ward, etc. Ce point de vue avertit que même si un espace euclidien est présent, il peut être granulé, et non pas lisse ( voir la relation correspondante ).


1

2

tnphns
la source
Merci, merci! Pouvez-vous s'il vous plaît me dire si "le coefficient de similarité de Gower" est intégré dans le package hclus dans R? Y at-il un paquet dans R qui a cette fonctionnalité.
Bêta
Je ne suis pas utilisateur R alors je ne sais pas et je ne pense pas que vous le trouverez en hclus. Mais si vous recherchez Google "Gower similarity R", vous êtes assuré de trouver ce dont vous avez besoin!
ttnphns
user4278, Juste au cas où vous évitiez de fuir SPSS, j'ai une macro de similarité pour Gower sur ma page Web. Il accepte la pondération et les données manquantes.
ttnphns
@ user4278 À propos de R en particulier, commencez ici: cran.r-project.org/web/views/Environmetrics.html
chl
@ttnphns: Merci! J'ai visité votre site Web et c'est une excellente ressource pour SPSS. Mais malheureusement, je n'utilise pas trop SPSS. Mais je l’utiliserai sûrement si je n’obtiens rien en R. @ chl: Merci! Mais c'est une liste énorme. J'ai lu quelque part que Daisy, dans son package cluster, présente des fonctionnalités similaires à celles de Gower.
Beta
15

Si vous êtes tombé sur cette question et que vous vous demandez quel package télécharger pour utiliser la métrique Gower dans R , il clusterpossède une fonction nommée daisy () , qui utilise par défaut la métrique de Gower lorsque des types de variables variés sont utilisés. Ou vous pouvez le configurer manuellement pour utiliser la métrique de Gower.

daisy(x, metric = c("euclidean", "manhattan", "gower"),
      stand = FALSE, type = list(), weights = rep.int(1, p))
Zhubarb
la source
4
Suite à la réponse de Zhubarb , si vous voulez que les distances Gower entre toutes les paires de deux ensembles de données, puis consultez le package R StatMatch.
James Hirschorn