Tilfeldige skoger og bagging
Ensemblekonseptet, RandomForestClassifier, n_estimators, egenskapsviktighet og OOB-skår.
Tilfeldige skoger og bagging er en gratis leksjon i Lær AI med Python på CoddyKit. Dette er leksjon 2 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Lær AI med Python, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Lær AI med Python inneholder totalt 4 leksjoner.
Problemet med enkelttrær
Et enkelt beslutningstre har høy varians: Hvis De trener det på nytt med litt andre data, kan De få et helt annet tre. Ensemblemetoder løser dette ved å kombinere mange trær.
Bagging (bootstrap-aggregasjon)
Bagging trener mange modeller på ulike bootstrap-utvalg (tilfeldig utvalg med tilbakelegging) fra dataene, og beregner deretter gjennomsnittet av prediksjonene deres.
Ved å beregne gjennomsnittet av mange modeller med høy varians reduseres den samlede variansen uten at skjevheten øker særlig.
from sklearn.ensemble import BaggingClassifier
from sklearn.tree import DecisionTreeClassifier
bag = BaggingClassifier(
estimator=DecisionTreeClassifier(),
n_estimators=100,
random_state=0,
)
bag.fit(Xtr, ytr)Fra bagging til random forest
En random forest bruker bagging av trær pluss ett ekstra triks: Ved hver oppdeling vurderes bare en tilfeldig delmengde av egenskapene.
Dette gjør trærne mindre korrelerte, slik at feilene deres i større grad utligner hverandre og ensemblet blir bedre.
Grunnleggende om RandomForestClassifier
Bruk RandomForestClassifier. Den viktigste parameteren, n_estimators, angir hvor mange trær som skal bygges. Flere trær gir et mer stabilt resultat, men tar lengre tid.
from sklearn.ensemble import RandomForestClassifier
rf = RandomForestClassifier(n_estimators=200, random_state=0)
rf.fit(Xtr, ytr)
print("Accuracy:", rf.score(Xte, yte))Parallell trening med n_jobs
Trærne i en skog er uavhengige og kan derfor trenes parallelt. Sett n_jobs=-1 for å bruke alle CPU-kjerner og gjøre tilpasningen betydelig raskere.
from sklearn.ensemble import RandomForestClassifier
rf = RandomForestClassifier(
n_estimators=500,
n_jobs=-1, # use all cores
random_state=0,
)
rf.fit(Xtr, ytr)Out-of-Bag-score (OOB)
Hvert tre lar omtrent en tredjedel av utvalgene være ubrukt fordi bootstrap-utvalget ikke valgte dem. Disse out-of-bag-utvalgene fungerer som et innebygd valideringssett.
Sett oob_score=True for å få et gratis estimat av generaliseringsfeilen uten en separat oppdeling.
from sklearn.ensemble import RandomForestClassifier
rf = RandomForestClassifier(
n_estimators=300,
oob_score=True,
random_state=0,
)
rf.fit(Xtr, ytr)
print("OOB score:", rf.oob_score_)Kontrollere tredybden i skogen
De samme treparametrene gjelder: max_depth, min_samples_leaf og max_features (hvor mange egenskaper som skal prøves per oppdeling).
max_features="sqrt" er den vanlige standardverdien for klassifisering.
from sklearn.ensemble import RandomForestClassifier
rf = RandomForestClassifier(
n_estimators=300,
max_depth=12,
max_features="sqrt",
random_state=0,
)Innebygd feature importance
I likhet med enkelttrær har skoger feature_importances_, beregnet som gjennomsnittet for alle trærne. Denne urenhetsbaserte viktigheten er rask, men kan være skjev til fordel for egenskaper med mange unike verdier.
from sklearn.ensemble import RandomForestClassifier
import numpy as np
rf = RandomForestClassifier(n_estimators=200, random_state=0).fit(Xtr, ytr)
order = np.argsort(rf.feature_importances_)[::-1]
for i in order[:5]:
print(i, rf.feature_importances_[i])Permutation importance
Permutation importance er mer pålitelig: Den stokker om én egenskapskolonne og måler hvor mye scoren synker. Et stort fall betyr at egenskapen var viktig.
Metoden er modellagnostisk og unngår skjevheten i urenhetsbasert viktighet.
from sklearn.inspection import permutation_importance
result = permutation_importance(
rf, Xte, yte, n_repeats=10, random_state=0, n_jobs=-1
)
print(result.importances_mean)Tolke resultater fra permutation importance
permutation_importance returnerer importances_mean og importances_std på tvers av gjentakelser. Beregn dette på et holdt tilbake-sett, slik at De måler effekten på generalisering og ikke hvor godt modellen er tilpasset treningsdataene.
import numpy as np
means = result.importances_mean
stds = result.importances_std
for i in np.argsort(means)[::-1]:
print(f"feature {i}: {means[i]:.3f} +/- {stds[i]:.3f}")Når bør De bruke random forest
Random forest er et godt standardvalg: Metoden er robust, krever lite justering, håndterer ikke-lineariteter og samspill og motstår overtilpasning. Ulempene er større minnebruk, tregere prediksjon enn med et enkelt tre og dårligere tolkbarhet.
Hurtigsjekk
Test forståelsen Deres av bagging og skoger.
Oppsummering
Oppsummering: Bagging trener modeller på bootstrap-utvalg og beregner gjennomsnittet av dem for å redusere variansen. Random forest legger til tilfeldige delmengder av egenskaper ved hver oppdeling. Juster med n_estimators, bruk n_jobs=-1 for bedre hastighet, få innebygd validering via oob_score, og foretrekk permutation_importance fremfor urenhetsbasert viktighet for pålitelige rangeringer.
Lær deg Python med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 53
- Leksjoner
- 225
Ofte stilte spørsmål
Er leksjonen «Tilfeldige skoger og bagging» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Lær AI med Python, inkludert «Tilfeldige skoger og bagging», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Lær AI med Python inneholder totalt 4 leksjoner.
Hva lærer jeg i «Tilfeldige skoger og bagging»?
Ensemblekonseptet, RandomForestClassifier, n_estimators, egenskapsviktighet og OOB-skår. Du øver på Lær AI med Python med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Lær AI med Python?
Ingen tidligere erfaring er nødvendig. Lær AI med Python på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.
Hvor lang tid tar leksjonen «Tilfeldige skoger og bagging»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Lær AI med Python-leksjonen?
Ja. Alle Lær AI med Python-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Beslutningstrær: teori og implementasjon
- Tilfeldige skoger og bagging
- Gradient boosting: GBM og XGBoost
- LightGBM og CatBoost