Weiter zum Inhalt

Silhouette-Score: So bewertest du die Clustering-Qualität

Ein praxisnaher Leitfaden zum Silhouette-Score: Formel, Interpretationsbereiche, ein scikit-learn-Beispiel, Auswahl der richtigen Clusterzahl und der Vergleich mit anderen Clustering-Metriken.
Aktualisiert 31. Juli 2026  · 12 Min. lesen

Mit KI erkunden

In ChatGPT öffnenIn Claude öffnenIn Perplexity öffnen

Nachdem du ein Clustering-Modell trainiert hast, woher weißt du, ob die Cluster wirklich gut sind?

Eine allgemeingültige Antwort gibt es nicht. Im klassischen überwachten Lernen kannst du Vorhersagen mit echten Labels vergleichen und eine Genauigkeit ausrechnen. Beim Clustering geht das nicht. Du hast k=5 gewählt, aber wäre ein anderes k besser? Ohne Labels kannst du nicht sagen, ob der Algorithmus echte Struktur gefunden hat oder die Daten nur zufällig aufgeteilt wurden.

Der Silhouette-Score ist genau die Metrik, die du suchst. Er zeigt, wie gut jeder Punkt in seinen zugewiesenen Cluster passt – relativ zum nächstgelegenen anderen Cluster – und gehört zu den am weitesten verbreiteten Metriken. Er funktioniert ohne Labels und ist leicht zu interpretieren.

In diesem Artikel führe ich dich durch die Formel und die Interpretation, zeige ein Python-Beispiel mit scikit-learn und bespreche, wann die Methode gut passt – und wann nicht.

Neu im Thema Clustering? Lies unser Tutorial Introduction to k-Means Clustering with scikit-learn und lerne, wie der Algorithmus funktioniert und wie du ihn in Python nutzt. 

Was ist der Silhouette-Score?

Der Silhouette-Score ist eine Zahl zwischen -1 und 1, die angibt, wie gut ein Punkt zu seinem Cluster passt.

Die Zahl zeigt dir zwei Dinge:

  1. Wie nah ein Punkt im Durchschnitt an den anderen Punkten seines Clusters liegt
  2. Wie weit er im Durchschnitt vom nächsten anderen Cluster entfernt ist, zu dem er nicht gehört

Liegt der Punkt gut innerhalb seiner Gruppe und weit weg von anderen, ist der Score hoch. Liegt er am Rand, näher an einem Nachbarcluster als an seinem eigenen, ist der Score niedrig.

Kurz gesagt, genau dieses Gleichgewicht zeigt dir der Silhouette-Score. Er berücksichtigt sowohl, wie eng Punkte innerhalb eines Clusters beieinander liegen, als auch, wie gut die Cluster voneinander getrennt sind. Beides ist gleich wichtig. Ein Clustering, das Punkte eng gruppiert, aber Cluster übereinanderlegt, ist nutzlos – genauso wie eines, das Cluster gut trennt, aber die Punkte darin weit verstreut sind.

Gut getrennte Cluster im Vergleich zu überlappenden Clustern

Gut getrennte Cluster im Vergleich zu überlappenden Clustern

Höhere Scores bedeuten besser definierte Cluster. Ein Wert nahe 1 heißt: Punkte liegen dicht im eigenen Cluster und weit weg von anderen. Ein Wert nahe 0 heißt: Cluster überlappen oder die Grenzen sind unklar. Ein negativer Wert heißt: Der Punkt liegt näher an einem anderen Cluster als an seinem zugewiesenen.

Wie funktioniert der Silhouette-Score?

Jeder Punkt bekommt seinen eigenen Silhouette-Score, und der basiert auf zwei Distanzen.

Die erste misst den durchschnittlichen Abstand des Punkts zu den anderen Punkten in seinem zugewiesenen Cluster. Ist sie klein, liegt der Punkt nah bei den anderen. Ist sie groß, hängt der Punkt nur locker an seinem Cluster.

Die zweite misst den durchschnittlichen Abstand des Punkts zu den Punkten im nächstgelegenen Nachbarcluster. Ist sie groß, ist der Punkt klar von anderen Clustern getrennt. Ist sie klein, liegt er nahe an der Grenze.

