CMD + K

Kapittel 13Begreper & formler · Dimensjonsreduksjon og anomalideteksjon
Referanseside · Kapittel 13

Begreper & referanser

Alle nøkkelbegrepene, formlene og referansene fra Dimensjonsreduksjon og anomalideteksjon, samlet på én side. Bruk denne som oppslag når du leser, øver flashcards eller tar quiz.

Øv med flashcards27 kort fra dette kapittelet

Begreper

Sentrale begreper fra kapittelet med korte definisjoner.

01Dimensjonalitetens forbannelse

Samlebetegnelse for problemer som oppstår når datarommet blir svært glissent etter hvert som antall dimensjoner øker.

02Dimensjonsreduksjon

Å representere data med færre variable samtidig som valgt struktur bevares best mulig.

03PCA

En lineær metode som finner ortogonale retninger med størst mulig varians i sentrerte data.

04Hovedkomponent

En retning i inputrommet som PCA bruker som ny akse.

05Egenvektor

En retning som bare skaleres, ikke roteres, når en lineærtransformasjon anvendes.

06Forklart varians

Mengden eller andelen av datasettets totale varians som fanges av en hovedkomponent.

07t-SNE

En ikke-lineær visualiseringsmetode som prøver å bevare lokale naboskap i en lavdimensjonal projeksjon.

08Embedding

En lavdimensjonal representasjon der observasjoner uttrykkes med nye koordinater.

09Anomalideteksjon

Å identifisere observasjoner som avviker tydelig fra hovedmønsteret i dataene.

10Isolation Forest

En ensemblemetode som finner anomalier ved at uvanlige punkter vanligvis isoleres med få tilfeldige splitter.

11Scree-plott

Plott av forklart variansandel (eller egenverdi) per hovedkomponent i synkende rekkefølge. Brukes til å velge hvor mange komponenter som skal beholdes, gjerne der kurven flater ut.

12Perplexity

Parameter i t-SNE som omtrent angir hvor mange naboer hvert punkt tar hensyn til. Lav verdi gir mange småklynger, høy verdi visker ut lokale detaljer.

13Falsk positiv

I anomalideteksjon: et normalt punkt som blir flagget som avvik. Fordi normale punkter er i stort flertall, kan en lav falsk positiv-rate likevel gi mange falske alarmer.

Formler

Hver formel: hva den heter, hvordan den ser ut, og hva symbolene betyr.

sentrering

Sentrering

PCA starter med å trekke middelverdien fra hver observasjon.

x_iobservasjon i
x̄featurevis middelverdi
x_i^csentrert observasjon
kovariansmatrise

Kovariansmatrise

Kovariansmatrisen beskriver varians og samvariasjon mellom featureaksene.

X_csentrert datamatrise
nantall observasjoner
Sutvalgets kovariansmatrise
egenvektorligning

Egenvektorligning

PCA-retningene er egenvektorer til kovariansmatrisen, sortert etter egenverdiene.

Skovariansmatrise
v_jegenvektor j
λ_jvariansen langs v_j
pca-projeksjon

PCA-projeksjon

Kolonnene i er de viktigste hovedkomponentene som dataene projiseres på.

X_csentrert datamatrise
W_kmatrise med de k viktigste hovedkomponentene
Zprojiserte koordinater
forklart-variansandel

Forklart variansandel

Andelen viser hvor mye av total varians hovedkomponent forklarer.

λ_kegenverdi for komponent k
r_kandel av total varians forklart av komponent k
kl-divergens

KL-divergens

t-SNE minimerer en KL-divergens mellom nabosannsynligheter i originalrommet og projeksjonen.

P_inabosannsynlighet i originalrommet
Q_inabosannsynlighet i projeksjonen
D_KLasymmetrisk avvik mellom fordelingene
isolation-forest-score

Isolation Forest-score

Kort forventet isolasjonssti gir en score nær 1 og tyder på at observasjonen er uvanlig.

