J'ai essayé de comprendre les différents algorithmes de clustering k-means principalement qui sont implémentés dans le stats
package du R
langage.
Je comprends l'algorithme de Lloyd et l'algorithme en ligne de MacQueen. La façon dont je les comprends est la suivante:
Algorithme de Lloyd:
Initialement, on choisit des observations aléatoires «k» qui serviront de centroïdes aux clusters «k». Ensuite, les étapes suivantes se produisent dans l'itération jusqu'à ce que les centroïdes convergent.
- La distance euclidienne entre chaque observation et les centroïdes choisis est calculée.
- Les observations les plus proches de chaque centroïde sont marquées dans des seaux «k».
- La moyenne de toutes les observations dans chaque seau sert de nouveaux centroïdes.
- Les nouveaux centroïdes remplacent les anciens centroïdes et l'itération revient à l'étape 1 si les anciens et les nouveaux centroïdes n'ont pas convergé.
Les conditions de convergence sont les suivantes: l'ancien et le nouveau centroïdes sont exactement identiques, la différence entre les centroïdes est faible (de l'ordre de 10 ^ -3) ou le nombre maximal d'itérations (10 ou 100) est atteint.
Algorithme de MacQueen:
Il s'agit d'une version en ligne où les premières instances «k» sont choisies comme centroïdes.
Ensuite, chaque instance est placée dans des compartiments en fonction du centroïde le plus proche de cette instance. Le centroïde respectif est recalculé.
Répétez cette étape jusqu'à ce que chaque instance soit placée dans le compartiment approprié.
Cet algorithme n'a qu'une seule itération et la boucle continue pour les instances 'x'
Algorithme de Hartigan-Wong:
- Attribuez tous les points / instances à des compartiments aléatoires et calculez le centroïde respectif.
- À partir de la première instance, recherchez le centroïde le plus proche et assignez ce compartiment. Si le compartiment a changé, recalculez les nouveaux centroïdes, c'est-à-dire le centroïde du nouveau compartiment affecté et le centroïde de l'ancienne affectation de compartiment, car ce sont deux centroïdes affectés par la modification.
- Parcourez tous les points et obtenez de nouveaux centroïdes.
- Effectuez une deuxième itération des points 2 et 3 qui effectue une sorte d'opération de nettoyage et réaffecte les points parasites aux bons compartiments.
Cet algorithme effectue donc 2 itérations avant de voir le résultat de la convergence.
Maintenant, je ne sais pas si ce que je pense au point 4 de l'algorithme Hartigan-Wong est la bonne méthode de l'algorithme. Ma question est, si la méthode suivante pour Hartigan-Wong est la bonne méthode pour implémenter k-means? Y a-t-il seulement deux itérations pour cette méthode? sinon, quelle est la condition de convergence (quand s'arrêter)?
Une autre explication possible de la mise en œuvre est ce que je comprends.
- Attribuez tous les points / instances à des compartiments aléatoires et calculez le centroïde respectif.
- À partir de la première instance, recherchez le centroïde le plus proche et affectez ce compartiment. Si le compartiment a changé, recalculez les nouveaux centroïdes, c'est-à-dire le centroïde du nouveau compartiment affecté et le centroïde de l'ancienne affectation de compartiment, car ce sont deux centroïdes affectés par la modification.
- Une fois qu'il y a un changement dans le compartiment pour n'importe quel point, revenez à la première instance et répétez les étapes à nouveau.
- L'itération se termine lorsque toutes les instances sont itérées et qu'aucun des points ne change de compartiment.
De cette façon, de nombreuses itérations recommencent depuis le début de l'ensemble de données à chaque fois qu'une instance change de compartiment.
Toutes les explications seraient utiles et veuillez me faire savoir si ma compréhension de l'une de ces méthodes est erronée.
la source
Réponses:
L'algorithme de HW, issu de l'article de 1979, prend en entrée les grappes initiales. Cependant, les auteurs suggèrent une méthode pour les obtenir dans leur dernière section. Ils écrivent qu'il est garanti qu'aucun cluster ne sera vide après l'affectation initiale dans le sous-programme . Il se déroule comme suit:
Quant à l'algorithme principal, il est décrit dans un article intitulé K-Means de Hartigan versus K-Means de Lloyd-Est-il temps de changer? par N Slonim, E Aharoni, K Crammer, publié en 2013 par AJCAI . Notez que cette version utilise simplement une partition initiale aléatoire. Cela se passe comme suit.
Pour les vecteurs et un nombre cible de clusters ,x ∈ X K
Je pense que les réponses à toutes vos questions sont implicites dans l'algorithme ci-dessus ... Cependant, je dois encore m'assurer que cette implémentation de l'algorithme est standard . En particulier s'il s'agit de celui implémenté dans R. Tous les commentaires / modifications sont les bienvenus.
la source