2010-02-22 5 views
13

De nombreux algorithmes de clustering sont disponibles. Un algorithme populaire est le K-means où, basé sur un nombre donné de clusters, l'algorithme itère pour trouver les meilleurs clusters pour les objets.Quelle méthode utilisez-vous pour sélectionner le nombre optimal de clusters dans k-means et EM?

Quelle méthode utilisez-vous pour déterminer le nombre de clusters dans les données du clustering k-means?

Est-ce qu'un paquet disponible dans R contient la méthode V-fold cross-validation pour déterminer le bon nombre de clusters?

Une autre approche bien utilisée est l'algorithme de maximisation des attentes (EM) qui assigne une distribution de probabilité à chaque instance qui indique la probabilité qu'elle appartienne à chacun des clusters.

Cet algorithme est-il implémenté dans R?

Si tel est le cas, at-il la possibilité de sélectionner automatiquement le nombre optimal de clusters par validation croisée?

Préférez-vous plutôt une autre méthode de clustering?

+0

J'ai délibérément omis le clustering hiérarchique car hclust est une méthode plutôt gourmande en mémoire, qui ne convient pas aux grands jeux de données dans lesquels je suis surtout intéressé. –

+0

S'il vous plaît définir ce que vous entendez par "optimal" – hadley

+0

Grande question @Svante, j'ai beaucoup réfléchi à ce sujet. J'ai même l'intention d'écrire un paquet avec plusieurs algorithmes pour un nombre optimal de clusters (méthodes hclust seulement). @hadley, j'ai connu: indice C-H (Calinsky & Harabasz), indice C, Goodman-Kruskal gamma coef. et il existe un moyen de "choisir une solution de cluster optimale" en utilisant le test F. Voici une référence: Miligan, G.W. & Cooper, M.C. (1985). Un examen des procédures pour déterminer le nombre de grappes dans un ensemble de données, Psychometrika, 50, 159-179 Bien que je suppose que vous préférez la décision "graphique" sur la solution optimale ... – aL3xa

Répondre

5

Pour les grands ensembles de données «clairsemés», je recommande sérieusement la méthode de «propagation par affinité». Il a des performances supérieures à celles de k et il est de nature déterministe.

http://www.psi.toronto.edu/affinitypropagation/ Il a été publié dans le journal "Science". Cependant, le choix de l'algorithme de regroupement optimal dépend de l'ensemble de données considéré. K Means est une méthode de livre de texte et il est très probable que quelqu'un a développé un meilleur algorithme plus approprié pour votre type de jeu de données/

Ceci est un bon tutoriel par le professeur Andrew Moore (CMU, Google) sur K Means et Clustering hiérarchique. http://www.autonlab.org/tutorials/kmeans.html

0

La semaine dernière j'ai codé un tel algorithme d'estimation-le-nombre-de-clusters pour un programme de mise en grappe de K-Means. J'ai utilisé la méthode décrite dans:

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

Mon plus gros problème de mise en œuvre était que je devais trouver un indice de validation du cluster approprié (par exemple erreur métrique) qui fonctionnerait. Maintenant, il s'agit d'une question de vitesse de traitement, mais les résultats semblent actuellement raisonnables.

Questions connexes