Comment interpréter la moyenne du complot Silhouette?

34

J'essaie d'utiliser le tracé de la silhouette pour déterminer le nombre de clusters dans mon jeu de données. Étant donné le jeu de données Train , j'ai utilisé le code matlab suivant

Train_data = full(Train);  
Result = [];  
for num_of_cluster = 1:20  
    centroid = kmeans(Train_data,num_of_cluster,'distance','sqeuclid');  
    s = silhouette(Train_data,centroid,'sqeuclid');  
    Result = [ Result; num_of_cluster mean(s)];  
end  
plot( Result(:,1),Result(:,2),'r*-.');`

Le graphique résultant est donné ci-dessous avec xaxis en nombre de cluster et yaxis en moyenne de la valeur de la silhouette .

Comment interpréter ce graphique? Comment puis-je déterminer le nombre de cluster à partir de cela?

entrez la description de l'image ici

Apprenant
la source
Pour déterminer le nombre de clusters, voir la méthode MST (minimum Spanning Tree) sous visualization-software-for-clustering .
denis
@Learner: La fonction silhouette est-elle intégrée à une bibliothèque? Si non, pourriez-vous l'afficher dans votre question si cela ne vous dérange pas?
Légende
@Legend: il est disponible dans la boîte à outils Matlab Statistics.
Apprenant
@Learner: Ooops ... Je pensais que vous utilisiez Python :) Merci de me l'avoir signalé.
Légende
1
+1 pour montrer le code! De plus, comme la moyenne maximale de votre silhouette apparaît lorsque k = 2, vous pouvez vérifier si vos données sont en cluster, ce qui peut être fait à l' aide de la statistique gap (un autre lien ).
Franck Dernoncourt

Réponses:

41

La réponse de Sergey contient le point critique, à savoir que le coefficient de silhouette quantifie la qualité du regroupement obtenu. Vous devez donc sélectionner le nombre de grappes qui maximise le coefficient de silhouette.


La réponse longue est que le meilleur moyen d’évaluer les résultats de vos efforts de regroupement consiste à commencer par examiner - l’inspection humaine - les grappes formées et à prendre une décision basée sur une compréhension de ce que les données représentent, ce que représente une grappe, et ce que le regroupement est destiné à réaliser.

Il existe de nombreuses méthodes quantitatives d'évaluation des résultats de regroupement qui devraient être utilisées comme outils, avec une compréhension totale des limites. Ils ont tendance à être de nature assez intuitive et ont donc un attrait naturel (comme les problèmes de regroupement en général).

Exemples: masse / rayon / densité de la grappe, cohésion ou séparation entre les grappes, etc. Ces concepts sont souvent combinés. Par exemple, le rapport séparation / cohésion doit être élevé si la classification est réussie.

La façon dont la classification est mesurée dépend du type d'algorithme de classification utilisé. Par exemple, mesurer la qualité d'un algorithme de clustering complet (dans lequel tous les points sont placés dans des clusters) peut être très différent de celui de la qualité d'un algorithme de clustering flou basé sur des seuils (dans lequel un point peut être laissé non clusterisé en tant que "bruit" ).


Le coefficient de silhouette est l'une de ces mesures. Cela fonctionne comme suit:

Pour chaque point p, commencez par trouver la distance moyenne entre p et tous les autres points du même groupe (il s'agit d'une mesure de la cohésion, appelez-le A). Trouvez ensuite la distance moyenne entre p et tous les points de la grappe la plus proche (c’est une mesure de la séparation de la grappe la plus proche, appelez-la B). Le coefficient de silhouette pour p est défini comme la différence entre B et A divisée par le plus grand des deux (max (A, B)).

Nous évaluons le coefficient de cluster de chaque point et à partir de là, nous pouvons obtenir le coefficient de cluster «global» moyen.

Intuitivement, nous essayons de mesurer l'espace entre les grappes. Si la cohésion des grappes est bonne (A est petit) et la séparation des grappes est bonne (B est grand), le numérateur sera grand, etc.

J'ai construit un exemple ici pour illustrer cela graphiquement.

Coefficient de clustering Résultats du clustering pour nclusters = 2: 5

Dans ces tracés, les mêmes données sont tracées cinq fois; les couleurs indiquent les grappes créées par k-means, avec k = 1,2,3,4,5. C'est-à-dire que j'ai forcé un algorithme de clustering à diviser les données en 2 clusters, puis 3, et ainsi de suite, et de colorer le graphique en conséquence.

Le graphique de la silhouette montre que le coefficient de la silhouette était le plus élevé lorsque k = 3, ce qui suggère qu'il s'agit du nombre optimal de grappes. Dans cet exemple, nous avons la chance de pouvoir visualiser les données et nous pourrions être d’accord pour dire que trois clusters capturent au mieux la segmentation de cet ensemble de données.

Si nous ne parvenions pas à visualiser les données, peut-être à cause d'une dimensionnalité plus élevée, une courbe en silhouette nous donnerait quand même une suggestion. Toutefois, j’espère que ma réponse un peu lointaine ici indique également que cette "suggestion" pourrait être très insuffisante ou tout simplement fausse dans certains scénarios.

Un homme
la source
5
Merci pour votre réponse détaillée, et surtout les graphiques sont très utiles. Cependant, je n'ai pas bien compris comment, the average silhouette witdh "suggestion" could be very insufficient or just plain wrong in certain scenarios.comme vous le prétendez.
Zhubarb
10

Jetez un coup d’œil à la boîte à outils CVAP (Cluster Validity Analysis Platform) et à quelques-uns des documents (liens) de CVAP:

Indice Silhouette (silhouette moyenne globale), une valeur Silhouette supérieure indique une meilleure qualité d'un résultat de regroupement [Chen et al. 2002]

  • N. Bolshakova, F. Azuaje. 2003. Techniques de validation de cluster pour les données d'expression du génome, Signal Processing. V.83. N4, pages 825 à 833.
  • E. Dimitriadou, S. Dolnicar, A. Weingessel. Examen des index permettant de déterminer le nombre de grappes dans des ensembles de données binaires. Psychometrika, 67 (1): 137-160, 2002.

Vous pouvez également vérifier cet outil (simple) pour estimer le nombre de grappes

Il suffit de jeter un coup d'œil aux exemples des deux kits d'outils (vous pouvez également utiliser d'autres techniques de validation de cluster)

Sergey
la source
6

J'ai étudié la même chose aujourd'hui et j'ai trouvé une interprétation ici . Cela a du sens, mais je ne suis pas sûr que nous puissions appliquer aveuglément l'interprétation à nos ensembles de données. En résumé, ce que dit cet article est le suivant:

0.71-1.0
A strong structure has been found

0.51-0.70
A reasonable structure has been found

0.26-0.50
The structure is weak and could be artificial. Try additional methods of data analysis.

< 0.25
No substantial structure has been found

Cependant, il semble que nous puissions utiliser la largeur de la silhouette pour capturer les valeurs aberrantes. Dans une tâche de regroupement de documents que je gère actuellement, celles dont la largeur de la silhouette est négative sont des valeurs aberrantes définies (une fois vérifiées avec leur signification sémantique). Je ne suis pas sûr que cette largeur s'améliorera après la suppression des valeurs éloignées (encore une fois, cela a du sens, mais je ne l'ai pas fait moi-même).

Légende
la source
4
Juste une remarque d’histoire, le tableau vient de Sewell, Grandville et PJ Rousseau. "Recherche de groupes dans les données: introduction à l'analyse par grappes." (1990). img546.imageshack.us/img546/4523/cnfg.png (peut-être déjà publié dans l'un des articles des auteurs)
Franck Dernoncourt
Le lien dans la réponse n'est plus disponible. Pourriez-vous s'il vous plaît fournir une autre référence?
BajajG
Voici le lien vers l'article de l'archive Web: web.archive.org/web/20111002220803/http://www.unesco.org:80/…
Justas
1

Si vous essayez de sélectionner le nombre de grappes pour un apprentissage non supervisé, vous pourriez peut-être essayer de faire quelque chose comme-

http://scikit-learn.org/stable/auto_examples/cluster/plot_kmeans_silhouette_analysis.html

Ils utilisent plus que le score de silhouette (ils utilisent la distribution), mais cela a du sens. Il semble préférer des clusters plus petits, mais peut-être pourriez-vous essayer cela avec des données générées et voir si cela fonctionne?

Alternativement, vous pouvez vérifier ce papier-

http://www.sciencedirect.com/science/article/pii/0377042787901257

Leela Prabhu
la source