Silhouette score

Silhouette score er et mål for, hvor godt et objekt passer ind i sin egen klynge sammenlignet med andre klynger, baseret på både kohesion og separation.

Kort fortalt

Silhouette score fortæller, om datapunkterne er godt klynget: værdier tæt på 1 betyder godt, 0 er neutralt, og negative tal betyder dårlig.

Kategori
metrik
Niveau
øvet
Udtale
/ˌsɪl.uˈɛt skɔːr/

Betydninger

1
  1. 1

    Et mål for kvaliteten af en klyngedannelse for et enkelt datapunkt, defineret som forskellen mellem den gennemsnitlige afstand til punkter i naboklyngen og den gennemsnitlige afstand til punkter i egen klynge, divideret med maksimum af de to.

    • Silhouette score for punktet var 0,85, hvilket indikerer en god klyngetilhørsforhold.

Hvornår bruges det

Silhouette score bruges til at evaluere kvaliteten af en klyngeanalyse, f.eks. til at vælge antallet af klynger i K-means. Det beregnes for hvert punkt og summeres til en gennemsnitlig score for alle punkter.

Formel

s(i) = (b(i) - a(i)) / max(a(i), b(i)), where a(i) = mean distance to points in same cluster, b(i) = mean distance to points in nearest neighboring cluster.

Kodeeksempel

from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
import numpy as np

X = np.array([[1,2], [1,4], [1,0], [10,2], [10,4], [10,0]])
kmeans = KMeans(n_clusters=2, random_state=0).fit(X)
labels = kmeans.labels_
score = silhouette_score(X, labels)
print(score)
# Output: 0.704...

Eksempel på beregning af Silhouette score for en simpel 2D-dataset med K-means-klynger.

Oprindelse

Begrebet 'silhouette' blev introduceret af Peter J. Rousseeuw i 1987 med reference til silhuetbilledet af klyngerne.

Kilder

2