Wie interpretiere ich den Mittelwert der Silhouette?

34

Ich versuche, Silhouette Plot zu verwenden, um die Anzahl der Cluster in meinem Datensatz zu bestimmen. Angesichts des Datensatzes Train habe ich den folgenden Matlab-Code verwendet

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*-.');`

Die resultierende grafische Darstellung ist nachstehend mit der X-Achse als Anzahl der Cluster und dem Y-Achsen- Mittelwert des Silhouettenwerts angegeben .

Wie interpretiere ich dieses Diagramm? Wie bestimme ich daraus die Anzahl der Cluster?

Bildbeschreibung hier eingeben

Lerner
quelle
Informationen zum Ermitteln der Anzahl von Clustern finden Sie in der MST-Methode (Minimum Spanning Tree) unter Visualisierungssoftware für Clustering .
Denis
@Learner: Ist die Silhouette-Funktion in einer Bibliothek eingebaut? Wenn nicht, könntest du es in deiner Frage posten, wenn es dir nichts ausmacht?
Legende
@Legend: Es ist in der Matlab Statistics-Toolbox verfügbar.
Lerner
@Learner: Hoppla ... Ich dachte, Sie verwenden Python :) Vielen Dank, dass Sie mich darüber informiert haben.
Legende
1
+1 für das Anzeigen des Codes! Da der maximale Mittelwert Ihrer Silhouette bei k = 2 auftritt, möchten Sie möglicherweise überprüfen, ob Ihre Daten geclustert sind. Dies kann mithilfe der Lückenstatistik (ein weiterer Link ) erfolgen.
Franck Dernoncourt

Antworten:

41

Die Antwort von Sergey enthält den kritischen Punkt, nämlich, dass der Silhouettenkoeffizient die Qualität der erreichten Clusterung quantifiziert. Wählen Sie daher die Anzahl der Cluster aus, die den Silhouettenkoeffizienten maximieren.


Die lange Antwort lautet, dass die beste Methode zur Bewertung der Ergebnisse Ihrer Clusterbemühungen darin besteht, zunächst die gebildeten Cluster zu untersuchen und eine Entscheidung zu treffen, die auf dem Verständnis der Repräsentation der Daten und der Repräsentation eines Clusters basiert. und was das Clustering erreichen soll.

Es gibt zahlreiche quantitative Methoden zur Bewertung von Clustering-Ergebnissen, die als Hilfsmittel zum vollständigen Verständnis der Einschränkungen verwendet werden sollten. Sie sind in der Regel ziemlich intuitiv und haben daher eine natürliche Anziehungskraft (wie Clustering-Probleme im Allgemeinen).

Beispiele: Clustermasse / -radius / -dichte, Kohäsion oder Trennung zwischen Clustern usw. Diese Konzepte werden häufig kombiniert. Beispielsweise sollte das Verhältnis von Trennung zu Kohäsion groß sein, wenn die Clusterbildung erfolgreich war.

Die Art und Weise, wie das Clustering gemessen wird, hängt von der Art der verwendeten Clustering-Algorithmen ab. Beispielsweise kann die Qualität eines vollständigen Clustering-Algorithmus (bei dem alle Punkte zu Clustern zusammengefasst werden) stark von der Qualität eines schwellenwertbasierten Fuzzy-Clustering-Algorithmus abweichen (bei dem ein Punkt möglicherweise nicht als "Rauschen" geclustert wird). ).


Der Silhouettenkoeffizient ist ein solches Maß. Es funktioniert wie folgt:

Ermitteln Sie für jeden Punkt p zunächst den durchschnittlichen Abstand zwischen p und allen anderen Punkten im selben Cluster (dies ist ein Maß für die Kohäsion, nennen Sie es A). Bestimmen Sie dann die durchschnittliche Entfernung zwischen p und allen Punkten im nächsten Cluster (dies ist ein Maß für die Entfernung vom nächsten anderen Cluster, nennen Sie es B). Der Silhouettenkoeffizient für p ist definiert als die Differenz zwischen B und A geteilt durch den größeren der beiden (max (A, B)).

Wir werten den Clusterkoeffizienten jedes Punktes aus und daraus können wir den "gesamten" durchschnittlichen Clusterkoeffizienten erhalten.

Intuitiv versuchen wir, den Abstand zwischen Clustern zu messen. Wenn die Cluster-Kohäsion gut ist (A ist klein) und die Cluster-Trennung gut ist (B ist groß), ist der Zähler groß usw.

Ich habe hier ein Beispiel erstellt, um dies grafisch zu veranschaulichen.

Clustering-Koeffizient Ergebnisse der Clusterbildung für nclusters = 2: 5

