Konvergenz in der Hartigan-Wong k-means-Methode und anderen Algorithmen

10

Ich habe versucht, die verschiedenen k-means Clustering-Algorithmen zu verstehen, die hauptsächlich im statsPaket der RSprache implementiert sind .

Ich verstehe den Lloyd's-Algorithmus und den MacQueen-Online-Algorithmus. Ich verstehe sie wie folgt:

Lloyd's Algorithmus:

Zunächst werden 'k'-Zufallsbeobachtungen ausgewählt, die als Schwerpunkte der' k'-Cluster dienen. Dann treten die folgenden Schritte in der Iteration auf, bis die Zentroide konvergieren.

  1. Der euklidische Abstand zwischen jeder Beobachtung und den ausgewählten Schwerpunkten wird berechnet.
  2. Die Beobachtungen, die den einzelnen Zentroiden am nächsten sind, sind in "k" -Eimern markiert.
  3. Der Mittelwert aller Beobachtungen in jedem Eimer dient als neue Schwerpunkte.
  4. Die neuen Zentroide ersetzen die alten Zentroide und die Iteration geht zurück zu Schritt 1, wenn die alten und neuen Zentroide nicht konvergiert haben.

Die Bedingungen für die Konvergenz sind folgende: Die alten und die neuen Zentroide sind genau identisch, der Unterschied zwischen den Zentroiden ist gering (in der Größenordnung von 10 ^ -3) oder die maximale Anzahl von Iterationen (10 oder 100) wird erreicht.

MacQueens Algorithmus:

Dies ist eine Online-Version, bei der die ersten 'k'-Instanzen als Schwerpunkte ausgewählt werden.

Dann wird jede Instanz in Buckets platziert, je nachdem, welcher Schwerpunkt dieser Instanz am nächsten liegt. Der jeweilige Schwerpunkt wird neu berechnet.

Wiederholen Sie diesen Schritt, bis jede Instanz in den entsprechenden Bucket gestellt wird.

Dieser Algorithmus hat nur eine Iteration und die Schleife wird für 'x'-Instanzen fortgesetzt

Hartigan-Wong-Algorithmus:

  1. Ordnen Sie alle Punkte / Instanzen zufälligen Buckets zu und berechnen Sie den jeweiligen Schwerpunkt.
  2. Suchen Sie ausgehend von der ersten Instanz den nächsten Schwerpunkt und bewerten Sie diesen Eimer. Wenn sich der Bucket geändert hat, berechnen Sie die neuen Schwerpunkte neu, dh den Schwerpunkt des neu zugewiesenen Buckets und den Schwerpunkt der alten Bucket-Zuordnung, da dies zwei Schwerpunkte sind, die von der Änderung betroffen sind
  3. Durchlaufen Sie alle Punkte und erhalten Sie neue Schwerpunkte.
  4. Führen Sie eine zweite Iteration der Punkte 2 und 3 durch, die eine Art Bereinigungsvorgang ausführt und Streupunkte neu zuordnet, um die Eimer zu korrigieren.

Dieser Algorithmus führt also zwei Iterationen durch, bevor wir das Konvergenzergebnis sehen.

Ich bin mir nicht sicher, ob das, was ich in Punkt 4 des Hartigan-Wong-Algorithmus denke, die richtige Methode des Algorithmus ist. Meine Frage ist, ob die folgende Methode für Hartigan-Wong die richtige Methode ist, um k-means zu implementieren. Gibt es nur zwei Iterationen für diese Methode? Wenn nicht, wie ist die Bedingung für die Konvergenz (wann zu stoppen)?

Eine andere mögliche Erklärung für die Implementierung, die ich verstehe, ist.

  1. Ordnen Sie alle Punkte / Instanzen zufälligen Buckets zu und berechnen Sie den jeweiligen Schwerpunkt.
  2. Suchen Sie ausgehend von der ersten Instanz den nächsten Schwerpunkt und weisen Sie diesen Bucket zu. Wenn sich der Bucket geändert hat, berechnen Sie die neuen Schwerpunkte neu, dh den Schwerpunkt des neu zugewiesenen Buckets und den Schwerpunkt der alten Bucket-Zuordnung, da dies zwei Schwerpunkte sind, die von der Änderung betroffen sind.
  3. Sobald sich der Bucket für einen beliebigen Punkt geändert hat, kehren Sie zur ersten Instanz zurück und wiederholen Sie die Schritte erneut.
  4. Die Iteration endet, wenn alle Instanzen iteriert sind und keiner der Punkte den Bucket ändert.

Auf diese Weise gibt es viele Iterationen, die jedes Mal, wenn eine Instanz Buckets ändert, am Anfang des Datasets beginnen.

Alle Erklärungen wären hilfreich und lassen Sie mich bitte wissen, wenn mein Verständnis für eine dieser Methoden falsch ist.

Sid
quelle
Was ist ein "Eimer"?
Hat aufgehört - Anony-Mousse
@ Anony-Mousse "Bucket" ist ein "Cluster". Zum Beispiel: k-means wird verwendet, um die Daten in 'k'-Buckets / Cluster zu unterteilen
Sid
Aber dann klingt es wie ein MacQueens-Algorithmus.
Hat aufgehört - Anony-Mousse
@ Anony-Mousse. Ja, abgesehen vom ersten Schritt scheint Hartigan-Wong genau wie der MacQueens-Algorithmus zu sein. Ich bin mir aber nicht sicher, ob dies das richtige Verständnis ist. Möglicherweise fehlt mir ein Konzept für Iterationen und Konvergenz.
Sid

Antworten:

1

Der HW-Algorithmus aus dem Artikel von 1979 verwendet als Eingabe anfängliche Cluster. Die Autoren schlagen jedoch in ihrem letzten Abschnitt eine Methode vor, um sie zu erhalten. Sie schreiben, dass garantiert ist, dass kein Cluster nach der anfänglichen Zuweisung in der Unterroutine leer ist . Es geht wie folgt:

  1. x¯
  2. x¯||xix¯||2
  3. {1+(L1)[M/K]}L=1,,K[  ]1

Der Hauptalgorithmus wird in einem Artikel mit dem Titel Hartigans K-Mittel gegen Lloyds K-Mittel beschrieben. Ist es Zeit für eine Änderung? von N. Slonim, E. Aharoni, K. Crammer, veröffentlicht 2013 von AJCAI . Beachten Sie, dass diese Version einfach eine zufällige Anfangspartition verwendet. Es geht wie folgt.

xXK

  1. CXKCCvC

  2. XxX

    s=1

    xCC=C{x}

    C+={argminC(CC)C 1nd(x,vC)+1nyC[d(y,vCx)d(y,vC)]}{x}

    C+CCCCC+vCvCs0

  3. s=0

CargminxCdvCvC{x}

Ich denke, die Antworten auf alle Ihre Fragen sind im obigen Algorithmus enthalten ... Ich muss jedoch noch sicherstellen, dass diese Implementierung des Algorithmus Standard ist . Insbesondere wenn es sich um die in R implementierte handelt. Kommentare / Änderungen sind willkommen.

Perochkin
quelle