CMD + K

Kapittel 0Begreper & formler · Verktøykassa: matte og Python for ML
Referanseside · Kapittel 0

Begreper & referanser

Alle nøkkelbegrepene, formlene og referansene fra Verktøykassa: matte og Python for ML, samlet på én side. Bruk denne som oppslag når du leser, øver flashcards eller tar quiz.

Øv med flashcards28 kort fra dette kapittelet

Begreper

Sentrale begreper fra kapittelet med korte definisjoner.

01Skalar

Ett enkelt tall, i motsetning til en vektor eller matrise med flere komponenter.

02Vektor

En ordnet liste med tall som kan representere én observasjon, én parameterliste eller én retning.

03Matrise

Et rektangulært rutenett av tall. Et datasett kan representeres med observasjoner som rader og features som kolonner.

04Tensor

En flerdimensjonal tallstruktur som generaliserer skalarer, vektorer og matriser.

05Derivert

Et mål på hvor raskt en funksjon endrer seg lokalt når én variabel endres.

06Gradient

Vektoren av partiellderiverte. Den peker i retningen der en funksjon øker raskest lokalt.

07Tilfeldig variabel

En variabel som knytter et numerisk utfall til hvert mulig resultat av et tilfeldig forsøk.

08Forventningsverdi

Det langsiktige sannsynlighetsvektede gjennomsnittet til en tilfeldig variabel.

09Broadcasting

NumPy-regelen som lar arrays med ulike former kombineres elementvis. Formene sammenlignes fra høyre, og to dimensjoner passer når de er like eller når én av dem er 1. Form minus form trekker for eksempel samme vektor fra hver rad.

10Prior

Sannsynligheten for en hendelse eller klasse før den nye observasjonen er tatt med. I klassifikasjon er prioren ofte klasseandelen, også kalt grunnraten.

11Likelihood

Sannsynligheten for observasjonen dersom hypotesen er sann. Det er ikke en sannsynlighet for , og likelihoodene for ulike hypoteser trenger ikke summere til 1.

12Posterior

Den oppdaterte sannsynligheten etter at observasjonen er tatt med. Bayes' regel gir posterior lik likelihood ganger prior delt på evidensen .

Formler

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

skalarprodukt

Skalarprodukt

Skalarproduktet kombinerer to vektorer til ett tall og brukes blant annet som lineær modellscore.

x_jfeature j i observasjonen
w_jvekten til feature j
dantall features
matrise-vektor-produkt

Matrise-vektor-produkt

Hver komponent i er skalarproduktet mellom én rad i og vektoren .

A_{ij}elementet i rad i og kolonne j
x_jkomponent j i inputvektoren
y_ikomponent i i resultatet
derivert

Derivert

Den deriverte beskriver lokal endring og forteller hvilken vei en endimensjonal tapsfunksjon øker.

hen stadig mindre endring i x
f'(x)lokal endringsrate
gradient

Gradient

Gradienten samler alle partiellderiverte og peker i retningen med størst lokal økning.

w_jparameter j
∂f/∂w_jendring i f når bare parameter j endres
gjennomsnitt

Gjennomsnitt

Gjennomsnittet oppsummerer sentrum i et numerisk utvalg, men påvirkes sterkt av ekstreme verdier.

nantall observasjoner
x_iobservasjon i
x̄gjennomsnittet
utvalgsvarians

Utvalgsvarians

Utvalgsvariansen måler spredning rundt gjennomsnittet med Bessel-korreksjonen .

s²utvalgsvarians
x̄utvalgsgjennomsnitt
n-1antall frihetsgrader
bayes-teorem

Bayes’ teorem

Bayes’ teorem snur en betinget sannsynlighet ved hjelp av likelihood, prior og evidens.

P(A)prior for A
P(B|A)sannsynligheten for B når A gjelder
P(A|B)oppdatert sannsynlighet for A etter B
matriseprodukt-former

Formregel for matriseprodukt

De indre dimensjonene må være like og forsvinner, de ytre blir igjen. En -matrise ganger en -matrise gir .

mantall rader i A (ofte observasjoner)
nindre dimensjon, må være lik i A og B
pantall kolonner i B
forventning-diskret

Forventningsverdi for en diskret variabel

Det sannsynlighetsvektede gjennomsnittet av alle mulige utfall. Det beskriver gjennomsnittet over mange gjentak, ikke neste utfall.

xet mulig utfall
P(X = x)sannsynligheten for utfallet
varians-skalering

Varians ved skalering og forskyvning

En konstant flytter fordelingen uten å endre spredningen. Skalering med ganger variansen med og standardavviket med .

askaleringsfaktor
bkonstant forskyvning
Var(X)variansen før transformasjonen
total-sannsynlighet

Loven om total sannsynlighet

Evidensen i nevneren til Bayes' regel: summen over alle måter observasjonen kan oppstå på.

P(B | A)sannsynligheten for B når A er sann
P(B | ¬A)sannsynligheten for B når A er usann
P(¬A)1 − P(A)

Kodesnutter

Kodesnutter fra kapittelet, vist literal.

Kode

NumPy-former, matriseprodukt og broadcasting

