Une approche qui donne des résultats plus cohérents est K-means ++ . Cette approche reconnaît qu'il existe probablement un meilleur choix d'emplacements centroïdes initiaux qu'une simple assignation aléatoire. Plus précisément, K-means a tendance à mieux fonctionner lorsque les centroïdes sont ensemencés de manière à ne pas les regrouper dans l'espace.
En bref, la méthode est la suivante:
- Choisissez l'un de vos points de données au hasard comme centroïde initial.
- Calculez , la distance entre votre centroïde initial et tous les autres points de données, .D ( x )X
- Choisissez votre prochain centroïde parmi les points de données restants avec une probabilité proportionnelle àD ( x )2
- Répétez jusqu'à ce que tous les centroïdes aient été attribués.
Remarque: doit être mis à jour à mesure que d'autres centroïdes sont ajoutés. Il doit être défini comme la distance entre un point de données et le centroïde le plus proche.D ( x )
Vous pouvez également être intéressé par la lecture de cet article qui propose la méthode et décrit ses performances globales attendues.
L'approche habituelle de ce problème consiste à réexécuter votre algorithme K-means plusieurs fois, avec différentes initialisations aléatoires des centroïdes, et à conserver la meilleure solution. Vous pouvez le faire en évaluant les résultats sur vos données d'entraînement ou au moyen d'une validation croisée.
Il existe de nombreuses autres façons d'initialiser les centroïdes, mais aucune d'entre elles ne donnera les meilleurs résultats pour chaque problème. Vous pouvez évaluer ces approches avec une initialisation aléatoire pour votre problème particulier.
la source
Je suis d'accord avec l'intrigue Elbow / Scree. Je l'ai trouvé plus intuitivement sensible qu'une graine aléatoire. Voici un exemple de code pour l'essayer.
la source