Clustering
Gruppen in Daten finden, ohne sie vorher zu kennen: k-Means, HDBSCAN und die Frage, wann ein Cluster mehr ist als eine Rechenoperation.
Die Idee
Sie haben zehntausend Kundendatensätze und keine Segmentierung. Clustering legt sie so auf einen Tisch, dass Ähnliches beieinanderliegt, und zeichnet Kreise darum. Welche Kreise sinnvoll sind, entscheidet danach ein Mensch.
Wozu es gut ist
- Kundensegmente als Ausgangspunkt für eine Diskussion, nicht als Ergebnis.
- Ähnliche Fehlermeldungen bündeln, bevor jemand sie liest.
- Sortimente ordnen, Standorte gruppieren, Textbestände sichten.
Die Verfahren im Vergleich
| Verfahren | Form der Gruppen | Rauschen erlaubt | Anzahl vorgeben |
|---|---|---|---|
| k-Means | kugelig, ähnlich groß | nein | ja |
| Gaußsche Mischung | elliptisch | nein | ja |
| Agglomerativ | beliebig, hierarchisch | nein | ja oder Schnitt |
| DBSCAN | beliebig, gleiche Dichte | ja | nein |
| HDBSCAN | beliebig, wechselnde Dichte | ja | nein |
import numpy as np
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score, adjusted_rand_score
from sklearn.preprocessing import StandardScaler
rng = np.random.default_rng(0)
X = np.vstack([rng.normal(m, s, (200, 2))
for m, s in ([(0,0), .5], [(5,5), .8], [(0,6), .4])])
X = StandardScaler().fit_transform(X)
# Stabilitaet pruefen: zwei Laeufe auf zwei Haelften, dann vergleichen.
a = KMeans(3, n_init=10, random_state=1).fit_predict(X)
b = KMeans(3, n_init=10, random_state=2).fit_predict(X)
print("Silhouette", round(silhouette_score(X, a), 3))
print("Stabilitaet", round(adjusted_rand_score(a, b), 3)) # nahe 1 ist gutDie Zielfunktion von k-Means
Diese Größe fällt monoton mit k und ist deshalb als Auswahlkriterium für sich
genommen wertlos. Das Ellbogenkriterium sucht die Stelle, an der der Zugewinn
abknickt: eine Heuristik, kein Test.
Warum k-Means kugelig denkt
Die Zuordnung minimiert den euklidischen Abstand zum Schwerpunkt. Die Grenzen
zwischen zwei Clustern sind damit Mittelsenkrechten, und die Zellen sind ein
Voronoi-Diagramm: konvexe Polygone. Längliche, gebogene oder ineinander
verschachtelte Gruppen können damit prinzipiell nicht getroffen werden, unabhängig
von k.
Aufwand
| Verfahren | Zeit | Speicher |
|---|---|---|
| k-Means | O(n · k · d · i) | O(n · d) |
| Agglomerativ | O(n³) naiv, O(n² log n) gut | O(n²) |
| DBSCAN mit Index | O(n log n) | O(n) |
| HDBSCAN | O(n log n) typisch | O(n) |
Bei n = 10⁶ ist agglomeratives Clustern mit einer Abstandsmatrix von 4 Terabyte
ausgeschlossen. Praktisch reduziert man zuerst die Dimension, siehe
Dimensionsreduktion, und clustert dann.
Der rechtliche Punkt
Cluster über Personendaten sind neue personenbezogene Merkmale. Sie unterliegen der Zweckbindung und sind Gegenstand von Auskunftsersuchen. Wenn ein Cluster in eine Entscheidung über eine Person einfließt, ist er begründungspflichtig, und „das Verfahren hat sie so gruppiert" ist keine Begründung.
Passende Kurse und Quellen
scikit-learn Benutzerhandbuch
Kein Handbuch, sondern ein Lehrbuch mit Code. Zu jedem Verfahren steht dabei, wann es nicht passt, was in Lehrbüchern selten so deutlich steht.
Für alle, die klassische Verfahren einsetzen; nennt zu jedem auch, wann es nicht passt.