K-means rapide comme algorithme pour 10 ^ 10 points?


14

Je cherche à regrouper k-means sur un ensemble de points à 10 dimensions. Le hic: il y a 10 ^ 10 points .

Je recherche juste le centre et la taille des plus grands clusters (disons 10 à 100 clusters); Je me fiche du cluster dans lequel se trouve chaque point. L'utilisation de k-means en particulier n'est pas importante; Je cherche juste un effet similaire, tout k-means approximatif ou algorithme associé serait génial (minibatch-SGD signifie, ...). Puisque GMM est en quelque sorte le même problème que k-means, faire GMM sur les mêmes données de taille est également intéressant.

À cette échelle, le sous-échantillonnage des données ne modifie probablement pas le résultat de manière significative: les chances de trouver les mêmes 10 principaux clusters à l'aide d'un échantillon au 1/10000e des données sont très bonnes. Mais même dans ce cas, c'est un problème de 10 ^ 6 points qui se situe au-delà du bord du tractable.


1
Plusieurs algorithmes sont décrits dans le livre "Mining of Massive Datasets", que vous pouvez télécharger gratuitement ici . Lisez le chapitre 7 "Clustering".
lanenok

Réponses:


12

k-means est basé sur des moyennes .

Il modélise les grappes à l'aide de moyens, et donc l'amélioration en ajoutant plus de données est marginale. L'erreur de l'estimation moyenne diminue de 1 / sqrt (n); donc ajouter plus de données rapporte de moins en moins ...

Les stratégies pour des données aussi volumineuses tournent toujours autour de l'échantillonnage:

Si vous voulez une exécution sublinéaire, vous devez faire un échantillonnage!

En fait, les Mini-Batch-Kmeans etc. font exactement cela: échantillonner à plusieurs reprises à partir de l'ensemble de données.

Cependant, l'échantillonnage (en particulier l'échantillonnage non biaisé) n'est pas exactement gratuit non plus ... généralement, vous devrez lire vos données linéairement pour échantillonner, car vous n'avez pas accès de manière aléatoire aux enregistrements individuels.

J'irais avec l'algorithme de MacQueen. C'est en ligne; par défaut, il effectue un seul passage sur vos données (bien qu'il soit courant de répéter cela). Ce n'est pas facile à distribuer, mais je suppose que vous pouvez vous permettre de lire linéairement vos données, disons 10 fois à partir d'un SSD?


Je ne connaissais pas l'algorithme en ligne de MacQueen! Obtient-il généralement les mêmes résultats que les K-means «classiques»? Qu'en est-il plutôt d'utiliser l'échantillonnage du réservoir? De cette façon, OP dispose d'un échantillon pour relancer K-means au cas où plusieurs valeurs de K devraient être testées.
Victor Ma

6

Comme commentaire secondaire, notez que l'utilisation de K-means pour les données 10D pourrait se retrouver nulle part selon la malédiction de la dimensionnalité. Bien sûr, cela varie un peu selon la nature des données, mais une fois que j'ai essayé de déterminer le seuil auquel K-Means commence à se comporter bizarrement en ce qui concerne la dimension, j'ai obtenu quelque chose comme 7D. Après 7 dimensions, il a commencé à manquer des clusters corrects (mes données ont été générées manuellement selon 4 distributions gaussiennes bien séparées et j'ai utilisé la fonction kmeans MATLAB pour ma petite expérience).


Ceci est possible et, bien entendu, toujours dépendant des données. Cependant, étant donné que l'affiche contient 10 ^ 10 échantillons (probablement indépendants), il semble que 10 dimensions ne seraient pas un problème trop important ici.
Ryan J. Smith

2
Merci pour votre commentaire @ RyanJ.Smith. votre commentaire va exactement dans le même sens que le mien. Je n'ai tout simplement rien vu concernant ce problème dans le post. Et sur le nombre d'échantillons; cependant, il a de nombreux points d'échantillonnage, il pourrait toujours être coincé dans le problème de la dimensionnalité. Je pense que vous soutenez le côté opposé du problème de faible taille d'échantillon qui, je pense, n'est pas valide. S'il a des données dimensionnelles élevées, la faible taille de l'échantillon sera un problème mais je pense qu'une grande quantité de données ne signifie pas nécessairement quelque chose.
Kasra Manshaei

10 dimensions ne sont pas encore beaucoup.
A QUIT - Anony-Mousse

1
Comment déterminez-vous mon ami? ce que j'ai dit était le résultat d'une expérience conçue pour répondre à une telle question mais il NE PEUT PAS être répondu en général! Qu'est-ce que "beaucoup" dans votre commentaire exactement? cela dépend de nombreuses circonstances comme je l'ai mentionné dans ma réponse. dans certaines situations, 10D pourrait être problématique.
Kasra Manshaei
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.