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
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.