Abstand eines Punkts zu den Clustern

Abstand eines Punkts zu den Clustern

Der Silhouette-Wert vergleicht diese beiden Zahlen. Ein Punkt tief im eigenen Cluster und weit von anderen entfernt bekommt einen hohen Wert. Ein Punkt am Rand (nah an einem anderen Cluster) bekommt einen niedrigen Wert. Ein Punkt, der näher an einem anderen Cluster liegt als am eigenen, bekommt einen negativen Wert.

Wichtig ist: Keine der beiden Distanzen reicht für sich genommen aus. 

Ein enges Cluster kann direkt neben einem anderen liegen. Ein gut getrenntes Cluster kann intern verstreut sein. Du brauchst beide Distanzen, um der Zuordnung zu vertrauen.

Silhouette-Score-Formel

Hier ist die Formel für einen einzelnen Punkt:

Formel für den Silhouette-Score

Formel für den Silhouette-Score

Dabei gilt:

  • a ist der durchschnittliche Abstand vom Punkt zu allen anderen Punkten im selben Cluster

  • b ist der durchschnittliche Abstand vom Punkt zu allen Punkten im nächstgelegenen Nachbarcluster

Die Formel teilt die Differenz zwischen b und a durch den jeweils größeren der beiden Werte. 

Zur groben Interpretation kannst du dich an Folgendem orientieren:

  • Wenn b deutlich größer ist als a: Der Punkt ist weit von anderen Clustern entfernt und liegt nah an seinem eigenen. Der Zähler liegt nahe bei b, der Nenner ist ebenfalls b, der Score ist nahe 1

  • Wenn a deutlich größer ist als b: Der Punkt liegt näher an einem anderen Cluster als an seinem eigenen. Der Zähler ist eine große negative Zahl nahe -a, der Nenner ist a, der Score ist nahe -1

  • Wenn a und b ungefähr gleich sind: Der Punkt liegt an der Grenze zwischen zwei Clustern. Der Zähler ist nahe 0, und so auch der Score

Mehr Details gleich.

So interpretierst du den Silhouette-Score

Eine grobe Orientierung zur Einordnung des Silhouette-Scores:

  • Nahe 1: Punkte liegen gut innerhalb ihrer Cluster und weit weg von anderen
  • Um 0,7: Gutes Clustering, Gruppen sind klar unterscheidbar und Punkte liegen nah an den anderen Punkten ihres Clusters
  • Um 0,5: Solides Clustering, es gibt etwas Überlappung, aber die Cluster sind noch unterscheidbar
  • Nahe 0: Cluster überlappen oder Grenzen sind unklar. Die vermeintliche Struktur könnte nicht real sein
  • Unter 0: Punkte liegen näher am falschen Cluster. Das passiert z. B. bei einer ungeeigneten Clusterzahl oder wenn sich die Daten grundsätzlich schlecht clustern lassen.

Die Grenzen oben sind nur Richtwerte. Was ein guter Silhouette-Score ist, hängt vom Datensatz ab.

Dünn besetzte, hochdimensionale Daten liefern oft niedrigere Scores, auch wenn die Cluster gut sind. Dicht gepackte, gut getrennte Daten können Werte über 0,7 ergeben. Vergleiche Scores daher über Modelle auf demselben Datensatz – nicht gegen eine fixe Schranke.

So berechnest du den Silhouette-Score

Du berechnest den Silhouette-Score punktweise. So funktioniert es für einen einzelnen Punkt:

Schritt 1: Berechne a, den durchschnittlichen Abstand vom Punkt zu allen anderen Punkten in seinem Cluster. Befinden sich 4 andere Punkte im Cluster und die Abstände sind 1,2; 1,5; 1,0 und 1,3:

Silhouette-Score-Berechnung (1)

Silhouette-Score-Berechnung (1)

Schritt 2: Finde das nächstgelegene Nachbarcluster (das – außer dem eigenen – mit der kleinsten durchschnittlichen Distanz zum Punkt). Berechne dann b, den durchschnittlichen Abstand vom Punkt zu allen Punkten in diesem Cluster. Liegen die 5 Punkte dort bei 2,4; 2,8; 3,0; 2,6 und 2,7:

