Bewertung eines Clustering

Unsupervised Learning in Python

Benjamin Wilson

Director of Research at lateral.io

Bewertung eines Clustering

  • Kann die Übereinstimmung mit z. B. Iris-Arten prüfen.
  • ... aber was ist, wenn es keine Arten gibt, mit denen man den Abgleich durchführen kann?
  • Die Qualität einer Clusterbildung messen
  • Ermittelt, wie viele Cluster man anstreben sollte.
Unsupervised Learning in Python

Iris: Cluster vs. Arten

  • k-means hat drei Cluster unter den Iris-Proben gefunden.
  • Passen die Cluster zu den Arten?
species  setosa  versicolor  virginica
labels
0             0           2         36
1            50           0          0
2             0          48         14
Unsupervised Learning in Python

Kreuztabellen mit Pandas

  • Cluster vs. Arten ist eine „Kreuztabelle“
  • Benutze die pandas-Bibliothek
  • Eingaben: Arten jeder Probe als Liste: species
print(species)
['setosa', 'setosa', 'versicolor', 'virginica', ... ]
Unsupervised Learning in Python

Label und Arten angleichen

import pandas as pd
df = pd.DataFrame({'labels': labels, 'species': species})
print(df)
     labels     species
0         1      setosa
1         1      setosa
2         2  versicolor
3         2   virginica
4         1      setosa
...
Unsupervised Learning in Python

Kreuztabelle von Label und Arten

ct = pd.crosstab(df['labels'], df['species'])
print(ct)
species  setosa  versicolor  virginica
labels
0             0           2         36
1            50           0          0
2             0          48         14

Wie kann man eine Clusterbildung bewerten, wenn keine Informationen zu den Arten vorliegen?

Unsupervised Learning in Python

Die Qualität der Clusterbildung messen

  • Nur mit den Proben und ihren Cluster-Labels arbeiten

  • Ein gutes Clustering hat Cluster mit geringer Streuung.

  • Die Proben in jedem Cluster liegen eng beieinander.

Unsupervised Learning in Python

Trägheit misst die Clustering-Qualität

  • Misst, wie groß die Streuung eines Clusters ist (weniger ist besser)
  • Distanz von jeder Probe zum Zentroid (centroid) ihres Clusters
  • Nach der Anwendung von fit() verfügbar als Attribut inertia_
  • k-means versucht, die Trägheit bei der Auswahl von Clustern zu minimieren.
from sklearn.cluster import KMeans

model = KMeans(n_clusters=3)
model.fit(samples)
print(model.inertia_)
78.9408414261
Unsupervised Learning in Python

Die Anzahl der Cluster

  • Clustering des Iris-Datensatzes mit unterschiedlichen Anzahlen von Clustern
  • Mehr Cluster bedeuten weniger Trägheit.
  • Welche Cluster-Anzahl ist am besten?

Liniendiagramm der Anzahl der Cluster im Vergleich zur Trägheit

Unsupervised Learning in Python

Wie viele Cluster soll man wählen?

  • Ein gutes Clustering hat enge Cluster (also eine geringe Trägheit)...
  • ... aber nicht zu viele Cluster!
  • Wähle einen „Knickpunkt“ im Trägheitsdiagramm aus.
  • Dort, wo die Trägheit langsamer abnimmt
  • Beispiel: Iris-Datensatz: Drei ist eine gute Wahl.

Liniendiagramm der Anzahl der Cluster im Vergleich zur Trägheit

Unsupervised Learning in Python

Lass uns üben!

Unsupervised Learning in Python

Preparing Video For Download...