Klustring: k-means och hierarkisk
Kunna klustra data utan etiketter och bedöma antalet kluster.
Förkunskaper
Intuition
Klustring är inlärning utan etiketter: hitta grupper i datan som ingen berättat om.
k-means i fyra steg:
- Placera k centrumpunkter slumpmässigt.
- Tilldela varje datapunkt till närmaste centrum.
- Flytta varje centrum till medelvärdet av sina punkter.
- Upprepa 2–3 tills inget ändras.
Problemet: k måste väljas i förväg, och algoritmen hittar alltid k kluster — även om datan inte har några.
Hierarkisk klustring bygger i stället ett träd: slå ihop de två närmaste grupperna, upprepa. Då kan man klippa trädet på valfri nivå efteråt.
Kod
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
import numpy as np
inertier, silhouetter = [], []
for k in range(2, 9):
km = KMeans(n_clusters=k, n_init=10, random_state=0).fit(X)
inertier.append(km.inertia_) # summan av kvadratavstånd till centrum
silhouetter.append(silhouette_score(X, km.labels_))
for k, i, s in zip(range(2, 9), inertier, silhouetter):
print(k, round(i, 1), round(s, 3))
# 2 520.3 0.51
# 3 210.4 0.68 ← armbåge och högst silhouette
# 4 195.1 0.42
Armbågsmetoden: rita inertin mot k och leta där kurvan viker av. Silhouette (−1 till 1) mäter hur väl varje punkt passar i sitt kluster jämfört med närmaste andra — högst värde är ofta ett bra k.
När k-means är fel val: avlånga eller ringformade kluster (den antar runda, ungefär lika stora), olika täthet, eller mycket brus. Då passar DBSCAN eller hierarkisk klustring bättre.
Behärskning innebär
- Kör k-means och tolkar klustren
- Väljer antal kluster med armbågsmetod eller silhouette
- Vet när k-means är olämplig
Logga in för att göra övningarna och bygga upp din behärskning.
Källor
- scikit-learn User Guide (BSD-3) — BSD-3-Clause
- Dive into Deep Learning (CC BY-SA 4.0) — CC BY-SA 4.0