Random Forest Regression on monipuolinen koneoppimistekniikka numeeristen arvojen ennustamiseen. Se yhdistää useiden päätöspuiden ennusteet ylisovituksen vähentämiseksi ja tarkkuuden parantamiseksi. Pythonin koneoppiminen kirjastojen avulla on helppo toteuttaa ja optimoida tämä lähestymistapa.
Yhtye-oppiminen
Ensemble learning on koneoppimistekniikka, joka yhdistää useiden mallien ennusteet tarkemman ja vakaamman ennusteen luomiseksi. Se on lähestymistapa, joka hyödyntää useiden mallien kollektiivista älykkyyttä parantaakseen oppimisjärjestelmän yleistä suorituskykyä.
Ensemble-menetelmien tyypit
Ensemble-oppimismenetelmiä on erilaisia, mukaan lukien:
- Pussit (Bootstrap Aggregating): Tämä menetelmä sisältää useiden mallien opetuksen opetusdatan satunnaisille osajouksille. Tämän jälkeen yksittäisten mallien ennusteet yhdistetään, tyypillisesti keskiarvoistamalla.
- Tehostaminen: Tämä menetelmä sisältää mallisarjan harjoittamisen, jossa jokainen seuraava malli keskittyy edellisen mallin tekemiin virheisiin. Ennusteet yhdistetään käyttämällä painotettua äänestysjärjestelmää.
- Pinoaminen: Tämä menetelmä sisältää yhden mallisarjan ennusteiden käyttämisen toisen mallin syöttöominaisuuksina. Lopullisen ennusteen tekee toisen tason malli.
Satunnainen metsä
Satunnainen metsä on kokonaisuusoppimismenetelmä, joka yhdistää useiden päätöspuiden ennusteet tarkemman ja vakaamman ennusteen tuottamiseksi. Se on eräänlainen valvottu oppimisalgoritmi, jota voidaan käyttää sekä luokittelu- että regressiotehtäviin.
Joka päätöspuu on suuri varianssi, mutta kun yhdistämme ne kaikki rinnakkain, tuloksena oleva varianssi on alhainen, koska jokainen päätöspuu saa täydellisen harjoittelun kyseiselle näytedatalle, joten tulos ei riipu yhdestä päätöspuusta vaan useista päätöspuista. Luokitteluongelman tapauksessa lopullinen tulos saadaan käyttämällä enemmistöäänestysluokittajaa. Regressioongelman tapauksessa lopullinen tulos on kaikkien tulosten keskiarvo. Tätä osaa kutsutaan Aggregointi .

