Welche Stop-Kriterien für agglomeratives hierarchisches Clustering werden in der Praxis verwendet?

32

Ich habe umfangreiche Literatur gefunden, die alle möglichen Kriterien vorschlägt (z . B. Glenn et al. 1985 (pdf) und Jung et al. 2002 (pdf)). Die meisten davon sind jedoch nicht so einfach zu implementieren (zumindest aus meiner Sicht). Ich verwende scipy.cluster.hierarchy , um eine Clusterhierarchie zu erhalten, und ich versuche jetzt zu entscheiden, wie daraus flache Cluster gebildet werden sollen. Mein Ziel ist es, gemeinsame Muster in meinen Beobachtungen zu entdecken, daher habe ich keinen Bezug zum Vergleich der erhaltenen Clusterbildung. Kann jemand eine pragmatische Lösung vorschlagen?

Björn Pollex
quelle
Auf meiner Webseite gibt es die Zip-Sammlung "Clustering-Kriterien" mit der Beschreibung (und den SPSS-Funktionen) einer Reihe gängiger interner Clustering-Kriterien (Stoppregeln). Zu deiner Information.
TTNPHNS

Antworten:

18

Mit dem folgenden Wikipedia-Eintrag lassen sich die beliebtesten und relativ einfachen Methoden recht gut erklären:

Die dort beschriebene Heuristik nach der Ellenbogenmethode ist wahrscheinlich die beliebteste, da sie einfach zu erklären ist (Betrag der Varianz, erklärt durch die Anzahl der Cluster) und visuell zu überprüfen ist. Die informationstheoretische Methode ist auch nicht schwer zu implementieren, und die Seite enthält einen Pseudocode, den Sie zum Starten verwenden können. Letzteres ist vergleichbar mit einer Bestrafungswahrscheinlichkeit, die auf der Komplexität des Modells basiert, wie dies bei bekannten Informationskriterien wie AIC, BIC usw. der Fall ist.

ars
quelle
Vielen Dank! Der Wikipedia-Artikel über hierarchisches Clustering ist nicht mit diesem Artikel verknüpft.
Björn Pollex,
2
Oh, richtig. Behoben jetzt unter "Siehe auch" Links, danke für den Hinweis!
ars
Was passiert bei der Ellbogenmethode, wenn die zu gruppierenden Objekte ziemlich "komplex" sind? Ich meine, es sind keine einfachen Punkte, sondern komplexe Datensammlungen. Ich habe herausgefunden, dass sie paarweise voneinander entfernt sind (selbst definierte Entfernung). Wie würde ich hier die sogenannte "Varianz" berechnen, um die Ellbogenmethode anzuwenden?
Sibbs Gambling
17

Es ist ziemlich schwierig, eine eindeutige Lösung für die Auswahl der "besten" Anzahl von Clustern in Ihren Daten zu finden, unabhängig von der von Ihnen verwendeten Cluster-Methode, da die Cluster-Analyse versucht, Gruppen statistischer Einheiten (Einzelpersonen oder Variablen) zu isolieren ) zu explorativen oder beschreibenden Zwecken. Daher müssen Sie auch die Ausgabe Ihres Clustering-Schemas interpretieren, und mehrere Cluster-Lösungen können gleichermaßen interessant sein.

Was nun die üblichen statistischen Kriterien anbelangt, die verwendet werden, um zu entscheiden, wann die Aggregation von Daten beendet werden soll, sind die meisten von @ars angegebenen visuell geführten Kriterien , einschließlich der Analyse des Dendrogramms oder der Inspektion von Clusterprofilen, auch Silhouette- Plots genannt (Rousseeuw, 1987). . Verschiedene numerische Kriterien , auch als Validitätsindizes bekannt, wurden ebenfalls vorgeschlagen, z. B. Dunns Validitätsindex, Davies-Bouldin-Validitätsindex, C-Index, Huberts Gamma, um nur einige zu nennen. Hierarchisches Clustering wird häufig zusammen mit k-means ausgeführt (in der Tat mehrere Instanzen von k-means, da es sich um einen stochastischen Algorithmus handelt), um die gefundenen Clustering-Lösungen zu unterstützen. Ich weiß nicht, ob all diese Dinge in Python leicht verfügbar sind, aber in R ist eine große Anzahl von Methoden verfügbar (sieheCluster- Task-Ansicht, die bereits von @mbq für eine verwandte Frage zitiert wurde: Welche Tools können zum Anwenden von Cluster-Algorithmen auf MovieLens verwendet werden? ). Andere Ansätze umfassen Fuzzy-Clustering und modellbasiertes Clustering ( in der psychometrischen Community auch Latent Trait Analysis genannt ), wenn Sie nach einer zuverlässigeren Methode suchen, um die Anzahl der Cluster in Ihren Daten zu bestimmen.

Übrigens, ich bin gerade auf diese Webseite gestoßen , scipy-cluster , eine Erweiterung von Scipy zum Generieren, Visualisieren und Analysieren von hierarchischen Clustern . Vielleicht beinhaltet es andere Funktionalitäten? Ich habe auch von PyChem gehört, das ziemlich gutes Material für multivariate Analysen bietet.

Die folgende Referenz kann ebenfalls hilfreich sein:

Steinley, D. & Brusco, MJ (2008). Variablenauswahl in der Clusteranalyse: Ein empirischer Vergleich von acht Verfahren. Psychometrika , 73 , 125 & ndash; 144.

chl
quelle
Vielen Dank für diese hervorragende Antwort! Tatsächlich ist das von Ihnen gezeigte hierarchische Clustering-Modul bereits Teil von scipy. Außerdem bietet scipy eine Implementierung von k-means, so dass ich das leicht gebrauchen kann.
Björn Pollex,
Ok, ich habe das nicht im Detail untersucht. Bei k-means müssen Sie darauf achten, dass wir im Allgemeinen zwei äußere Schleifen zur Validierung der Cluster-Lösung benötigen (eine, bei der Sie die Anzahl der Cluster und eine andere für die Variation des Seeds variieren - das Ziel ist die Minimierung des RSS). Dann können Sie die Gap-Statistik verwenden, um die optimale Anzahl von Clustern auszuwählen.
Chl
5

Ich wurde kürzlich zum Fund der Clustergramm-Visualisierungsmethode (implementiert in R).

Ich benutze es als zusätzliche Methode, um eine "gute" Anzahl von Clustern zu bestimmen. Es ist nicht so schwierig, es auf andere Clustering-Methoden auszudehnen (ich habe es tatsächlich getan und konnte den Code nur nicht veröffentlichen).

Alt-Text

Tal Galili
quelle