CMD + K

Introduksjon til maskinlæringClustering og anomalideteksjonBegreper & formler12
7 min lesing

Clustering og anomalideteksjon

Finn struktur uten fasit med k-means og DBSCAN, og oppdag uvanlige observasjoner med tetthet og Isolation Forest.

Læringsmål
  • 01Utføre tilordnings- og oppdateringssteget i k-means og beregne målfunksjonen
  • 02Forklare hvordan skalering, initialisering og valg av k påvirker k-means
  • 03Klassifisere kjerne-, grense- og støypunkter med DBSCAN-parametre
  • 04Tolke Isolation Forest-stilengde og anomaliscore uten å kalle den en sannsynlighet
  • 05Velge clustering- eller anomalimetode ut fra geometri, antakelser og bruksbehov

Struktur uten fasit

En sensorplattform samler temperatur og vibrasjon fra hundre maskiner, men har ingen labels som sier hvilke maskiner som tilhører samme driftstype. Likevel kan punktene danne tydelige grupper. clustering leter etter slik struktur ut fra likhet eller tetthet, uten en kjent målverdi. Clusterne er ikke automatisk «sanne klasser»; de er resultatet av valgt representasjon, avstandsmål og algoritme.

Før vi grupperer, må featureverdiene sammenlignes på en meningsfull skala. Dersom temperatur varierer fra 20 til 100 og vibrasjon fra 0 til 0,2, vil euklidsk avstand nesten bare se temperatur. Standardisering kan balansere bidragene, men er også en modellbeslutning: kanskje én grad faktisk er mindre viktig enn 0,01 vibrasjonsenhet. Domenekunnskap avgjør hva nærhet skal bety.

Avstandsmålet bestemmer også hva algoritmen oppfatter som likt. Euklidsk avstand måler en rett linje og passer numeriske features der retning og størrelse er meningsfulle. Manhattan-avstand summerer absolutte koordinatforskjeller og kan reagere annerledes på enkelte store avvik. For tekst eller binære egenskaper kan vinkel, overlapp eller en domenespesifikk avstand være mer relevant. Dette valget skjer før algoritmen finner noe som helst. Hvis representasjonen plasserer to faglig like maskiner langt fra hverandre, kan ingen clusteringmetode reparere premisset automatisk. Manglende verdier må dessuten håndteres uten å lage kunstige avstander, og kategorier må kodes uten å innføre en falsk tallrekkefølge. En god uveiledet analyse begynner derfor med en tydelig begrunnelse for features, skalering og avstand.

Uveiledet læring mangler en enkel fasit-score. Et lavt internt mål kan vise at algoritmen har optimalisert sin egen definisjon godt, uten at gruppene er nyttige. Vi må derfor kombinere matematisk kontroll, stabilitet, visualisering og en vurdering av om strukturen støtter oppgaven.

k-means veksler mellom to enkle steg

k-means antar at hvert punkt tilhører ett av cluster. Først velges startpunkter. Så tilordnes hver observasjon nærmeste sentroide. Deretter beregnes hver sentroide som gjennomsnittet av punktene i clusteret med ƒsentroide. Disse to stegene gjentas til tilordningene eller sentroidene slutter å endre seg merkbart.

Algoritmen minimerer ƒk-means-målet, summen av kvadrerte euklidske avstander fra hvert punkt til egen sentroide. Når tilordningene holdes faste, er gjennomsnittet den sentroiden som minimerer kvadrert avstand. Når sentroidene holdes faste, gir nærmeste sentroide beste tilordning. Derfor kan en full iterasjon ikke øke målet.

kap8-kmeans-fra-bunnen

Fire k-means-iterasjoner med NumPy

python
import numpy as np rng = np.random.default_rng(4172)venstre = rng.normal(loc=(-1.8, -0.5), scale=0.35, size=(25, 2))hoyre = rng.normal(loc=(1.6, 0.8), scale=0.45, size=(25, 2))X = np.vstack([venstre, hoyre])sentroider = X[[3, 31]].copy() for steg in range(4):    avstand = np.linalg.norm(X[:, None, :] - sentroider[None, :, :], axis=2)    cluster = avstand.argmin(axis=1)    maal = np.sum((X - sentroider[cluster]) ** 2)    print(f"steg {steg}: mål={maal:.3f}, sentroider={np.round(sentroider, 2)}")    sentroider = np.vstack([X[cluster == k].mean(axis=0) for k in range(2)])

Implementasjonen viser de to vekslende k-means-stegene: nærmeste sentroide og nytt gjennomsnitt. Målet faller eller står stille for hver full iterasjon.