E[h(x)]forventet isolasjonsdybde for x
c(n)normalisering for n observasjoner
s(x,n)anomaliscore
kumulativ-forklart-varians

Kumulativ forklart varians

Andelen av den totale variansen som de første hovedkomponentene forklarer til sammen. Velg for eksempel minste med .

λ_jegenverdi for komponent j
kantall komponenter som beholdes
pantall features
R_kkumulativ forklart variansandel
isolasjon-normalisering

Normalisering i Isolation Forest

Forventet stilengde for et vanlig punkt i et utvalg på punkter. Scoren deler på , slik at den kan sammenlignes på tvers av utvalgsstørrelser.

nantall punkter i utvalget
c(n)forventet stilengde for et vanlig punkt

Kodesnutter

Kodesnutter fra kapittelet, vist literal.

Kode

Avstander mister kontrast i høy dimensjon

Python
import numpy as npimport matplotlib.pyplot as plt n = 500  # antall punkterd = 1000  # @param 1..5000 def kontrast(dim):    rng = np.random.default_rng(dim)    X = rng.random((n, dim))               # punkter jevnt fordelt i enhetskuben    q = rng.random(dim)                    # et spørrepunkt    avstand = np.linalg.norm(X - q, axis=1)    return avstand.min(), avstand.max(), (avstand.max() - avstand.min()) / avstand.min() for dim in sorted({2, d}):                 # d = 2 står med som referanse    lav, hoy, k = kontrast(dim)    print(f"d = {dim:4d}: nærmeste {lav:5.2f}, fjerneste {hoy:5.2f}, relativ kontrast {k:6.2f}") dims = [2, 5, 10, 30, 100, 300, 1000, 3000, 5000]plt.figure()plt.loglog(dims, [kontrast(m)[2] for m in dims], marker="o", label="relativ kontrast")plt.scatter([d], [kontrast(d)[2]], color="C1", zorder=3, label=f"d = {d}")plt.xlabel("Dimensjon d")plt.ylabel("Relativ kontrast")plt.legend()plt.tight_layout()plt.show()

Prøv: Dra d fra 2 mot 5000 og se «relativ kontrast» falle mot null: nærmeste og fjerneste punkt blir nesten like langt unna.

Kode

PCA med egenverdidekomponering

Python
import numpy as np rng = np.random.default_rng(4172)x1 = rng.normal(size=80)x2 = 1.8 * x1 + rng.normal(0, 0.35, size=80)x3 = rng.normal(0, 0.25, size=80)X = np.column_stack([x1, x2, x3]) Xc = X - X.mean(axis=0)S = Xc.T @ Xc / (len(Xc) - 1)egenverdier, egenvektorer = np.linalg.eigh(S)rekkefolge = np.argsort(egenverdier)[::-1]egenverdier = egenverdier[rekkefolge]W = egenvektorer[:, rekkefolge]Z = Xc @ W[:, :2] print("forklart varians:", np.round(egenverdier / egenverdier.sum(), 3))print("form før/etter:", X.shape, Z.shape)

Koden følger definisjonene direkte: sentrering, kovarians, sorterte egenvektorer og projeksjon. eigh brukes fordi kovariansmatrisen er symmetrisk, og den returnerer egenverdiene i stigende rekkefølge, derfor sorteringen.

Kode

Forklart varians med scikit-learn

Python
import numpy as npimport matplotlib.pyplot as pltfrom sklearn.decomposition import PCAfrom sklearn.preprocessing import StandardScaler rng = np.random.default_rng(4172)n = 300hoyde = rng.normal(175, 8, n)                    # cmvekt = 0.9 * hoyde - 85 + rng.normal(0, 6, n)    # kg, følger høydenskritt = 4.5 * hoyde + rng.normal(0, 20, n)      # mm, følger høydenpuls = rng.normal(65, 9, n)                      # uavhengig av restenX = np.column_stack([hoyde, vekt, skritt, puls])standardiser = 1  # @param 0..1pca = PCA().fit(StandardScaler().fit_transform(X) if standardiser else X) andel = pca.explained_variance_ratio_print(f"komponenter for minst 90 %: {np.argmax(np.cumsum(andel) >= 0.9) + 1}")print(f"|ladninger| på PC1 (høyde, vekt, skritt, puls): {np.round(np.abs(pca.components_[0]), 2)}") k = np.arange(1, 5)plt.figure()plt.bar(k, andel, label="per komponent")plt.plot(k, np.cumsum(andel), label="kumulativ", color="C1")plt.xticks(k, [f"PC{i}" for i in k])plt.ylim(0, 1.05)plt.ylabel("forklart variansandel")plt.legend()plt.tight_layout()plt.show()