Silhouette-Score-Berechnung (2)

Silhouette-Score-Berechnung (2)

Schritt 3: Setze a und b in die Formel ein:

Silhouette-Score-Berechnung (3)

Silhouette-Score-Berechnung (3)

Schritt 4: Wiederhole das für jeden Punkt im Datensatz. Der gesamte Silhouette-Score des Clusterings ist der Durchschnitt aller Punktwerte.

Silhouette-Score in Python

Scikit-learn stellt dir zwei Funktionen zur Berechnung des Silhouette-Scores zur Verfügung, beide in sklearn.metrics:

  • silhouette_score() gibt den durchschnittlichen Score für das gesamte Clustering zurück

  • silhouette_samples() liefert den Score für jeden einzelnen Punkt

So verwendest du sie mit KMeans auf einem synthetischen Datensatz:

from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs
from sklearn.metrics import silhouette_score, silhouette_samples

# Synthetic data with 4 clusters
X, _ = make_blobs(n_samples=500, centers=4, cluster_std=1.0, random_state=42)

# Clustering model
kmeans = KMeans(n_clusters=4, random_state=42, n_init=10)
labels = kmeans.fit_predict(X)

# Overall silhouette score
score = silhouette_score(X, labels)
print(f"Overall silhouette score: {score:.3f}")

# Per-point silhouette values
sample_scores = silhouette_samples(X, labels)
print(f"First 5 point scores: {sample_scores[:5]}")

Wenn du den obigen Code ausführst, erhältst du diese Ausgabe:

Python-Beispielausgabe

Python-Beispielausgabe

Der Gesamtscore von 0,791 bedeutet, dass die vier Cluster gut definiert und separiert sind.

Die Punktwerte erlauben dir die Analyse jedes einzelnen Datenpunkts. 

Punkte mit hohen Einzelwerten liegen gut innerhalb ihres Clusters. Punkte mit niedrigen oder negativen Werten liegen an der Grenze oder sind fehlzugeordnet – praktisch, um Ausreißer zu finden oder Grenzfälle zu prüfen.

Die optimale Clusterzahl wählen

Eine der häufigsten Anwendungen des Silhouette-Scores ist die Wahl des richtigen k für KMeans. 

Das läuft in drei Schritten:

  1. KMeans für eine Bandbreite an k-Werten fitten
  2. Für jeden Fit den Silhouette-Score berechnen
  3. Das k mit dem höchsten Score wählen

Hier ist der Code dazu:

from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs
from sklearn.metrics import silhouette_score

X, _ = make_blobs(n_samples=500, centers=4, cluster_std=1.0, random_state=42)

# Fit KMeans for k=2 to k=10 and keep track of the silhouette score for each
k_values = range(2, 11)
scores = []
for k in k_values:
    kmeans = KMeans(n_clusters=k, random_state=42, n_init=10)
    labels = kmeans.fit_predict(X)
    scores.append(silhouette_score(X, labels))
    print(f"k={k}: silhouette = {scores[-1]:.3f}")

So sehen die Scores für jedes k aus:

Silhouette-Score für verschiedene k-Werte

Silhouette-Score für verschiedene k-Werte

Der höchste Wert liegt bei k=4. Das ist der Wert, den du wählen würdest.

Wichtig: Der Silhouette-Score ersetzt nicht deine Domänenkenntnis. Wenn dein Business-Problem 5 Kundensegmente erfordert und der höchste Silhouette-Wert bei 4 liegt, nimm nicht automatisch 4. Die Metrik zeigt dir, wo die Daten die sauberste Struktur haben – aber manchmal ist die richtige Clusterzahl die, die im Kontext deines Problems sinnvoll ist.

Silhouette-Score im Vergleich zu anderen Clustering-Metriken

Der Silhouette-Score ist wahrscheinlich die gängigste Metrik zur Bewertung von Clustering, aber nicht die einzige. So schneidet er im Vergleich ab:

Silhouette-Score vs. Elbow-Methode

