K-Means-Algorithmus zum Clustern von Daten

Ziel

Daten sollen so in Gruppen angeordnet werden, so dass ähnliche Daten in einer Gruppe sind.

Algorithmus

  1. Schritt: Bestimme die Anzahl der Gruppen (K)
    Angenommen, du willst zwei Gruppen bilden. Dann setzt du K=2, also zwei Cluster.
  2. Schritt: Wähle zufällige Startpunkte
    Der Algorithmus wählt zwei zufällige Datensätze als erste „Mittelpunkte“ der beiden Gruppen. Diese Mittelpunkte nennt man Zentroiden.
  3. Schritt: Weise jedem Datensatz eine Gruppe zu
    Jeder Datensatz wird nun der Gruppe zugewiesen, deren Mittelpunkt ihm am nächsten ist.
  4. Schritt: Berechne neue Mittelpunkte
    Nachdem alle Datensätze einer Gruppe zugeordnet wurden, berechnet der Algorithmus den neuen Mittelpunkt jeder Gruppe. Dazu nimmt er den Durchschnitt aller Werte der Datensätze in einer Gruppe.
  5. Schritt: Wiederhole die Schritte 3 und 4
    Die Datensätze werden erneut der nächsten Gruppe zugeordnet, basierend auf den neuen Mittelpunkten. Das wiederholt sich, bis sich die Gruppen nicht mehr verändern.

Beispiel 1: Kundengruppen im Supermarkt

Angenommen, ein Supermarkt möchte seine Kunden in Gruppen einteilen, um gezielte Werbung zu machen. Der Supermarkt hat Daten darüber, wie oft Kunden einkaufen und wie viel Geld sie im Monat ausgeben.

Kunde Einkäufe pro Monat Monatsausgaben (€)
A 2 50
B 10 400
C 4 120
D 8 350
E 4 180
F 7 480

Java-Implementierung

Download der Java-Quelltexte

Java-Quelltexte herunterladen

Auswertung

Kunden-Zuordnung zu Clustern:
Kunde 1 (Einkäufe: 2, Ausgaben: 50) -> Cluster 1
Kunde 2 (Einkäufe: 10, Ausgaben: 400) -> Cluster 2
Kunde 3 (Einkäufe: 4, Ausgaben: 120) -> Cluster 1
Kunde 4 (Einkäufe: 8, Ausgaben: 350) -> Cluster 2
Kunde 5 (Einkäufe: 4, Ausgaben: 180) -> Cluster 1
Kunde 6 (Einkäufe: 7, Ausgaben: 480) -> Cluster 2

Finale Cluster-Zentroiden:
Cluster 1: (Einkäufe: 3,33, Ausgaben: 116,67)
Cluster 2: (Einkäufe: 8,33, Ausgaben: 410,00)

Beispiel 2: Goldsucher mit Greenfoot

Greenfoot-Implementierung

Download des Projekts