Random Forest -menetelmät ja bagging
Ensemble-menetelmän periaate, RandomForestClassifier, n_estimators, piirteiden tärkeys ja OOB-pistemäärä.
Random Forest -menetelmät ja bagging on ilmainen Oppikaa tekoälyä Pythonilla-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Oppikaa tekoälyä Pythonilla-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Oppikaa tekoälyä Pythonilla-kurssilla on yhteensä 4 oppituntia.
Yksittäisten puiden ongelma
Yksittäisellä päätöspuulla on suuri varianssi: hieman erilaisella datalla uudelleen kouluttaminen voi tuottaa hyvin erilaisen puun. Ensemble-menetelmät ratkaisevat tämän yhdistämällä useita puita.
Bagging eli bootstrap-aggregointi
Bagging kouluttaa useita malleja datan erilaisilla bootstrap-otoksilla (palauttaen tehdyillä satunnaisotoksilla) ja laskee sitten niiden ennusteiden keskiarvon.
Useiden suuren varianssin mallien keskiarvo pienentää kokonaisvarianssia kasvattamatta harhaa merkittävästi.
from sklearn.ensemble import BaggingClassifier
from sklearn.tree import DecisionTreeClassifier
bag = BaggingClassifier(
estimator=DecisionTreeClassifier(),
n_estimators=100,
random_state=0,
)
bag.fit(Xtr, ytr)Baggingista satunnaismetsiin
Satunnaismetsä on puiden bagging-menetelmä, johon liittyy yksi lisätemppu: jokaisessa jaossa tarkastellaan vain piirteiden satunnaista osajoukkoa.
Tämä vähentää puiden välistä korrelaatiota, jolloin niiden virheet kumoavat toisensa paremmin ja ensemble toimii paremmin.
RandomForestClassifierin perusteet
Käyttäkää luokkaa RandomForestClassifier. Keskeinen parametri n_estimators määrittää rakennettavien puiden määrän. Useammat puut tekevät mallista vakaamman mutta hidastavat suoritusta.
from sklearn.ensemble import RandomForestClassifier
rf = RandomForestClassifier(n_estimators=200, random_state=0)
rf.fit(Xtr, ytr)
print("Accuracy:", rf.score(Xte, yte))Rinnakkainen koulutus n_jobs-parametrilla
Metsän puut ovat toisistaan riippumattomia, joten ne voidaan kouluttaa rinnakkain. Asettakaa n_jobs=-1, jotta kaikki suorittimen ytimet otetaan käyttöön ja sovittaminen nopeutuu huomattavasti.
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 (OOB) -tulos
Jokainen puu jättää noin kolmanneksen otoksista käyttämättä, koska bootstrap-otos ei valinnut niitä. Nämä out-of-bag-otokset muodostavat sisäänrakennetun validointijoukon.
Asettakaa oob_score=True, jotta saatte ilmaisen arvion yleistysvirheestä ilman erillistä jakoa.
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_)Puun syvyyden hallinta metsässä
Samat puuparametrit ovat käytettävissä: max_depth, min_samples_leaf ja max_features (kokeiltavien piirteiden määrä kussakin jaossa).
max_features="sqrt" on luokituksessa yleinen oletusarvo.
from sklearn.ensemble import RandomForestClassifier
rf = RandomForestClassifier(
n_estimators=300,
max_depth=12,
max_features="sqrt",
random_state=0,
)Sisäänrakennetut piirteiden tärkeydet
Yksittäisten puiden tavoin metsät tarjoavat feature_importances_-attribuutin, joka on laskettu kaikkien puiden keskiarvona. Tämä epäpuhtauteen perustuva tärkeys on nopea laskea, mutta se voi suosia piirteitä, joilla on paljon eri arvoja.
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])Permutaatioihin perustuva tärkeys
Permutaatioihin perustuva tärkeys on luotettavampi: yksi piirresarake sekoitetaan ja mitataan, kuinka paljon tulos heikkenee. Suuri pudotus tarkoittaa, että piirre oli tärkeä.
Menetelmä ei riipu mallista ja välttää epäpuhtauteen perustuvan harhan.
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)Permutaatiotulosten tulkinta
permutation_importance palauttaa toistojen perusteella arvot importances_mean ja importances_std. Laskekaa se erillään pidetystä joukosta, jotta mittaatte vaikutusta yleistämiseen ettekä koulutusdatan sovitukseen.
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}")Milloin satunnaismetsiä kannattaa käyttää
Satunnaismetsät ovat hyvä oletusvalinta: ne ovat vankkoja, vaativat vähän säätämistä, käsittelevät epälineaarisuuksia ja vuorovaikutuksia ja vastustavat ylisovittamista. Haittoina ovat yksittäiseen puuhun verrattuna suurempi muistinkulutus ja hitaampi ennustaminen sekä heikompi tulkittavuus.
Pikatarkistus
Testatkaa ymmärrystänne bagging-menetelmästä ja satunnaismetsistä.
Kertaus
Kertaus: Bagging kouluttaa mallit bootstrap-otoksilla ja laskee niiden keskiarvon varianssin pienentämiseksi. Satunnaismetsät lisäävät satunnaiset piirteiden osajoukot jokaiseen jakoon. Säätäkää parametrilla n_estimators, käyttäkää nopeuttamiseen asetusta n_jobs=-1, saakaa sisäänrakennettu validointi parametrilla oob_score ja suosikaa luotettavissa järjestyksissä permutation_importance-funktiota epäpuhtauteen perustuvan tärkeyden sijaan.
Opi Python tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 53
- Oppitunnit
- 225
Usein kysytyt kysymykset
Onko oppitunti ”Random Forest -menetelmät ja bagging” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Oppikaa tekoälyä Pythonilla-oppimispolun 3 oppituntia, myös oppitunnin “Random Forest -menetelmät ja bagging”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppikaa tekoälyä Pythonilla-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Random Forest -menetelmät ja bagging”?
Ensemble-menetelmän periaate, RandomForestClassifier, n_estimators, piirteiden tärkeys ja OOB-pistemäärä. Harjoittelet Oppikaa tekoälyä Pythonilla-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Oppikaa tekoälyä Pythonilla-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Oppikaa tekoälyä Pythonilla-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.
Kuinka kauan ”Random Forest -menetelmät ja bagging”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Oppikaa tekoälyä Pythonilla-oppitunnilla?
Kyllä. Jokainen Oppikaa tekoälyä Pythonilla-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Päätöspuut: teoria ja toteutus
- Random Forest -menetelmät ja bagging
- Gradient boosting: GBM ja XGBoost
- LightGBM ja CatBoost