Prøv: Sett standardiser til 0 og se «komponenter for minst 90 %» falle til 1, og hvilken feature som tar over i «|ladninger| på PC1».

Kode

t-SNE på tre syntetiske grupper

Python
import numpy as npimport matplotlib.pyplot as pltfrom sklearn.manifold import TSNE rng = np.random.default_rng(4172)sentra = np.array([[-2, -2, 0, 0, 1, 1],                   [2, 0, -2, 1, 0, 1],                   [0, 2, 2, -1, 1, 0]])X = np.vstack([rng.normal(senter, 0.45, size=(30, 6)) for senter in sentra])gruppe = np.repeat([0, 1, 2], 30)perplexity = 20  # @param 2..40seed = 0  # @param 0..20 modell = TSNE(n_components=2, perplexity=perplexity, init="random",              method="exact", random_state=seed)Z = modell.fit_transform(X)                  # bare fit_transform: t-SNE har ingen transformprint(f"perplexity {perplexity}, seed {seed}: KL-divergens {modell.kl_divergence_:.3f}") plt.figure()for g in range(3):    plt.scatter(Z[gruppe == g, 0], Z[gruppe == g, 1], s=14, label=f"gruppe {g + 1}")plt.title("t-SNE av 6D-data")plt.legend()plt.tight_layout()plt.show()

Prøv: Dra perplexity og seed og se hva som står seg (tre grupper) og hva som endrer seg (plassering, retning og «KL-divergens»).

Kode

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]])  # indeks 90, 91, 92Z = StandardScaler().fit_transform(np.vstack([normal, uvanlig]))eps = 0.45  # @param 0.1..1 0.05contamination = 0.03  # @param 0.01..0.2 0.01 stoy = np.flatnonzero(DBSCAN(eps=eps, min_samples=5).fit_predict(Z) == -1)skog = IsolationForest(contamination=contamination, random_state=4172).fit(Z)flagget = np.flatnonzero(skog.predict(Z) == -1)print(f"DBSCAN-støy: {stoy.tolist()}  ({np.sum(stoy < 90)} normale punkter)")print(f"Isolation Forest flagger: {flagget.tolist()}  ({np.sum(flagget < 90)} normale punkter)")# -score_samples gir scoren s fra formelen: høy verdi betyr avvikprint(f"s for de tre uvanlige: {np.round(-skog.score_samples(Z[90:]), 2)}")

Prøv: Dra contamination opp og se «Isolation Forest flagger» flere normale punkter; dra eps og se hvor mange normale «DBSCAN-støy» får.

Læringsmål

Hva du skal kunne etter å ha lest kapittelet.

  1. 01Forklar hvorfor avstander mister kontrast og data blir glisne når antall dimensjoner øker
  2. 02Regn ut hovedkomponenter og forklart variansandel fra en liten kovariansmatrise
  3. 03Forklar hvorfor data sentreres og noen ganger standardiseres før PCA, og hvorfor hovedkomponentene er ukorrelerte
  4. 04Velg antall komponenter fra et scree-plott eller en kumulativ terskel
  5. 05Tolk et t-SNE-kart og forklar hvorfor t-SNE ikke kan transformere nye punkter
  6. 06Regn ut Isolation Forest-scoren og tolk falske positive når en terskel gjør scoren om til flagg