Python
import numpy as np X = np.array([[1.0, 2.0, 0.0],              [0.0, 1.0, 3.0],              [2.0, 0.0, 1.0],              [1.0, 1.0, 1.0]])         # 4 observasjoner, 3 featuresw = np.array([2.0, 1.5, 1.0])          # én vekt per featureprint(f"X {X.shape} @ w {w.shape} gir {(X @ w).shape}, mens X * w gir {(X * w).shape}") akse = 0  # @param 0..1keepdims = 0  # @param 0..1snitt = X.mean(axis=akse, keepdims=bool(keepdims))print(f"X.mean(axis={akse}, keepdims={bool(keepdims)}) har form {snitt.shape}")try:    print(f"X - snitt har form {(X - snitt).shape}")   # broadcastingexcept ValueError as feil:    print("formfeil:", str(feil)[:70])

Prøv: Sett akse til 1 og les «formfeil» på siste linje; sett så keepdims til 1 og se «X - snitt har form (4, 3)» virke igjen.

Kode

Forventning og spredning med en seedet simulering

Python
import numpy as np rng = np.random.default_rng(4172)utfall = np.array([0, 10])p = np.array([0.8, 0.2])E = np.sum(utfall * p)std = np.sqrt(np.sum((utfall - E) ** 2 * p))print(f"X teoretisk: E = {E:.2f}, std = {std:.2f}") a = 2.0  # @param 0..3 0.5c = 0.0  # @param 0..10 1trekk = rng.choice(utfall, size=20_000, p=p)ny = a * trekk + c                     # ny variabel Y = aX + cprint(f"Y simulert:  snitt = {ny.mean():.2f}, std = {ny.std():.2f}")print(f"Y teoretisk: snitt = {a * E + c:.2f}, std = {abs(a) * std:.2f}")

Prøv: Dra c og se bare «snitt» på «Y teoretisk» flytte seg; dra så a og se både snitt og std skaleres.

Kode

Skalarprodukt på tre måter og bidrag per feature

Python
import numpy as np # Én leilighet: areal (10 m²), antall beboere, utetemperatur (°C)x = np.array([6.5, 2.0, -4.0])w_temp = -0.8  # @param -1.5..1.5 0.1w = np.array([1.2, 3.0, w_temp])   # kWh per enhet av hver feature lokke = sum(x[j] * w[j] for j in range(len(x)))print(f"løkke {lokke:.2f}   np.dot {np.dot(x, w):.2f}   x @ w {x @ w:.2f}") for navn, bidrag in zip(["areal", "beboere", "temperatur"], x * w):    print(f"{navn:10s} bidrar {bidrag:6.2f} kWh")

Prøv: Dra w_temp over null og se «temperatur bidrar» skifte fortegn og totalen på linja «løkke … np.dot … x @ w» falle.

Kode

Analytisk og numerisk gradient

Python
import numpy as np def f(w):    return (w[0] - 3) ** 2 + 2 * (w[1] + 1) ** 2   # et lite tap med to parametere def analytisk_gradient(w):    return np.array([2 * (w[0] - 3), 4 * (w[1] + 1)]) def numerisk_gradient(w, h=1e-5):    g = np.zeros_like(w)    for j in range(len(w)):        e = np.zeros_like(w)        e[j] = h        g[j] = (f(w + e) - f(w - e)) / (2 * h)   # sentral differanse    return g w = np.array([1.0, 0.5])print(f"analytisk gradient: {analytisk_gradient(w)}")print(f"numerisk gradient:  {np.round(numerisk_gradient(w), 4)}") eta = 0.1  # @param 0.05..0.8 0.05nytt_w = w - eta * analytisk_gradient(w)   # ett steg MOT gradientenprint(f"nytt w = {np.round(nytt_w, 3)}:  f går fra {f(w):.3f} til {f(nytt_w):.3f}")

Prøv: Dra eta oppover og se «f går fra … til …» snu fra synkende til stigende, mens analytisk og numerisk gradient står uendret.

Kode

Trekking med og uten tilbakelegging

Python
import mathimport randomimport numpy as np random.seed(12)lag = ["Rød", "Blå", "Grønn", "Gul", "Lilla", "Oransje"]k = 4  # @param 1..8 print("choices, med tilbakelegging:", random.choices(lag, k=k))try:    print("sample, uten tilbakelegging:", random.sample(lag, k))except ValueError:    print(f"sample feiler: kan ikke trekke {k} ulike lag av {len(lag)}") # Hvor ofte gir k trekk med tilbakelegging minst ett duplikat?rng = np.random.default_rng(12)trekk = np.sort(rng.choice(6, size=(10_000, k), replace=True), axis=1)andel = np.mean(np.any(np.diff(trekk, axis=1) == 0, axis=1))teori = 1 - math.perm(6, k) / 6 ** kprint(f"andel med duplikat: simulert {andel:.3f}, teori {teori:.3f}")

Prøv: Dra k forbi 6 og se «sample, uten tilbakelegging» feile mens «choices» går fint, og «andel med duplikat» nærme seg 1.

Læringsmål

Hva du skal kunne etter å ha lest kapittelet.

  1. 01Les formen på resultatet av @, *, axis-operasjoner og broadcasting i NumPy, og avgjør når en linje gir formfeil
  2. 02Regn ut skalarprodukt og matrise–vektor-produkt for hånd og tolk hvert ledd som bidraget fra én feature
  3. 03Regn ut deriverte og gradienter for små funksjoner, og velg retningen som senker funksjonsverdien
  4. 04Regn ut forventning og varians, og forklar hvordan de endres når data skaleres eller forskyves
  5. 05Bruk Bayes' regel med prior, likelihood og evidens til å regne ut en posterior, og forklar hvorfor grunnraten betyr mye
  6. 06Velg mellom random.sample, random.choices og rng.choice ut fra om trekket skal være med eller uten tilbakelegging