Die Elbow-Methode ist eine visuelle Technik zur Wahl von k in KMeans. Du fittest Modelle für verschiedene k-Werte, plottest die Trägheit (Within-Cluster Sum of Squares) gegen k und wählst den Wert, an dem die Kurve stark abknickt.

Der Vorteil der Elbow-Methode: schnell und einfach. Aber der „Knick" ist nicht immer klar erkennbar. Bei unruhigen Daten kann die Kurve glatt wirken, ohne eindeutigen Knick.

Der Silhouette-Score liefert dir für jedes k eine konkrete Zahl – die Entscheidung basiert also weniger auf subjektiver Kurveninterpretation. Er ist langsamer zu berechnen, aber fundierter zu vergleichen.

Nutze die Elbow-Methode als schnellen Plausibilitätscheck. Greife zum Silhouette-Score, wenn du eine belastbare Entscheidung brauchst.

Silhouette-Score vs. Davies-Bouldin-Index

Der Davies-Bouldin-Index (DBI) misst die durchschnittliche Ähnlichkeit jedes Clusters mit seinem ähnlichsten. Ein niedriger DBI bedeutet besseres Clustering, der Idealwert ist 0.

DBI nutzt Clusterzentroide zur Ähnlichkeitsberechnung und ist damit auf großen Datensätzen schneller als der Silhouette-Score. Von der Intuition her belohnt er ebenfalls enge und gut getrennte Cluster.

Der Haken: DBI bewertet nur das gesamte Clustering. Der Silhouette-Score liefert zusätzlich Punktwerte, mit denen du Grenzfälle und Ausreißer findest.

Nutze DBI bei großen Datensätzen, wenn es auf Geschwindigkeit ankommt. Nutze den Silhouette-Score, wenn du einzelne Punkte betrachten willst.

Silhouette-Score vs. Calinski-Harabasz-Index

Der Calinski-Harabasz-Index (CH), auch Variance Ratio Criterion, ist das Verhältnis von Inter- zu Intracluster-Streuung. Höhere Werte sind besser, der Score ist nach oben unbeschränkt.

CH ist schnell und skaliert gut auf großen Datensätzen, da nur Clusterstatistiken benötigt werden. Wie Silhouette und DBI funktioniert er am besten bei konvexen, gut getrennten Clustern.

CH hat zudem keine natürliche Skala, daher kannst du CH-Werte nur zwischen Modellen auf demselben Datensatz vergleichen – nicht über verschiedene Datensätze hinweg.

Nutze CH, wenn dein Datensatz groß ist und du schnell Ergebnisse brauchst. Nutze den Silhouette-Score, wenn du Interpretierbarkeit und Einblicke auf Punktebene willst.

Interne vs. externe Clustering-Metriken

Die oben genannten Metriken (Silhouette, DBI, CH, Elbow) sind interne Metriken. Sie bewerten Clustering nur anhand der Daten selbst, ohne Ground-Truth-Labels. Das macht sie zum Standard in realen Clustering-Problemen, in denen Labels fehlen.

Externe Metriken vergleichen Clusterzuweisungen mit bekannten Labels. Adjusted Rand Index (ARI), Normalized Mutual Information (NMI) und Homogenität sind gängige Beispiele. Man nutzt sie, wenn Labels vorhanden sind und man prüfen will, wie gut ein Clustering-Algorithmus diese trifft.

Nutze interne Metriken, wenn du keine Labels hast – der Regelfall. Nutze externe Metriken, wenn du Clustering-Algorithmen auf gelabelten Daten benchmarkst.

Hier ist eine Gegenüberstellung der Metriken:

Methode Bereich Bester Wert Geschwindigkeit Einsatz für
Silhouette-Score -1 bis 1 Nahe 1 Langsam bei großen Datensätzen Interpretierbarkeit und Einblicke pro Punkt
Elbow-Methode 0 bis unendlich Nach dem Knick suchen Schnell Schnelle Checks
Davies-Bouldin-Index 0 bis unendlich Nahe 0 Schnell Große Datensätze
Calinski-Harabasz-Index 0 bis unendlich Höher ist besser Schnell Große, ungelabelte Datensätze

Silhouette-Score im Vergleich zu Alternativen

Einschränkungen des Silhouette-Scores