Satunnainen metsäregressiomalli toimii
Mikä on satunnainen metsäregressio?
Random Forest Regression koneoppimisessa on tekninen setti pystyy suorittamaan molemmat regressio ja luokittelu tehtäviä käyttämällä useita päätöspuita ja Bootstrap and Aggregation -tekniikkaa, joka tunnetaan yleisesti nimellä pussitus . Perusajatuksena tässä on yhdistää useita päätöspuita lopullisen tuotoksen määrittämisessä sen sijaan, että luotaisiin yksittäisiin päätöspuihin.
Random Forestissa on useita päätöspuita oppimisen perusmalleina. Suoritamme satunnaisesti rivi- ja ominaisuusnäytteenoton tietojoukosta muodostaen näytetietojoukot jokaiselle mallille. Tämän osan nimi on Bootstrap.
Meidän on lähestyttävä Random Forest -regressiotekniikkaa kuten mitä tahansa muuta koneoppiminen tekniikka.
- Suunnittele tietty kysymys tai data ja hanki lähde tarvittavien tietojen määrittämiseksi.
- Varmista, että tiedot ovat saatavilla olevassa muodossa, muuten muunna ne vaadittuun muotoon.
- Määritä kaikki havaittavat poikkeamat ja puuttuvat tietopisteet, joita voidaan tarvita vaadittujen tietojen saavuttamiseksi.
- Luo koneoppimismalli.
- Aseta perusmalli, jonka haluat saavuttaa
- Harjoittele datakoneoppimismallia.
- Anna malliin näkemys testitiedoilla
- Vertaa nyt sekä testitietojen että mallin ennustetun datan suorituskykymittareita.
- Jos se ei täytä odotuksiasi, voit yrittää parantaa malliasi vastaavasti tai päivämäärää tietosi tai käyttää jotakin muuta tietojen mallinnustekniikkaa.
- Tässä vaiheessa tulkitset saamasi tiedot ja raportoit sen mukaisesti.
Satunnainen metsäregressio Pythonissa
Käytämme samanlaista näytetekniikkaa alla olevassa esimerkissä. Alla on vaiheittainen esimerkki Random Forest Regression -toteutuksesta tietojoukossa, joka voidaan ladata täältä - https://bit.ly/417n3N5
Python kirjastojen ansiosta meidän on erittäin helppoa käsitellä tietoja ja suorittaa tyypillisiä ja monimutkaisia tehtäviä yhdellä koodirivillä.
- Pandat – Tämä kirjasto auttaa lataamaan tietokehyksen 2D-taulukkomuodossa, ja siinä on useita toimintoja analysointitehtävien suorittamiseen yhdellä kertaa.
- Nuhjuinen – Numpy-taulukot ovat erittäin nopeita ja voivat suorittaa suuria laskutoimituksia hyvin lyhyessä ajassa.
- Matplotlib / Seaborn – Tätä kirjastoa käytetään visualisointien piirtämiseen.
- Sklearn – Tämä moduuli sisältää useita kirjastoja, joissa on valmiiksi toteutettuja toimintoja tietojen esikäsittelystä mallin kehittämiseen ja arviointiin.
- RandomForestRegressor – Tämä on regressiomalli, joka perustuu Random Forest -malliin tai kokonaisoppimiseen, jota käytämme tässä artikkelissa käyttämällä sklearn-kirjastoa.
- sklearn: Tämä kirjasto on Pythonin koneoppimiskirjasto. Se tarjoaa laajan valikoiman työkaluja koneoppimismallien esikäsittelyyn, mallintamiseen, arviointiin ja käyttöönottoon.
- LabelEncoder: Tätä luokkaa käytetään kategorisen tiedon koodaamiseen numeerisiksi arvoiksi.
- KNNIMuter: Tätä luokkaa käytetään tietojoukon puuttuvien arvojen laskemiseen k-lähimpien naapureiden lähestymistavalla.
- train_test_split: Tätä toimintoa käytetään tietojoukon jakamiseen harjoitus- ja testausjoukkoihin.
- StandardScaler: Tätä luokkaa käytetään ominaisuuksien standardointiin poistamalla keskiarvo ja skaalaamalla yksikkövarianssiin.
- f1_score: Tätä toimintoa käytetään luokitusmallin suorituskyvyn arvioimiseen F1-pisteiden avulla.
- RandomForestRegressor: Tätä luokkaa käytetään satunnaisen metsäregressiomallin harjoittamiseen.
- cross_val_score: Tätä toimintoa käytetään k-kertaisen ristiinvalidoinnin suorittamiseen mallin suorituskyvyn arvioimiseksi
Vaihe 1: Tuo kirjastot
Tuomme tänne kaikki tarvittavat kirjastot.
Python 3
import> pandas as pd> import> matplotlib.pyplot as plt> import> seaborn as sns> import> sklearn> import> warnings> from> sklearn.preprocessing>import> LabelEncoder> from> sklearn.impute>import> KNNImputer> from> sklearn.model_selection>import> train_test_split> from> sklearn.preprocessing>import> StandardScaler> from> sklearn.metrics>import> f1_score> from> sklearn.ensemble>import> RandomForestRegressor> from> sklearn.ensemble>import> RandomForestRegressor> from> sklearn.model_selection>import> cross_val_score> warnings.filterwarnings(>'ignore'>)> |
>
>
Vaihe 2: Tuo tietojoukko
Ladataan nyt tietojoukko pandan tietokehykseen. Parempaan tiedonkäsittelyyn ja kätevien toimintojen hyödyntämiseen monimutkaisten tehtävien suorittamiseen yhdellä kertaa.
np std
Python 3
df>=> pd.read_csv(>'Salaries.csv'>)> print>(df)> |
>
>
Lähtö:
Position Level Salary 0 Business Analyst 1 45000 1 Junior Consultant 2 50000 2 Senior Consultant 3 60000 3 Manager 4 80000 4 Country Manager 5 110000 5 Region Manager 6 150000 6 Partner 7 200000 7 Senior Partner 8 300000 8 C-level 9 500000 9 CEO 10 1000000>
Tässä.info()>menetelmä tarjoaa nopean yleiskatsauksen tietojoukon rakenteesta, tietotyypeistä ja muistin käytöstä.
Python 3
df.info()> |
>
>
Lähtö:
RangeIndex: 10 entries, 0 to 9 Data columns (total 3 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Position 10 non-null object 1 Level 10 non-null int64 2 Salary 10 non-null int64 dtypes: int64(2), object(1) memory usage: 372.0+ bytes>
Vaihe 3: Tietojen valmistelu
Tässä koodi poimii tietojoukosta kaksi tietojen osajoukkoa ja tallentaa ne erillisiin muuttujiin.
- Ominaisuuksien purkaminen: Se poimii ominaisuudet DataFramesta ja tallentaa ne muuttujaan nimeltä
X>. - Kohdemuuttujan poimiminen: Se poimii kohdemuuttujan DataFrame-kehyksestä ja tallentaa sen nimettyyn muuttujaan
y>.
Python 3
# Assuming df is your DataFrame> X>=> df.iloc[:,>1>:>2>].values>#features> y>=> df.iloc[:,>2>].values># Target variable> |
>
java-taulukko luetteloon
>
Vaihe 4: Satunnainen metsäregressorimalli
Koodi käsittelee kategorista dataa koodaamalla sen numeerisesti, yhdistää käsitellyt tiedot numeeriseen dataan ja harjoittelee satunnaista metsäregressiomallia käyttämällä valmisteltua dataa.
Python 3
import> pandas as pd> from> sklearn.ensemble>import> RandomForestRegressor> from> sklearn.preprocessing>import> LabelEncoder> >Check>for> and> handle categorical variables> label_encoder>=> LabelEncoder()> x_categorical>=> df.select_dtypes(include>=>[>'object'>]).>apply>(label_encoder.fit_transform)> x_numerical>=> df.select_dtypes(exclude>=>[>'object'>]).values> x>=> pd.concat([pd.DataFrame(x_numerical), x_categorical], axis>=>1>).values> # Fitting Random Forest Regression to the dataset> regressor>=> RandomForestRegressor(n_estimators>=>10>, random_state>=>0>, oob_score>=>True>)> # Fit the regressor with x and y data> regressor.fit(x, y)> |
>
>
Vaihe 5: Tee ennusteita ja arvioi
Koodi arvioi koulutetun Random Forest Regression -mallin:
- out-of-bag (OOB) -pistemäärä, joka arvioi mallin yleistyssuorituskyvyn.
- Tekee ennusteita käyttämällä koulutettua mallia ja tallentaa ne 'ennusteet' -taulukkoon.
- Arvioi mallin suorituskyvyn käyttämällä MSE (Mean Squared Error) ja R-squared (R2) -mittauksia.
Out of Bag -pisteet RandomForestissa
Laukun pisteet tai OOB pisteet on validointitekniikan tyyppi, jota käytetään pääasiassa pussitusalgoritmeissa pussitusalgoritmin vahvistamiseen. Tässä pieni osa validointitiedoista otetaan tiedon valtavirrasta, ja tietyn validointidatan ennusteet tehdään ja verrataan muihin tuloksiin.
Suurin etu, jonka OOB-pisteet tarjoaa, on se, että pussitusalgoritmi ei näe tässä validointitietoja ja siksi OOB-pistemäärän tulokset ovat todellisia tuloksia, jotka osoittivat pussitusalgoritmin todellisen suorituskyvyn.
Tietyn Random Forest -algoritmin OOB-pistemäärän saamiseksi on asetettava OOB_Score-parametrin arvo True algoritmissa.
Python 3
missä on kannettavan tietokoneen näppäimistön insert-näppäin
# Evaluating the model> from> sklearn.metrics>import> mean_squared_error, r2_score> # Access the OOB Score> oob_score>=> regressor.oob_score_> print>(f>'Out-of-Bag Score: {oob_score}'>)> # Making predictions on the same data or new data> predictions>=> regressor.predict(x)> # Evaluating the model> mse>=> mean_squared_error(y, predictions)> print>(f>'Mean Squared Error: {mse}'>)> r2>=> r2_score(y, predictions)> print>(f>'R-squared: {r2}'>)> |
>
>
Lähtö:
Out-of-Bag Score: 0.644879832593859 Mean Squared Error: 2647325000.0 R-squared: 0.9671801245316117>
Vaihe 6: Visualisointi
Nyt visualisoidaan tulokset, jotka on saatu käyttämällä RandomForest Regression -mallia palkkatietoaineistossamme.
- Luo ennustepisteiden ruudukon, joka kattaa ominaisuuden arvojen alueen.
- Piirtää todelliset datapisteet sinisinä sirontapisteinä.
- Piirtää ennusteruudukon ennustetut arvot vihreänä viivana.
- Lisää tarroja ja otsikon juonen ymmärtämisen helpottamiseksi.
Python 3
import> numpy as np> X_grid>=> np.arange(>min>(X),>max>(X),>0.01>)> X_grid>=> X_grid.reshape(>len>(X_grid),>1>)> > plt.scatter(X,y, color>=>'blue'>)>#plotting real points> plt.plot(X_grid, regressor.predict(X_grid),color>=>'green'>)>#plotting for predict points> > plt.title(>'Random Forest Regression Results'>)> plt.xlabel(>'Position level'>)> plt.ylabel(>'Salary'>)> plt.show()> |
>
>
Lähtö:

Vaihe 7: Yksittäisen päätöspuun visualisointi satunnaisesta metsämallista
Koodi visualisoi yhden koulutetun Random Forest -mallin päätöspuista. Piirtää valitun päätöspuun ja näyttää yksittäisen puun päätöksentekoprosessin kokonaisuuden sisällä.
kaksiulotteinen matriisiohjelma c
Python 3
from> sklearn.tree>import> plot_tree> import> matplotlib.pyplot as plt> # Assuming regressor is your trained Random Forest model> # Pick one tree from the forest, e.g., the first tree (index 0)> tree_to_plot>=> regressor.estimators_[>0>]> # Plot the decision tree> plt.figure(figsize>=>(>20>,>10>))> plot_tree(tree_to_plot, feature_names>=>df.columns.tolist(), filled>=>True>, rounded>=>True>, fontsize>=>10>)> plt.title(>'Decision Tree from Random Forest'>)> plt.show()> |
>
>
Lähtö:
Satunnaisen metsäregression sovellukset
Satunnaisessa metsäregressiossa on laaja valikoima reaalimaailman ongelmia, mukaan lukien:
- Jatkuvien numeeristen arvojen ennustaminen: Asuntojen hintojen, osakehintojen tai asiakkaan elinkaariarvon ennustaminen.
- Riskitekijöiden tunnistaminen: Sairauksien, talouskriisien tai muiden negatiivisten tapahtumien riskitekijöiden havaitseminen.
- Korkeadimensionaalisen datan käsittely: Analysoidaan tietojoukkoja, joissa on suuri määrä syöttöominaisuuksia.
- Monimutkaisten suhteiden vangitseminen: Syöteominaisuuksien ja kohdemuuttujan välisten monimutkaisten suhteiden mallintaminen.
Satunnaisen metsäregression edut
- Se on helppokäyttöinen ja vähemmän herkkä harjoitusdatalle verrattuna päätöspuuhun.
- Se on tarkempi kuin päätöspuu algoritmi.
- Se on tehokas suurten tietojoukkojen käsittelyssä, joilla on monia attribuutteja.
- Se pystyy käsittelemään puuttuvia tietoja, poikkeamat , ja meluisia ominaisuuksia.
Satunnaisen metsäregression haitat
- Mallia voi myös olla vaikea tulkita.
- Tämä algoritmi saattaa vaatia jonkin verran toimialueen asiantuntemusta sopivien parametrien, kuten päätöspuiden lukumäärän, kunkin puun enimmäissyvyyden ja kussakin jaossa huomioon otettavien ominaisuuksien lukumäärän valitsemiseksi.
- Se on laskennallisesti kallista, etenkin suurille tietojoukoille.
- Se voi kärsiä ylisovitus jos malli on liian monimutkainen tai päätöspuiden määrä on liian suuri.
Johtopäätös
Random Forest Regressionista on tullut tehokas työkalu jatkuviin ennustetehtäviin, ja sillä on etuja perinteisiin päätöspuihin verrattuna. Sen kyky käsitellä suuriulotteisia tietoja, siepata monimutkaisia suhteita ja vähentää ylisovitusta on tehnyt siitä suositun valinnan useisiin sovelluksiin. Pythonin scikit-learn-kirjasto mahdollistaa Random Forest Regression -mallien toteutuksen, optimoinnin ja arvioinnin, mikä tekee siitä helppokäyttöisen ja tehokkaan tekniikan koneoppimisen harjoittajille.
Usein kysytyt kysymykset (FAQ)
1. Mikä on Random Forest Regression Python?
Random Forest Regression Python on kokonaisoppimismenetelmä, joka käyttää useita päätöspuita ennusteiden tekemiseen. Se on tehokas ja monipuolinen algoritmi, joka sopii hyvin regressiotehtäviin.
2. Mitä hyötyä on satunnaisesta metsäregressiosta?
Random Forest Regression avulla voidaan ennustaa erilaisia kohdemuuttujia, mukaan lukien hinnat, myynti, asiakkaiden vaihtuvuus ja paljon muuta. Se on vankka algoritmi, jota ei helposti soviteta liikaa, joten se on hyvä valinta tosielämän sovelluksiin.
3. Mitä eroa on satunnaisen metsän ja regression välillä?
Random Forest on ensemble-oppimismenetelmä, kun taas regressio on eräänlainen valvottu oppimisalgoritmi. Random Forest käyttää useita päätöspuita ennusteiden tekemiseen, kun taas regressio käyttää yhtä mallia ennustamiseen.
4. Kuinka virität satunnaisen metsäregression hyperparametrit?
On olemassa useita menetelmiä satunnaisen metsäregression hyperparametrien virittämiseen, kuten:
- Ruudukkohaku: Ruudukkohakuun kuuluu systemaattisesti kokeilla erilaisia hyperparametriarvojen yhdistelmiä parhaan yhdistelmän löytämiseksi.
- Satunnainen haku: Satunnaishaku ottaa satunnaisesti näytteitä hyperparametriarvojen erilaisista yhdistelmistä hyvän yhdistelmän löytämiseksi.
5. Miksi satunnainen metsä on parempi kuin regressio?
Random Forest on yleensä tarkempi ja vankempi kuin regressio. Se on myös vähemmän altis ylisovitukselle, mikä tarkoittaa, että se todennäköisemmin yleistyy hyvin uusiin tietoihin.
Satunnaisen metsäregression sovellukset