Random Forest-laboratorium

Ensemble-læring og flokkens visdom i 2D

← Til værktøjerne

Laboratorium · Sammenlign · Stem · Forklar

Én træstamme er sårbar. En skov er robust.

Et beslutningstræ kan lære meget detaljerede regler, men det kan også overreagere på enkelte punkter. Random Forest træner mange forskellige træer og lader dem stemme. Hvert træ kan tage fejl – men fejlene udligner ofte hinanden, så skoven finder en mere stabil beslutningsgrænse.

Din missionSammenlign ét træ med en hel skov. Se, hvordan flere uperfekte modeller tilsammen kan give en stærk og robust klassifikation.
1

Træer ser forskellige data

Bagging giver hvert træ et tilfældigt bootstrap-udsnit af datapunkterne.

2

Træer ser forskellige egenskaber

Ved hvert split prøver træet kun et tilfældigt udvalg af egenskaber.

3

Skoven stemmer

Den endelige klasse er flokkens flertal – ikke ét træs skråsikre gæt.

Beslutningsflade for 50 træer

2D-datasæt: to måner
Skoven stemmerRød/blå flade = flertallet · mørke linjer = træernes splits
Træer
50
Dybde
6
Træningsnøjagtighed
Visning
Skov

Flokkens visdom

Klik på et sted i koordinatsystemet. Så spørger du skoven, hvilken klasse den vil vælge, og ser hvor mange træer der stemmer hver vej.

Blå: – træer
Rød: – træer

Skoven som faktiske beslutningstræer

Her ser du tre repræsentative træer fra den aktuelle skov. Blå bokse er beslutningsnoder, og farvede blade er træernes endelige klassifikationer.

Træerne er forskellige, fordi de har set forskellige bootstrap-udsnit og tilfældige egenskabsvalg.

Kodeværksted: Random Forest i Python

Redigér skabelonen, download den, og forbind koden med beslutningsfladen ovenfor.

random_forest_2d.py
Python-skabelonen er klar.

Kør lokalt med python random_forest_2d.py. Installér først pip install numpy matplotlib scikit-learn. Prøv især at ændre n_estimators, max_depth og NOISE.

flertallet.py
stemmer = []
for træ in skoven:
    stemmer.append(træ.predict([nyt_punkt])[0])

# Flertallet bestemmer klassifikationen.
klasse = mest_frekvente(stemmer)
selvtillid = stemmer.count(klasse) / len(stemmer)

En skov er ikke magisk: den kombinerer mange beslutninger. Når træerne er både gode og tilpas forskellige, bliver flertallet robust.

Prøv disse ændringer

Skift n_estimators fra 1 til 50. Tegn forskellen mellem et enkelt træ og en skov.

Skift max_depth til 2, 6 og 12. Beskriv beslutningsfladens kompleksitet.

Øg NOISE. Hvornår bliver selv flertallet usikkert?