Der Silhouette-Score hat einige Einschränkungen, die du kennen solltest:

  • Setzt distanzbasierte Verfahren voraus: Standardmäßig basiert der Silhouette-Score auf der euklidischen Distanz. Er passt gut zu KMeans und anderen zentroidbasierten Verfahren, aber weniger zu dichtebasierten Methoden wie DBSCAN mit beliebigen Formen und ohne klaren Zentroid
  • Funktioniert am besten mit kleinen, gut getrennten Clustern: Die Metrik belohnt enge, sphärische und weit auseinanderliegende Cluster. Sind Cluster nah beieinander oder überlappend, fällt der Score niedrig aus – auch wenn die Zuordnung korrekt ist
  • Nicht ideal bei unregelmäßigen Clusterformen: Reale Cluster sind nicht immer konvex. Trifft das auf deine Daten zu, können Silhouette-Werte niedrig sein, obwohl die Zuordnung stimmt
  • Rechenaufwendig bei großen Datensätzen: Für die Berechnung werden paarweise Distanzen benötigt – das skaliert mit O(n^2). Bei Millionen von Punkten wird es teuer
  • Empfindlich gegenüber der gewählten Distanzmetrik: Der Score ändert sich je nach euklidischer, Manhattan-, Cosinus- oder anderer Distanz. Passen euklidische Annahmen nicht zu deinen Daten, kann der Silhouette-Score in die Irre führen

Best Practices für den Silhouette-Score

Der Silhouette-Score liefert die besten Ergebnisse, wenn du ein paar Grundregeln beachtest:

  • Vergleiche mehrere Clustering-Lösungen: Rechne nicht nur einen einzigen Silhouette-Score. Fitte Modelle mit unterschiedlichen k-Werten (oder unterschiedlichen Algorithmen) und vergleiche die Werte direkt
  • Visualisiere Cluster zusätzlich zum Score: Eine Zahl allein erzählt nicht die ganze Geschichte. Plotte die Cluster und prüfe, ob die Formen sinnvoll sind
  • Optimiere nicht nur auf den höchsten Wert: Ein Clustering mit k=2 erzielt oft einen höheren Wert als k=5, auch wenn 5 Cluster in deinem Anwendungsfall sinnvoller sind
  • Kombiniere mit Domänenwissen: Der Score zeigt, wo die Daten die sauberste Struktur haben. Dein Domänenwissen zeigt, welche Struktur wirklich nützlich ist. Nutze beides
  • Bewerte mehrere Metriken: Silhouette, DBI, CH und andere messen Qualität unterschiedlich. Stimmen sie überein, bist du auf gutem Kurs; weichen sie ab, schau dir die Daten genauer an

Fazit

Der Silhouette-Score ist eine der intuitivsten Methoden zur Bewertung von Clustering, weil er sowohl die Enge innerhalb der Cluster als auch deren Trennung berücksichtigt. 

Du berechnest ihn punktweise, bildest den Durchschnitt und erhältst eine einzelne Zahl zwischen -1 und 1. Werte nahe 1 bedeuten besser definierte Cluster, Werte nahe oder unter 0 deuten darauf hin, dass die Struktur keine echte Struktur ist.

Aber der Silhouette-Score ist nur der Anfang. Ergänze ihn um Cluster-Visualisierungen und vor allem um dein Domänenwissen. Nur wenn alles in die gleiche Richtung zeigt, kannst du dem Ergebnis wirklich vertrauen.

Der Silhouette-Score ist Teil des größeren Themas Unsupervised Learning in Python. Melde dich heute an und lerne, wie du ungelabelte Daten clustern, transformieren, visualisieren und daraus Insights gewinnen kannst.


Dario Radečić's photo
Author
Dario Radečić
LinkedIn
Senior Data Scientist mit Sitz in Kroatien. Top Tech Writer mit über 700 veröffentlichten Artikeln, die mehr als 10 Millionen Mal aufgerufen wurden. Buchautor von Machine Learning Automation with TPOT.
Themen

Lerne mit DataCamp

Kurs

Clusteranalyse in R

4 Std.
44.1K
Details anzeigenRight Arrow
Kurs Starten
Mehr anzeigenRight Arrow