Begreper & referanser
Alle nøkkelbegrepene, formlene og referansene fra Beslutningstrær og ensembles, 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.
En modell som følger en sekvens av featuretester fra rotnoden til en prediksjon i et blad.
Et punkt i treet som deler observasjonene etter en betingelse på en feature.
Valget av feature og grense som deler dataene i to eller flere barnegrupper.
Trening av flere modeller på bootstrap-utvalg og aggregering av prediksjonene deres.
Et bagging-ensemble av beslutningstrær som også bruker tilfeldige featureutvalg ved splittene.
En sekvensiell ensemblemetode der hver ny modell trenes for å korrigere den foreløpige modellens feil.
Formler
Hver formel: hva den heter, hvordan den ser ut, og hva symbolene betyr.
Gini-urenhet
Gini er lav når én klasse dominerer en node og null når noden er ren.
Entropi
Entropi måler usikkerhet i klassefordelingen i en node.
Reduksjon i urenhet
En split vurderes etter hvor mye den reduserer vektet urenhet fra foreldrenoden.
Flertallsstemme
Et klassifikasjonsensemble kan velge klassen flest av de modellene stemmer på.
Gradient boosting
Boosting legger til et nytt tre som korrigerer feilene i den foreløpige modellen.
Kodesnutter
Kodesnutter fra kapittelet, vist literal.
Finn beste split med Gini
import numpy as np X = np.array([1.0, 1.4, 2.1, 2.8, 3.2, 4.0, 4.4, 5.1])y = np.array([0, 0, 0, 1, 0, 1, 1, 1]) def gini(labels): if labels.size == 0: return 0.0 andeler = np.bincount(labels, minlength=2) / labels.size return 1.0 - np.sum(andeler**2) for terskel in (1.75, 2.45, 3.60, 4.70): venstre = y[X <= terskel] hoyre = y[X > terskel] vektet = (venstre.size * gini(venstre) + hoyre.size * gini(hoyre)) / y.size print(f"x <= {terskel:.2f}: vektet Gini = {vektet:.3f}")Koden evaluerer kandidatgrenser deterministisk og viser at treet må vekte barneurenheten med antall observasjoner.
Bootstrap og flertallsstemme
import numpy as np rng = np.random.default_rng(4172)n = 10bootstrap = [rng.integers(0, n, size=n) for _ in range(3)]stemmer = np.array([ [1, 0, 1, 1, 0], [1, 1, 1, 0, 0], [0, 1, 1, 1, 0],])ensemble = (stemmer.mean(axis=0) >= 0.5).astype(int) for i, utvalg in enumerate(bootstrap, start=1): print(f"tre {i}, unike treningsrader:", np.unique(utvalg))print("stemmer per tre:\n", stemmer)print("ensemble: ", ensemble)Eksemplet skiller mekanismene: bootstrap skaper ulike treningsutvalg, mens flertallsstemmen samler de ferdige prediksjonene.
Læringsmål
Hva du skal kunne etter å ha lest kapittelet.
- 01Følge en observasjon fra rot til blad og forklare hvordan et beslutningstre predikerer
- 02Beregne Gini, entropi og vektet urenhetsreduksjon for en kandidatsplit
- 03Forklare hvordan bootstrap, featureutvalg og avstemning reduserer varians i random forest
- 04Sammenligne bagging og gradient boosting med hensyn til avhengighet, læringsrate og overtilpasning