Interaktives Graphentheorie-Lernen
Interaktives Graphentheorie-Lernen
Guest User
Using app without sign in
Interaktives K-Means-Clustering-Tool
Gruppiert Städte in perfekt getrennte geografische Gebiete.
Wählen Sie einen Algorithmus und generieren Sie Schritte, um die Visualisierung zu beginnen
K-Means-Clustering teilt Punkte in k Gruppen, indem es jeden Punkt seinem nächsten Clusterzentrum zuordnet und jedes Zentrum in den Mittelwert seiner zugeordneten Punkte verschiebt. Auf Logistiknetze angewandt, gruppiert es Kunden in Servicegebiete oder mögliche Depotzonen.
Der Algorithmus von Lloyd wechselt zwei Schritte ab, bis Stabilität erreicht ist: jeden Punkt dem nächsten Zentroid zuordnen, dann jeden Zentroid als Durchschnitt seiner Punkte neu berechnen. Jede Iteration kostet O(nk) Distanzberechnungen, und das Ziel, die Summe der quadrierten Distanzen, nimmt nie zu. Die Initialisierung ist wichtig: k-Means++ verteilt die Startzentroide probabilistisch und liefert nachweislich bessere erwartete Ergebnisse. Ellbogenmethode oder Silhouettenwerte leiten die Wahl von k.
Im Lieferkettenentwurf bildet k-Means Zustellzonen und verortet mögliche Lager an Clusterzentren vor der exakten Optimierung. Über die Logistik hinaus treibt es Kundensegmentierung, Bildkompression, Baselines zur Anomalieerkennung und Vektorquantisierung in Machine-Learning-Pipelines an.
Zwei Schritte im Wechsel, bis sich nichts mehr ändert: jeden Punkt dem nächstgelegenen Zentroid zuordnen und danach jeden Zentroid auf den Mittelwert der ihm zugeordneten Punkte verschieben.
KMeans(punkte, k):
k Zentroide initialisieren (zufällig oder k-means++)
wiederhole, bis sich die Zuordnungen nicht mehr ändern:
// Zuordnungsschritt
für jeden Punkt p:
cluster[p] = argmin über c von distanz(p, c)
// Aktualisierungsschritt
für jeden Zentroid c:
c = Mittelwert aller Punkte mit cluster[p] == c
gib Cluster und Zentroide zurückJeder Schritt senkt die Summe der quadrierten Abstände innerhalb der Cluster oder lässt sie gleich, und es gibt nur endlich viele mögliche Zuordnungen, der Algorithmus terminiert also stets. Nicht garantiert ist, dass er im globalen Optimum endet: er konvergiert gegen ein lokales Minimum, das vollständig von der Initialisierung abhängt, und genau das ist die praktische Einschränkung, die man handhaben muss.
Gruppiere vier Punkte in zwei Cluster, ausgehend von einer bewusst schlechten Initialisierung, bei der beide Zentroide im selben echten Cluster liegen.
Beispielgraph: Punkte bei (1,1), (2,1), (8,8) und (9,8). Anfangszentroide auf (1,1) und (2,1) gesetzt, also beide im linken unteren Cluster.
Die Konvergenz tritt nach zwei Iterationen ein, und die Summe der quadrierten Abstände fällt von 61,333 auf 1,0. Beachte, dass sich der Algorithmus von einer bewusst schlechten Initialisierung erholt hat, bei der beide Zentroide im selben echten Cluster lagen. Das ist nicht garantiert: bei anderen Daten kann eine solche Initialisierung dich in einem lokalen Minimum festhalten. Genau deshalb wählt k-means++ die Anfangszentren weit auseinander, und deshalb lohnt es sich, den Algorithmus mehrfach mit verschiedenen Initialisierungen laufen zu lassen.
Zeit: O(n · k · i · d) · Speicher: O(n + k·d)
Jede Iteration ordnet n Punkte zu, indem sie mit k Zentroiden in d Dimensionen verglichen werden, was O(n mal k mal d) ergibt, und der Aktualisierungsschritt durchläuft die Punkte noch einmal mit denselben Kosten. Bei i Iterationen ergibt das insgesamt O(n mal k mal i mal d). In der Praxis ist i meist klein, in der Größenordnung von Dutzenden, im schlechtesten Fall kann es jedoch superpolynomiell wachsen. Der Speicher besteht aus der Clusterzuordnung je Punkt plus den k Zentroiden. Das optimale Clustering nach quadrierter Abstandssumme zu finden ist selbst für k gleich 2 NP-schwer, der überall verwendete Lloyd-Algorithmus ist also eine Heuristik: schnell und praktisch gut, ohne Optimalitätsgarantie.
Wähle danach, welche Clusterform du erwartest und ob dir k vorab bekannt ist.
| Alternative | Vorzuziehen, wenn | Kosten |
|---|---|---|
| K-Means mit k-means++ | Die Voreinstellung. Ungefähr kugelförmige Cluster ähnlicher Größe bei bekanntem k. | O(n · k · i · d) |
| DBSCAN | Die Cluster haben beliebige Formen oder es gibt Rauschen, und k ist vorab unbekannt. | O(n log n) mit Index |
| Hierarchisches Clustering | Du willst ein Dendrogramm und die Clusterzahl erst nach Sichtung der Struktur festlegen. | O(n^2 log n) |
| K-Medoids (PAM) | Die Zentren müssen echte Datenpunkte sein, oder Ausreißer verzerren die Mittelwerte. | O(k·(n-k)^2) |
| Gaußsche Mischmodelle | Du willst weiche Zugehörigkeit und elliptische Cluster statt harter, kugelförmiger Zuordnungen. | O(n · k · i · d^2) |
Den ganzen Artikel lesen: Operations Research and Graph Theory
Verwandte Algorithmen: Standortplanung, Flottendisposition (mTSP)