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?
clustering
Björn Pollex
quelle
quelle
Antworten:
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.
quelle
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.
quelle
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).
quelle