k-means-klyngeanalyse
Også kendt som: k-means
En metode, der deler data i et valgt antal grupper ved at flytte hver gruppes midtpunkt, til hvert punkt hører til det nærmeste midtpunkt.
Kladde - dette opslag er endnu ikke gennemgået.
Formelt
En metode til klyngeanalyse, der vælger k startmidtpunkter, placerer hvert datapunkt hos det nærmeste midtpunkt, flytter hvert midtpunkt til gennemsnittet af sine punkter og gentager, til grupperne holder op med at ændre sig.
Forklaret enkelt
Som at stille tre isboder op på en strand. Hver gæst går til den nærmeste bod, hver bod flytter derefter ind midt i sin flok, og sådan gentager man, til ingen skifter bod.
I praksis
En dansk supermarkedskæde deler kunder med bonuskort i fem grupper efter, hvad og hvornår de køber, giver dem navne som "weekendfamilier" og planlægger tilbud til hver gruppe.
Hvorfor det betyder noget
Det er den enkleste og hurtigste måde at finde grupper i data uden givne svar på, men man skal selv vælge antallet af grupper, og et dårligt valg giver grupper, der betyder lidt.
Teknisk uddybning
k-means minimerer summen af kvadrerede afstande inden for klyngerne (inerti), dvs. summen over alle punkter af den kvadrerede euklidiske afstand til deres tildelte centroide. Standardproceduren, Lloyds algoritme, skifter mellem et tildelingstrin (hvert punkt til den nærmeste centroide) og et opdateringstrin (hver centroide til gennemsnittet af sine punkter). Intet trin kan øge inertien, så algoritmen konvergerer, men kun til et lokalt minimum; at finde det globale optimum er NP-hårdt. Stuart Lloyd beskrev metoden i en rapport fra Bell Labs i 1957, som blev publiceret i 1982 (IEEE Transactions on Information Theory); navnet k-means stammer fra MacQueen (1967).
Resultatet afhænger meget af startpunkterne. k-means++ (Arthur og Vassilvitskii, 2007) vælger hvert nyt startmidtpunkt med en sandsynlighed proportional med den kvadrerede afstand til de allerede valgte, hvilket spreder dem og giver en forventet O(log k)-approksimationsgaranti; det er standard i scikit-learn, og algoritmen køres som regel flere gange, hvor kørslen med lavest inerti beholdes. Mini-batch k-means opdaterer centroiderne ud fra små tilfældige batches for at kunne håndtere meget store datasæt.
Antallet af klynger k skal vælges på forhånd, typisk med albuemetoden på inertikurven, silhouetscoren eller gap-statistikken, og helst tjekkes mod den faglige betydning. Fordi metoden bruger kvadreret euklidisk afstand, antager k-means underforstået konvekse, nogenlunde kugleformede klynger af samme størrelse og er følsom over for skalaen af features og over for outliers, så features standardiseres normalt først. I mange dimensioner bliver afstande mindre informative, og det hjælper ofte først at reducere antallet af dimensioner, fx med PCA.
Til klynger med vilkårlig form egner tæthedsbaserede metoder som DBSCAN eller HDBSCAN sig bedre; gaussiske blandingsmodeller er en blød, probabilistisk generalisering af k-means; og k-medoids begrænser midtpunkterne til faktiske datapunkter for at være mere robust. k-means bruges også til vektorkvantisering, fx til at bygge kodebøgerne i product quantization til nærmeste-nabo-søgning.
Hvad du bør lære først
Alt det, dette bygger på - grundlaget først.
- Træningsdata
- →Feature (inputvariabel)
- →Ikke-superviseret læring
- →k-means-klyngeanalyse
Relationer
- Implementerer
- Klyngeanalyse (clustering)
- Bruges sammen med
- Dimensionsreduktion
Kilder og videre læsning
Officiel dokumentation
- scikit-learn User Guide, 2.3 Clustering (K-means) · scikit-learn
Opslagsværker
- Lloyd (1982), Least Squares Quantization in PCM · IEEE Transactions on Information Theory
- Arthur & Vassilvitskii (2007), k-means++: The Advantages of Careful Seeding · ACM-SIAM Symposium on Discrete Algorithms
- k-means clustering · Wikipedia
Hvor dataene kommer fra
Dette opslag er skrevet af en AI ud fra kilderne ovenfor og er endnu ikke gennemgået af et menneske. Brug det som udgangspunkt, og tjek alt vigtigt mod kilderne.
Se gennemgangskøenForeslå en rettelse på GitHubDette begreb som JSON
Test dig selv
Indlæser…