Nachdem wir das Problem eindeutig formuliert haben, wollen wir nun einen Lösungsansatz vorstellen, nämlich den k-Means-Algorithmus. Es handelt sich dabei um ein sogennantes nicht-deterministische Verfahren: Dies bedeutet, dass zufällige Entscheidungen getroffen werden, sodass ein wiederholtes Durchführen des Verfahrens zu durchaus unterschiedlichen Ergebnissen führen kann. Der genaue Ablauf ist wie folgt:
Gegeben sei ein Datensatz (eine Punktmenge) sowie die Anzahl an Clustern, in die der Datensatz aufgeteilt werden soll.
- Wähle zufällig unterschiedliche Objekte (bzw. Punkte) aus dem Datensatz aus und bezeichne diese mit bis .
- Bilde die Cluster bis derart, sodass für der Cluster all diejenigen Objekte (bzw. Punkte) enthält, für die am nächsten ist:
- Aktualisiere bis jeweils durch die Schwerpunkte der zugehörigen Cluster:
- Falls sich die Cluster (und damit die Schwerpunkte) nicht verändert haben, beende das Verfahren. Anderenfalls gehe zu Schritt 2.
Du musst nicht beunruhigt sein, fass du die mathematischen Formulierungen zuvor nicht im Detail nachvollziehen kannst: Der Algorithmus wird anhand der folgenden Anwendung schrittweise veranschaulicht.
Genauer wird ein Datensatz bestehend aus 48 Objekten (Punkten) erstellt, die unter Verwendung des k-Means-Algorithmus in Cluster aufgeteilt werden sollen. Es werden zunächst zufällig unterschiedliche Objekte (bzw. Punkte) gewählt und die zugehörigen Cluster gebildet. Anschließend kannst du den Ablauf Schritt für Schritt durchführen und die Veränderungen beobachten.