2010-02-22 7 views
13

Viele Algorithmen zum Clustering sind verfügbar. Ein populärer Algorithmus sind die K-Mittel, bei denen basierend auf einer gegebenen Anzahl von Clustern der Algorithmus iteriert, um die besten Cluster für die Objekte zu finden.Mit welcher Methode wählen Sie die optimale Anzahl an Clustern in k-means und EM?

Mit welcher Methode ermitteln Sie die Anzahl der Cluster in den Daten im k-Means-Clustering?

Enthält ein in R verfügbares Paket die Methode V-fold cross-validation zur Bestimmung der richtigen Anzahl von Clustern? Ein weiterer gut verwendeter Ansatz ist der Expectation Maximization (EM) -Algorithmus, der jeder Instanz eine Wahrscheinlichkeitsverteilung zuordnet, die die Wahrscheinlichkeit angibt, dass sie zu jedem der Cluster gehört.

Ist dieser Algorithmus in R implementiert?

Wenn ja, hat es die Möglichkeit, automatisch die optimale Anzahl von Clustern durch Kreuzvalidierung auszuwählen?

Bevorzugen Sie stattdessen eine andere Clustermethode?

+0

Ich habe das hierarchische Clustering bewusst weggelassen, weil hclust eine eher speicherhungrige Methode ist, die nicht für große Datenmengen geeignet ist, an denen ich eigentlich interessiert bin. –

+0

Bitte definieren Sie, was Sie mit "optimal" meinen – hadley

+0

Große Frage @Svante, ich habe viel darüber nachgedacht. Ich wollte sogar ein Paket mit mehreren Algorithmen für eine optimale Anzahl von Clustern schreiben (nur hclust-Methoden). @hadley, habe ich kennen: C-H-Index (Calinsky & Harabasz), C-Index, Goodman-Kruskal Gamma Coef. und es gibt einen Weg, "eine optimale Clusterlösung auszuwählen", indem man den F-Test verwendet. Hier ist ein Hinweis: Miligan, G.W. & Cooper, M.C. (1985). Eine Untersuchung von Verfahren zur Bestimmung der Anzahl von Clustern in einem Datensatz, Psychometrika, 50, 159-179 Obwohl ich annehme, dass Sie bevorzugen "Graph-basierte" Entscheidung über optimale Lösung ... – aL3xa

Antwort

5

Für große "spärliche" Datensätze würde ich ernsthaft "Affinity Propagation" Methode empfehlen. Es hat überlegene Leistung im Vergleich zu k bedeutet und es ist deterministisch in der Natur.

http://www.psi.toronto.edu/affinitypropagation/ Es wurde in der Zeitschrift "Science" veröffentlicht.

Die Auswahl des optimalen Clustering-Algorithmus hängt jedoch von dem in Frage kommenden Datensatz ab. K Means ist eine Textbuchmethode und es ist sehr wahrscheinlich, dass jemand einen besseren Algorithmus entwickelt hat, der für Ihren Datensatz besser geeignet ist.

Dies ist ein gutes Tutorial von Prof. Andrew Moore (CMU, Google) über K Means und hierarchisches Clustering. http://www.autonlab.org/tutorials/kmeans.html

0

Letzte Woche habe ich eine solche Schätzung der Anzahl der Cluster-Algorithmus für ein K-Means Clustering-Programm programmiert. Ich benutzte die Methode nach:

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.70.9687&rep=rep1&type=pdf

Meine größte Implementierung Problem war, dass ich finden hatte einen geeigneten Clustervalidierungs Index (dh Fehlermetrik), die funktionieren würde. Jetzt geht es um die Verarbeitungsgeschwindigkeit, aber die Ergebnisse sehen derzeit vernünftig aus.