2010-02-22 11 views
13

Sono disponibili molti algoritmi per il clustering. Un algoritmo popolare è il K-significa dove, in base a un dato numero di cluster, l'algoritmo itera per trovare i migliori cluster per gli oggetti.Quale metodo si usa per selezionare il numero ottimale di cluster in k-means e EM?

Quale metodo si utilizza per determinare il numero di cluster nei dati in k-means clustering?

Qualche pacchetto disponibile in R contiene il metodo V-fold cross-validation per determinare il numero corretto di cluster?

Un altro approccio ben utilizzato è l'algoritmo Expectation Maximization (EM) che assegna una distribuzione di probabilità a ciascuna istanza che indica la probabilità che appartenga a ciascuno dei cluster.

Questo algoritmo è implementato in R?

In caso affermativo, ha la possibilità di selezionare automaticamente il numero ottimale di cluster mediante convalida incrociata?

Preferisci invece un altro metodo di clustering?

+0

Ho intenzionalmente omesso il clustering gerarchico perché hclust è un metodo piuttosto affamato di memoria, non adatto a dataset di grandi dimensioni in cui sono in realtà per lo più interessato. –

+0

Si prega di definire cosa intendi per "ottimale" – hadley

+0

Grande domanda @Svante, ho pensato molto a quello. Intendevo persino scrivere un pacchetto con diversi algoritmi per il numero ottimale di cluster (solo i metodi hclust). @hadley, ho conoscenza con: indice C-H (Calinsky e Harabasz), indice C, co-gamma gamma Goodman-Kruskal. e c'è un modo per "scegliere una soluzione cluster ottimale" utilizzando il test F. Ecco un riferimento: Miligan, G.W. & Cooper, M.C. (1985). Un esame delle procedure per determinare il numero di cluster in un set di dati, Psychometrika, 50, 159-179 Anche se presumo che si preferisca una decisione "basata su grafici" sulla soluzione ottimale ... – aL3xa

risposta

5

Per i set di dati "sparsi" di grandi dimensioni raccomanderei seriamente il metodo "Propagazione affinità". Ha prestazioni superiori rispetto a k significa ed è deterministico in natura.

http://www.psi.toronto.edu/affinitypropagation/ E 'stato pubblicato sulla rivista "Science".

Tuttavia, la scelta dell'algoritmo di cluster ottimale dipende dal set di dati considerato. K Mezzi è un metodo di libro di testo ed è molto probabile che qualcuno abbia sviluppato un algoritmo migliore più adatto al tipo di set di dati/

Questo è un buon tutorial del Prof. Andrew Moore (CMU, Google) su K Means e Clustering gerarchico. http://www.autonlab.org/tutorials/kmeans.html

0

La scorsa settimana ho codificato un algoritmo di stima-numero-di-cluster per un programma di clustering K-Means. Ho usato il metodo descritto in:

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

mio problema più grande implementazione è stata che ho dovuto trovare un adeguato Cluster Validation Index (vale a dire metrica di errore) che avrebbe funzionato. Ora è una questione di velocità di elaborazione, ma i risultati attualmente sembrano ragionevoli.

Problemi correlati