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?
data-visualization
clustering
matlab
Apprenant
la source
la source
Réponses:
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.
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.
la source
the average silhouette witdh "suggestion" could be very insufficient or just plain wrong in certain scenarios.
comme vous le prétendez.Jetez un coup d’œil à la boîte à outils CVAP (Cluster Validity Analysis Platform) et à quelques-uns des documents (liens) de CVAP:
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)
la source
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:
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).
la source
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
la source