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.
Begreper
Sentrale begreper fra kapittelet med korte definisjoner.
Ett enkelt tall, i motsetning til en vektor eller matrise med flere komponenter.
En ordnet liste med tall som kan representere én observasjon, én parameterliste eller én retning.
Et rektangulært rutenett av tall. Et datasett kan representeres med observasjoner som rader og features som kolonner.
En flerdimensjonal tallstruktur som generaliserer skalarer, vektorer og matriser.
Et mål på hvor raskt en funksjon endrer seg lokalt når én variabel endres.
Vektoren av partiellderiverte. Den peker i retningen der en funksjon øker raskest lokalt.
En variabel som knytter et numerisk utfall til hvert mulig resultat av et tilfeldig forsøk.
Det langsiktige sannsynlighetsvektede gjennomsnittet til en tilfeldig variabel.
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.
Sannsynligheten for en hendelse eller klasse før den nye observasjonen er tatt med. I klassifikasjon er prioren ofte klasseandelen, også kalt grunnraten.
Sannsynligheten for observasjonen dersom hypotesen er sann. Det er ikke en sannsynlighet for , og likelihoodene for ulike hypoteser trenger ikke summere til 1.
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
Skalarproduktet kombinerer to vektorer til ett tall og brukes blant annet som lineær modellscore.
Matrise-vektor-produkt
Hver komponent i er skalarproduktet mellom én rad i og vektoren .
Derivert
Den deriverte beskriver lokal endring og forteller hvilken vei en endimensjonal tapsfunksjon øker.
Gradient
Gradienten samler alle partiellderiverte og peker i retningen med størst lokal økning.
Gjennomsnitt
Gjennomsnittet oppsummerer sentrum i et numerisk utvalg, men påvirkes sterkt av ekstreme verdier.
Utvalgsvarians
Utvalgsvariansen måler spredning rundt gjennomsnittet med Bessel-korreksjonen .
Bayes’ teorem
Bayes’ teorem snur en betinget sannsynlighet ved hjelp av likelihood, prior og evidens.
Formregel for matriseprodukt
De indre dimensjonene må være like og forsvinner, de ytre blir igjen. En -matrise ganger en -matrise gir .
Forventningsverdi for en diskret variabel
Det sannsynlighetsvektede gjennomsnittet av alle mulige utfall. Det beskriver gjennomsnittet over mange gjentak, ikke neste utfall.
Varians ved skalering og forskyvning
En konstant flytter fordelingen uten å endre spredningen. Skalering med ganger variansen med og standardavviket med .
Loven om total sannsynlighet
Evidensen i nevneren til Bayes' regel: summen over alle måter observasjonen kan oppstå på.
Kodesnutter
Kodesnutter fra kapittelet, vist literal.
NumPy-former, matriseprodukt og broadcasting
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.
Forventning og spredning med en seedet simulering
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.
Skalarprodukt på tre måter og bidrag per feature
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.
Analytisk og numerisk gradient
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.
Trekking med og uten tilbakelegging
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.
- 01Les formen på resultatet av @, *, axis-operasjoner og broadcasting i NumPy, og avgjør når en linje gir formfeil
- 02Regn ut skalarprodukt og matrise–vektor-produkt for hånd og tolk hvert ledd som bidraget fra én feature
- 03Regn ut deriverte og gradienter for små funksjoner, og velg retningen som senker funksjonsverdien
- 04Regn ut forventning og varians, og forklar hvordan de endres når data skaleres eller forskyves
- 05Bruk Bayes' regel med prior, likelihood og evidens til å regne ut en posterior, og forklar hvorfor grunnraten betyr mye
- 06Velg mellom random.sample, random.choices og rng.choice ut fra om trekket skal være med eller uten tilbakelegging