Comprendre les comparaisons des résultats de clustering

13

J'expérimente avec la classification des données en groupes. Je suis assez nouveau sur ce sujet et j'essaie de comprendre le résultat de certaines analyses.

En utilisant des exemples de Quick-R , plusieurs Rpackages sont suggérés. J'ai essayé d'utiliser deux de ces packages (en fpcutilisant la kmeansfonction, et mclust). Un aspect de cette analyse que je ne comprends pas est la comparaison des résultats.

# comparing 2 cluster solutions
library(fpc)
cluster.stats(d, fit1$cluster, fit2$cluster)

J'ai lu les parties pertinentes du fpc manuel et je ne sais toujours pas ce que je devrais viser. Par exemple, c'est le résultat de la comparaison de deux approches de clustering différentes:

$n
[1] 521

$cluster.number
[1] 4

$cluster.size
[1] 250 119  78  74

$diameter
[1]  5.278162  9.773658 16.460074  7.328020

$average.distance
[1] 1.632656 2.106422 3.461598 2.622574

$median.distance
[1] 1.562625 1.788113 2.763217 2.463826

$separation
[1] 0.2797048 0.3754188 0.2797048 0.3557264

$average.toother
[1] 3.442575 3.929158 4.068230 4.425910

$separation.matrix
          [,1]      [,2]      [,3]      [,4]
[1,] 0.0000000 0.3754188 0.2797048 0.3557264
[2,] 0.3754188 0.0000000 0.6299734 2.9020383
[3,] 0.2797048 0.6299734 0.0000000 0.6803704
[4,] 0.3557264 2.9020383 0.6803704 0.0000000

$average.between
[1] 3.865142

$average.within
[1] 1.894740

$n.between
[1] 91610

$n.within
[1] 43850

$within.cluster.ss
[1] 1785.935

$clus.avg.silwidths
         1          2          3          4 
0.42072895 0.31672350 0.01810699 0.23728253 

$avg.silwidth
[1] 0.3106403

$g2
NULL

$g3
NULL

$pearsongamma
[1] 0.4869491

$dunn
[1] 0.01699292

$entropy
[1] 1.251134

$wb.ratio
[1] 0.4902123

$ch
[1] 178.9074

$corrected.rand
[1] 0.2046704

$vi
[1] 1.56189

Ma principale question ici est de mieux comprendre comment interpréter les résultats de cette comparaison de grappes.


Auparavant, j'avais demandé plus sur l'effet de la mise à l'échelle des données et du calcul d'une matrice de distance. Cependant, cela a été répondu clairement par Marianne Soffer, et je suis juste en train de réorganiser ma question pour souligner que je m'intéresse à l'intrusion de ma sortie qui est une comparaison de deux algorithmes de clustering différents.

Partie précédente de la question : si je fais n'importe quel type de clustering, dois-je toujours mettre à l'échelle les données? Par exemple, j'utilise la fonction dist()sur mon jeu de données mis à l'échelle comme entrée de la cluster.stats()fonction, mais je ne comprends pas bien ce qui se passe. J'ai lu dist() ici et il dit que:

cette fonction calcule et renvoie la matrice de distance calculée en utilisant la mesure de distance spécifiée pour calculer les distances entre les lignes d'une matrice de données.

celenius
la source
Cherchez-vous des clarifications supplémentaires ou n'êtes-vous pas satisfait de la réponse de @ mariana? Je suppose que cela concerne votre toute première question (2e §). Si tel est le cas, vous devriez peut-être mettre à jour votre question afin que les gens comprennent pourquoi vous définissez une prime sur cette question.
chl
@chl Je vais le mettre à jour pour le rendre plus clair. Je cherche juste des conseils sur l'interprétation des comparaisons de cluster, car je ne comprends pas ce que signifie la sortie. La réponse de @ mariana a été très utile pour expliquer certains des termes associés à cette méthode.
celenius

Réponses:

13

Permettez-moi d'abord de vous dire que je ne vais pas expliquer exactement toutes les mesures ici, mais je vais vous donner une idée de la façon de comparer la qualité des méthodes de clustering (supposons que nous comparons 2 méthodes de clustering avec le même nombre de grappes).

  1. Par exemple, plus le diamètre du cluster est grand, plus le clustering est mauvais, car les points qui appartiennent au cluster sont plus dispersés.
  2. Plus la distance moyenne de chaque cluster est élevée, pire est la méthode de clustering. (Supposons que la distance moyenne soit la moyenne des distances de chaque point du cluster au centre du cluster.)

Ce sont les deux métriques les plus utilisées. Vérifiez ces liens pour comprendre ce qu'ils représentent:

  • distance inter-cluster (plus la valeur est élevée, meilleure est la somme de la distance entre les différents centroïdes de cluster)
  • distance intra-cluster (plus la valeur est basse, meilleure est la somme de la distance entre les membres du cluster et le centre du cluster)