050180iterasjonsum kvadrerte avstanderkonvergererHvert tilordnings- og oppdateringssteg kan ikke øke målet, men løsningen kan være et lokalt minimum.
FIGk-means-målet gjennom iterasjonene

At målet faller betyr ikke at løsningen er globalt best. Ulike startverdier kan føre til ulike lokale minimum. I praksis kjører vi ofte flere initialiseringer og beholder løsningen med lavest mål. k-means++ sprer startpunktene på en måte som vanligvis er bedre enn helt tilfeldige punkter.

må velges utenfor algoritmen. En albue i kurven for mål mot kan gi et hint, men knekkpunktet er ofte uklart. Silhouette-score sammenligner avstand til eget og nærmeste alternative cluster, men arver de samme antakelsene om avstand og geometri. Et nyttig må også gi mening i bruken.

Når k-means-antakelsene ikke passer

k-means foretrekker kompakte, omtrent kuleformede cluster med lignende spredning. En sentroide er et gjennomsnitt og kan trekkes av ekstreme punkter. Algoritmen tvinger dessuten alle observasjoner inn i et cluster, også punkter som ligger langt fra resten. Lange bånd, halvmåner eller cluster med svært ulik tetthet kan derfor bli delt på en unaturlig måte.

Kategoriske features passer ikke direkte til et euklidsk gjennomsnitt. Høy dimensjonalitet kan også gjøre avstandene mindre informative når punktene blir glisne. Det betyr ikke at k-means er ubrukelig, men at vi må kontrollere om representasjonen støtter antakelsene.

En praktisk test er å kjøre algoritmen med flere seeds og på bootstrap-utvalg. Dersom gruppene endres dramatisk, er strukturen svak eller algoritmen dårlig tilpasset. Stabilitet er ikke et bevis på faglig mening, men ustabilitet er et tydelig varselsignal.

DBSCAN følger tetthet

dbscan starter med et lokalt spørsmål: hvor mange punkter ligger nær et valgt punkt? ƒdbscan-nabolag definerer alle punkter innen radius . Et kjernepunkt har minst min_samples punkter i dette nabolaget, vanligvis inkludert seg selv. Kjernepunkter som kan nå hverandre gjennom kjeder av tette nabolag kobles til samme cluster.

Punkter som ligger nær et kjernepunkt, men ikke selv har nok naboer, blir grensepunkter. Et støypunkt er verken kjernepunkt eller tetthetsforbundet med et cluster. Dermed kan DBSCAN la isolerte observasjoner stå uklassifisert og finne cluster med uregelmessig form.

kjernekantcluster 2støystøyDBSCAN trenger verken antall cluster på forhånd eller kuleformede grupper.
FIGDBSCAN skiller tett struktur fra støy

Parameterne virker sammen. For liten eller for høyt min_samples gir mange støypunkter og oppsplittede cluster. For stor radius kan bygge broer mellom grupper som burde vært adskilt. Skalering er kritisk fordi radiusen måles i feature-rommet. DBSCAN strever også når samme datasett inneholder områder med svært ulik tetthet; én global radius passer kanskje ikke begge.

DBSCAN-labelen -1 betyr støy i algoritmens tetthetsmodell, ikke nødvendigvis feil, svindel eller maskinskade. Et punkt kan være gyldig, men sjeldent. Det er viktig å skille en geometrisk markering fra en domeneavgjørelse.

Anomalier er uvanlige under en valgt normalitet

anomalideteksjon prioriterer observasjoner som avviker fra hovedmønsteret. Metoden kan være uveiledet når vi mangler sikre anomali-labels. Bruksområder inkluderer sensorfeil, uvanlige transaksjoner og avvik i nettverkstrafikk. Samtidig er «uvanlig» ikke det samme som «skadelig». Resultatet bør ofte starte en undersøkelse, ikke automatisk avgjøre saken.

Avstandsbaserte metoder gir høy score til punkter langt fra naboene. Tetthetsbaserte metoder ser etter lav lokal tetthet. Begge påvirkes av skala og dimensjon. Dersom normaldata har flere gyldige driftsmoduser, kan et globalt mål feilaktig flagge en liten, men legitim gruppe.

isolation forest bruker en annen idé. Hvert tre velger tilfeldig en feature og en splitverdi. Et punkt langt fra massen blir ofte skilt ut tidlig, mens punkter i tette områder krever flere splitter. Ensemblet bruker forventet stilengde på tvers av mange tilfeldige trær.