In diesen Darstellungen sind die gleichen Daten fünfmal aufgezeichnet; Die Farben geben die durch k-means clustering gebildeten Cluster an, mit k = 1,2,3,4,5. Das heißt, ich habe einen Clustering-Algorithmus erzwungen, um die Daten in zwei Cluster, dann in drei usw. zu unterteilen, und das Diagramm entsprechend eingefärbt.

Das Silhouettendiagramm zeigt, dass der Silhouettenkoeffizient am höchsten war, wenn k = 3, was darauf hindeutet, dass dies die optimale Anzahl von Clustern ist. In diesem Beispiel haben wir das Glück, die Daten visualisieren zu können, und wir sind uns einig, dass tatsächlich drei Cluster die Segmentierung dieses Datensatzes am besten erfassen.

Wenn wir die Daten nicht visualisieren könnten, vielleicht wegen der höheren Dimensionalität, würde uns ein Silhouettenplot immer noch einen Vorschlag geben. Ich hoffe jedoch, dass meine etwas langatmige Antwort hier auch darauf hinweist, dass dieser "Vorschlag" in bestimmten Szenarien sehr unzureichend oder einfach falsch sein könnte.

Ein Mann
quelle
5
Vielen Dank für Ihre ausführliche Antwort, und besonders die Handlungen sind sehr hilfreich. Allerdings habe ich nicht ganz verstanden, wie the average silhouette witdh "suggestion" could be very insufficient or just plain wrong in certain scenarios.Sie behaupten.
Zhubarb,
10

Schauen Sie sich die ToolBox der Cluster Validity Analysis Platform (CVAP) und einige der Materialien (Links) von CVAP an:

Silhouette-Index (durchschnittliche Silhouette insgesamt) Ein größerer Silhouette-Wert zeigt eine bessere Qualität eines Clustering-Ergebnisses an [Chen et al. 2002]

  • N. Bolshakova, F. Azuaje. 2003. Cluster-Validierungstechniken für Genomexpressionsdaten, Signalverarbeitung. V.83. N4, S. 825-833.
  • E. Dimitriadou, S. Dolnicar, A. Weingessel. Eine Untersuchung der Indizes zur Bestimmung der Anzahl der Cluster in Binärdatensätzen. Psychometrika, 67 (1): 137 & ndash; 160, 2002.

Sie können dieses (einfache) Tool auch zum Schätzen der Anzahl der Cluster verwenden

Schauen Sie sich einfach die Beispiele für beide Toolkits an (Sie können auch andere Cluster-Validierungstechniken verwenden).

Sergey
quelle
6

Ich habe heute dasselbe untersucht und hier eine Interpretation gefunden . Es ist logisch sinnvoll, aber ich bin nicht sicher, ob wir die Interpretation für unsere Datensätze blind anwenden können. Zusammenfassend heißt es in diesem Artikel:

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

Es scheint jedoch, als könnten wir die Silhouette-Breite verwenden, um Ausreißer zu fangen. In einer Dokument-Clustering-Aufgabe, die ich derzeit bearbeite, sind diejenigen mit negativer Silhouette-Breite eindeutige Ausreißer (wenn sie mit ihrer semantischen Bedeutung abgeglichen werden). Ich bin nicht sicher, ob sich diese Breite nach dem Entfernen von Ausreißern verbessern wird (dies ist wiederum logisch, aber ich habe dies nicht selbst getan).

Legende
quelle
4
Nur eine geschichtliche Bemerkung, der Tisch stammt ursprünglich aus Sewell, Grandville und PJ Rousseau. "Suchen von Gruppen in Daten: Eine Einführung in die Clusteranalyse." (1990). img546.imageshack.us/img546/4523/cnfg.png (möglicherweise früher in einem Artikel des
Autors
Der Link in der Antwort ist nicht mehr verfügbar. Könnten Sie bitte eine andere Referenz angeben?
BajajG
Hier ist der Link zum Artikel aus dem Webarchiv: web.archive.org/web/20111002220803/http://www.unesco.org:80/…
Justas
1

Wenn Sie versuchen, die Anzahl der Cluster für unbeaufsichtigtes Lernen auszuwählen, können Sie möglicherweise Folgendes versuchen:

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

Sie verwenden mehr als nur das Silhouette-Score-Mittel (sie verwenden die Verteilung), aber es ist sinnvoll. Es scheint kleinere Cluster zu bevorzugen, aber vielleicht könnten Sie dies mit einigen generierten Daten versuchen und sehen, ob dies funktioniert?

Alternativ können Sie dieses Papier überprüfen.

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

Leela Prabhu
quelle