Pour mieux comprendre les mesures ci-dessus, vérifiez ceci .

Ensuite, vous devriez lire le manuel de la bibliothèque et des fonctions que vous utilisez pour comprendre quelles mesures représentent chacune d'entre elles, ou si elles ne sont pas incluses, essayez de trouver la signification de l'inclus. Cependant, je ne prendrais pas la peine de m'en tenir à ceux que j'ai mentionnés ici.

Continuons avec les questions que vous avez posées:

  1. En ce qui concerne la mise à l'échelle des données: Oui, vous devez toujours mettre à l'échelle les données pour le clustering, sinon les différentes échelles des différentes dimensions (variables) auront différentes influences sur la façon dont les données sont groupées, avec plus les valeurs de la variable sont élevées, plus cette variable est influente sera dans la façon dont le clustering est fait, alors qu'en fait, ils devraient tous avoir la même influence (sauf pour une raison particulière et étrange, vous ne le voulez pas de cette façon).
  2. Les fonctions de distance calculent toutes les distances d'un point (instance) à un autre. La mesure de distance la plus courante est euclidienne, donc par exemple, supposons que vous vouliez mesurer la distance de l'instance 1 à l'instance 2 (supposons que vous n'avez que 2 instances pour des raisons de simplicité). Supposons également que chaque instance ait 3 valeurs (x1, x2, x3), ainsi I1=0.3, 0.2, 0.5et I2=0.3, 0.3, 0.4ainsi la distance euclidienne de I1 et I2 serait:, sqrt((0.3-0.2)^2+(0.2-0.3)^2+(0.5-0.4)^2)=0.17donc la matrice de distance se traduira par:

        i1    i2
    i1  0     0.17
    i2  0.17  0

Notez que la matrice de distance est toujours symétrique.

La formule de la distance euclidienne n'est pas la seule qui existe. Il existe de nombreuses autres distances qui peuvent être utilisées pour calculer cette matrice. Vérifiez par exemple dans Wikipedia Manhattain Distance et comment le calculer. À la fin de la page Wikipedia pour Distance euclidienne (où vous pouvez également vérifier sa formule), vous pouvez vérifier quelles autres distances existent.

mariana soffer
la source
Merci pour votre réponse très complète - c'est très utile.
celenius
Je suis vraiment contente que cela vous ait été utile.
mariana soffer
@marianasoffer le lien vers la page de Stanford ne fonctionne pas. Veuillez le mettre à jour ou le rendre accessible. Merci
Herman Toothrot
7

Je pense que la meilleure mesure de qualité pour le clustering est l'hypothèse de cluster, telle que donnée par Seeger in Learning avec des données étiquetées et non étiquetées :

Par exemple, supposons X = Rd et la validité de l '«hypothèse de cluster», à savoir que deux points x, x devraient avoir la même étiquette t s'il y a un chemin entre eux dans X qui ne traverse que des régions de P relativement élevé (x ).

Oui, cela ramène toute l'idée des centroïdes et des centres vers le bas. Après tout, ce sont des concepts plutôt arbitraires si vous pensez au fait que vos données peuvent se trouver dans un sous-collecteur non linéaire de l'espace dans lequel vous travaillez réellement.

Vous pouvez facilement construire un jeu de données synthétique où les modèles de mélange se décomposent. Par exemple , celui - ci: un cercle dans un nuage.

Pour faire court: je mesurerais la qualité d'un algorithme de clustering de manière minimax. Le meilleur algorithme de clustering est celui qui minimise la distance maximale d'un point à son voisin le plus proche du même cluster tandis qu'il maximise la distance minimale d'un point à son voisin le plus proche d'un cluster différent.

Vous pourriez également être intéressé par un algorithme de regroupement théorique des informations non paramétriques .

bayerj
la source
Comment dois-je procéder pour examiner l'ajustement d'un cluster à l'aide d'une approche minimax? Mon niveau de connaissances en clustering est très basique, donc pour le moment j'essaie juste de comprendre comment comparer deux approches de clustering différentes.
celenius
Pourriez-vous s'il vous plaît partager le code R pour la figure ci-jointe?
Andrej
@Andrej Ma conjecture est un nuage gaussien ( x<-rnorm(N);rnorm(N)->y) divisé en 3 parties par r (avec l'un d'eux supprimé).
Je ne connais pas d'algorithme pratique qui corresponde à cette mesure de qualité. Vous voulez probablement toujours utiliser K-Means et al. Mais si la mesure ci-dessus tombe en panne, vous savez que les données que vous regardez ne sont pas (encore!) Adaptées à cet algorithme.
bayerj
@Andrej Je n'utilise pas R (venant de ML plutôt que de stats :) mais ce que mbq suggère semble bien.
bayerj