x₁ < 3,1?x₂ < −1,7?anomalien alenex₁ < 0,4?normalgruppenormalgruppe Anormalgruppe BKort isolasjonsdybde gir høyere anomaliscore enn lange stier inne i tette normalgrupper.
FIGEt uvanlig punkt isoleres med få splitter

ƒisolation forest-score gjør kort forventet sti om til score nær 1. Normaliseringsleddet tar hensyn til utvalgsstørrelsen. Ikke tolk scoren som en kalibrert sannsynlighet for svindel. En beslutningsterskel eller forventet contamination-andel må velges og valideres mot brukens kostnader.

kap8-tetthet-og-isolasjon

DBSCAN og Isolation Forest på samme syntetiske data

python
import numpy as npfrom sklearn.cluster import DBSCANfrom sklearn.ensemble import IsolationForestfrom sklearn.preprocessing import StandardScaler rng = np.random.default_rng(4172)normal = rng.normal(loc=(0, 0), scale=(1.0, 0.35), size=(90, 2))uvanlig = np.array([[4.2, 3.5], [-4.0, 3.2], [0.2, -3.8]])X = np.vstack([normal, uvanlig])Z = StandardScaler().fit_transform(X) cluster = DBSCAN(eps=0.45, min_samples=5).fit_predict(Z)anomali = IsolationForest(contamination=3 / len(Z), random_state=4172).fit_predict(Z) print("DBSCAN-støypunkter:", np.flatnonzero(cluster == -1))print("Isolation Forest-anomalier:", np.flatnonzero(anomali == -1))

Metodene kan markere ulike observasjoner fordi DBSCAN spør om lokal tetthet, mens Isolation Forest spør hvor lett et punkt isoleres av tilfeldige splitter.

DBSCAN-støy og Isolation Forest-anomalier trenger ikke være de samme. Det første bygger på manglende tetthetsforbindelse ved en bestemt radius. Det andre bygger på hvor raskt tilfeldige splitter isolerer punktet. Uenighet kan være faglig nyttig fordi metodene stiller ulike spørsmål.

Evaluering uten komplette labels

Interne clusteringmål vurderer egenskaper som kompakte og adskilte grupper. De kan sammenligne parameterverdier innen samme representasjon, men favoriserer bestemte geometrier. Ekstern evaluering mot kjente labels er bare relevant dersom labelene faktisk representerer strukturen vi ønsker å finne. Å gjenskape en gammel kategorisering er ikke alltid målet.

Sammenlign gjerne mot en enkel referanse. Dersom clusterne ikke er mer stabile eller tolkbare enn tilfeldige oppdelinger med samme størrelser, er det lite grunnlag for sterke konklusjoner. Gjenta analysen med små, rimelige endringer i preprocessing og parametre. Struktur som bare oppstår ved én svært presis innstilling bør behandles som et funn som må undersøkes, ikke som etablert kunnskap.

Undersøk også clusterstørrelser, sentroider, representative punkter og hvilke features som skiller gruppene. Små cluster kan være interessante eller bare støy. Visualisering i to dimensjoner kan hjelpe, men en projeksjon kan forvrenge avstander. Beregn derfor selve modellen i det tiltenkte feature-rommet og bruk projeksjonen som støtte.

For anomalideteksjon kan et lite, manuelt kontrollert sett gi precision blant de høyest rangerte varslene. Tidsbasert evaluering viser om metoden tåler endret drift. Overvåk både antall varsler og featurefordelinger etter utrulling. En fast terskel kan bli feil når normaltilstanden flytter seg.

Eksamensstrategi: identifiser antakelsen

Ved k-means skal du kunne utføre én iterasjon: beregn avstander, tilordne cluster og finn nye gjennomsnitt. Kontroller at målet bruker kvadrerte avstander til egen sentroide. Husk at algoritmen trenger og at startverdiene kan endre sluttresultatet.

Ved DBSCAN må du telle nabolaget med oppgitt og min_samples, klassifisere kjerne-, grense- og støypunkter og følge tetthetsforbindelser. Ikke tving støy inn i nærmeste cluster. Ved Isolation Forest skal du knytte kort sti til høy anomaliscore, ikke til høy sikkerhet om årsaken.

Når en scenariooppgave spør hvilken metode som passer, se på geometrien og ønsket output. Velg k-means for kompakte grupper og kjent , DBSCAN for tetthetskoblede former og eksplisitt støy, og Isolation Forest når rangering av isolerte observasjoner er hovedmålet. Begrunn alltid med antakelsen metoden gjør, ikke bare navnet på algoritmen.

Mine notater

Skriv egne notater for dette kapittelet. De lagres automatisk og dukker opp i «Mine notater»-oversikten paa fag-siden.

Laster…