Autant que je sache, k-means sélectionne les centres initiaux de manière aléatoire. Puisqu'ils sont basés sur la pure chance, ils peuvent être très mal sélectionnés. L'algorithme K-means ++ tente de résoudre ce problème en répartissant uniformément les centres initiaux.
Les deux algorithmes garantissent-ils les mêmes résultats? Ou il est possible que les centroïdes initiaux mal choisis conduisent à un mauvais résultat, peu importe le nombre d'itérations.
Disons qu'il existe un ensemble de données donné et un nombre donné de clusters souhaités. Nous exécutons un algorithme k-means tant qu'il converge (plus de mouvement central). Existe-t-il une solution exacte à ce problème de cluster (étant donné SSE), ou k-means produira parfois un résultat différent lors de la réexécution?
S'il existe plus d'une solution à un problème de clustering (ensemble de données donné, nombre de clusters donné), K-means ++ garantit-il un meilleur résultat, ou juste un plus rapide? Par mieux, je veux dire un SSE inférieur.
La raison pour laquelle je pose ces questions est que je suis à la recherche d'un algorithme k-means pour regrouper un énorme ensemble de données. J'ai trouvé des k-means ++, mais il y a aussi des implémentations CUDA. Comme vous le savez déjà, CUDA utilise le GPU, et il peut exécuter plusieurs centaines de threads en parallèle. (Cela peut donc vraiment accélérer tout le processus). Mais aucune des implémentations CUDA - que j'ai trouvées jusqu'à présent - n'a d'initialisation k-means ++.
k-means picks the initial centers randomly
. La sélection des centres initiaux ne fait pas partie de l'algorithme k-means lui-même. Les centres pourraient être choisis n'importe où. Une bonne implémentation de k-means offrira plusieurs options pour définir les centres initiaux (aléatoires, définis par l'utilisateur, points k-