logo

Naključna gozdna regresija v Pythonu

Naključna gozdna regresija je vsestranska tehnika strojnega učenja za napovedovanje številskih vrednosti. Združuje napovedi več odločitvenih dreves za zmanjšanje prekomernega opremljanja in izboljšanje natančnosti. Pythonov strojno učenje knjižnice olajšajo implementacijo in optimizacijo tega pristopa.

Učenje ansambla

Ansambelsko učenje je tehnika strojnega učenja, ki združuje napovedi iz več modelov za ustvarjanje natančnejše in stabilnejše napovedi. To je pristop, ki izkorišča kolektivno inteligenco več modelov za izboljšanje splošne učinkovitosti učnega sistema.

Vrste ansambelskih metod

Obstajajo različne vrste skupinskih učnih metod, vključno z:



  1. Pakiranje v vreče (združevanje Bootstrap): Ta metoda vključuje usposabljanje več modelov na naključnih podmnožicah podatkov o usposabljanju. Napovedi iz posameznih modelov se nato združijo, običajno s povprečenjem.
  2. Spodbujanje: Ta metoda vključuje usposabljanje zaporedja modelov, kjer se vsak naslednji model osredotoča na napake prejšnjega modela. Napovedi so združene z uporabo ponderirane sheme glasovanja.
  3. Zlaganje: Ta metoda vključuje uporabo napovedi iz enega niza modelov kot vhodnih funkcij za drug model. Končno napoved naredi model druge stopnje.

Naključni gozd

Naključni gozd je ansambelska učna metoda, ki združuje napovedi iz več odločitvenih dreves za izdelavo natančnejše in stabilnejše napovedi. To je vrsta algoritma za nadzorovano učenje, ki se lahko uporablja za naloge klasifikacije in regresije.

vsak odločitveno drevo ima visoko varianco, toda ko vse skupaj združimo vzporedno, je posledična varianca nizka, saj se vsako odločitveno drevo popolnoma usposobi za te določene vzorčne podatke, zato rezultat ni odvisen od enega odločitvenega drevesa, ampak od več odločitvenih dreves. V primeru problema s klasifikacijo se končni rezultat vzame z uporabo večinskega glasovnega klasifikatorja. V primeru regresijskega problema je končni rezultat povprečje vseh rezultatov. Ta del se imenuje Združevanje .

Naključni gozdni regresijski model deluje

Naključni gozdni regresijski model deluje

Kaj je naključna gozdna regresija?

Naključna gozdna regresija v strojnem učenju je tehnični set sposobni opravljati oboje regresija in klasifikacija naloge z uporabo več odločitvenih dreves in tehnike, imenovane Bootstrap in Aggregation, splošno znane kot pakiranje v vreče . Osnovna ideja za tem je združiti več odločitvenih dreves pri določanju končnega rezultata namesto zanašanja na posamezna odločitvena drevesa.

Random Forest ima več odločitvenih dreves kot osnovnih učnih modelov. Naključno izvajamo vzorčenje vrstic in vzorčenje funkcij iz nabora podatkov, tako da tvorimo vzorčne nabore podatkov za vsak model. Ta del se imenuje Bootstrap.

K regresijski tehniki naključnega gozda moramo pristopiti kot k vsaki drugi strojno učenje tehnika.

  • Oblikujte določeno vprašanje ali podatke in pridobite vir za določitev zahtevanih podatkov.
  • Prepričajte se, da so podatki v dostopni obliki, sicer jih pretvorite v zahtevano obliko.
  • Navedite vse opazne anomalije in manjkajoče podatkovne točke, ki so lahko potrebne za doseganje zahtevanih podatkov.
  • Ustvarite model strojnega učenja.
  • Nastavite osnovni model, ki ga želite doseči
  • Usposobite model podatkovnega strojnega učenja.
  • Omogočite vpogled v model s testnimi podatki
  • Zdaj primerjajte meritve uspešnosti tako testnih podatkov kot predvidenih podatkov iz modela.
  • Če ne izpolni vaših pričakovanj, lahko poskusite svoj model ustrezno izboljšati ali datirati podatke ali uporabiti drugo tehniko modeliranja podatkov.
  • Na tej stopnji interpretirate podatke, ki ste jih pridobili, in o njih poročate.

Naključna gozdna regresija v Pythonu

V spodnjem primeru bomo uporabili podobno tehniko vzorca. Spodaj je korak za korakom vzorčna implementacija regresije naključnega gozda na naboru podatkov, ki ga lahko prenesete tukaj - https://bit.ly/417n3N5

Python knjižnice nam zelo olajšajo rokovanje s podatki in izvajanje tipičnih in zapletenih nalog z eno vrstico kode.

  • Pande – Ta knjižnica pomaga naložiti podatkovni okvir v formatu 2D polja in ima več funkcij za izvajanje nalog analize naenkrat.
  • Numpy – Nizi Numpy so zelo hitri in lahko izvedejo velike izračune v zelo kratkem času.
  • Matplotlib / Seaborn – Ta knjižnica se uporablja za risanje vizualizacij.
  • Sklearn – Ta modul vsebuje več knjižnic z vnaprej implementiranimi funkcijami za izvajanje nalog od predhodne obdelave podatkov do razvoja in vrednotenja modela.
  • RandomForestRegressor – To je regresijski model, ki temelji na modelu Random Forest ali učenju ansambla, ki ga bomo uporabili v tem članku z uporabo knjižnice sklearn.
  • sklearn: Ta knjižnica je osnovna knjižnica strojnega učenja v Pythonu. Zagotavlja široko paleto orodij za predprocesiranje, modeliranje, ocenjevanje in uvajanje modelov strojnega učenja.
  • LabelEncoder: Ta razred se uporablja za kodiranje kategoričnih podatkov v številske vrednosti.
  • KNNIračunalnik: Ta razred se uporablja za imputiranje manjkajočih vrednosti v naboru podatkov z uporabo pristopa k-najbližjih sosedov.
  • train_test_split: Ta funkcija se uporablja za razdelitev nabora podatkov v nabore za usposabljanje in testiranje.
  • StandardScaler: Ta razred se uporablja za standardizacijo funkcij z odstranitvijo srednje vrednosti in skaliranjem na varianco enote.
  • f1_score: Ta funkcija se uporablja za ovrednotenje učinkovitosti klasifikacijskega modela z uporabo ocene F1.
  • RandomForestRegressor: Ta razred se uporablja za usposabljanje modela naključne gozdne regresije.
  • cross_val_score: Ta funkcija se uporablja za izvajanje k-kratne navzkrižne validacije za oceno učinkovitosti modela

1. korak: uvozite knjižnice

Tukaj uvažamo vse potrebne knjižnice.

Python3




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'>)>

>

>

2. korak: uvozite nabor podatkov

Zdaj pa naložimo nabor podatkov v podatkovni okvir pande. Za boljše ravnanje s podatki in izkoriščanje priročnih funkcij za izvajanje kompleksnih nalog naenkrat.

trajanje java

Python3




df>=> pd.read_csv(>'Salaries.csv'>)> print>(df)>

>

>

Izhod:

 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>

Tukaj je.info()>ponuja hiter pregled strukture, tipov podatkov in uporabe pomnilnika nabora podatkov.

Python3




df.info()>

>

>

Izhod:

 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>

3. korak: Priprava podatkov

Tukaj bo koda iz nabora podatkov izvlekla dva podnabora podatkov in ju shranila v ločenih spremenljivkah.

  • Funkcije ekstrahiranja: Izvleče funkcije iz DataFrame in jih shrani v spremenljivko z imenomX>.
  • Ekstrahiranje ciljne spremenljivke: Izvleče ciljno spremenljivko iz DataFrame in jo shrani v spremenljivko z imenomy>.

Python3




# Assuming df is your DataFrame> X>=> df.iloc[:,>1>:>2>].values>#features> y>=> df.iloc[:,>2>].values># Target variable>

>

dolgo nanizati

>

4. korak: Regresorski model naključnega gozda

Koda obdeluje kategorične podatke tako, da jih numerično kodira, združuje obdelane podatke z numeričnimi podatki in usposablja model naključne gozdne regresije z uporabo pripravljenih podatkov.

Python3




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)>

>

>

5. korak: naredite napovedi in ocenite

Koda ovrednoti usposobljeni regresijski model naključnega gozda:

  • Out-of-bag (OOB) rezultat, ki ocenjuje uspešnost generalizacije modela.
  • Naredi napovedi z uporabo usposobljenega modela in jih shrani v matriko 'napovedi'.
  • Ocenjuje zmogljivost modela z uporabo meritev srednje kvadratne napake (MSE) in R-kvadrat (R2).

Rezultat Out of Bag v RandomForest

Bag score oz rezultat OOB je vrsta tehnike preverjanja veljavnosti, ki se v glavnem uporablja v algoritmih pakiranja v vreče za preverjanje algoritma pakiranja v vreče. Tu je majhen del validacijskih podatkov vzet iz glavnega toka podatkov, napovedi za posamezne validacijske podatke pa se izvedejo in primerjajo z drugimi rezultati.

Glavna prednost, ki jo ponuja rezultat OOB, je, da tukaj algoritem za pakiranje v vrečke ne vidi validacijskih podatkov in zato so rezultati na rezultatu OOB resnični rezultati, ki nakazujejo dejansko učinkovitost algoritma za pakiranje v vrečke.

Če želite dobiti rezultat OOB določenega algoritma Random Forest, morate nastaviti vrednost True za parameter OOB_Score v algoritmu.

Python3




združi javanski niz

# 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}'>)>

>

>

Izhod:

Out-of-Bag Score: 0.644879832593859 Mean Squared Error: 2647325000.0 R-squared: 0.9671801245316117>

6. korak: Vizualizacija

Zdaj pa vizualizirajmo rezultate, dobljene z uporabo modela regresije RandomForest na našem naboru podatkov o plačah.

  • Ustvari mrežo predvidenih točk, ki pokriva obseg vrednosti lastnosti.
  • Nariše realne podatkovne točke kot modre razpršene točke.
  • Izriše predvidene vrednosti za mrežo napovedi kot zeleno črto.
  • Zapletu doda oznake in naslov za boljše razumevanje.

Python3




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()>

>

>

Izhod:

Posnetek zaslona-2023-12-04-101235

7. korak: Vizualizacija posameznega odločitvenega drevesa iz modela naključnega gozda

Koda vizualizira eno od odločitvenih dreves iz usposobljenega modela Random Forest. Izriše izbrano drevo odločitev in prikaže postopek odločanja posameznega drevesa v nizu.

strani java strežnika

Python3




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()>

>

>

Izhod:

Posnetek zaslona-2023-12-05-111140 Uporaba regresije naključnega gozda

Regresija naključnega gozda ima širok nabor težav v resničnem svetu, vključno z:

  • Napovedovanje zveznih številskih vrednosti: Napovedovanje cen stanovanj, cen delnic ali življenjske vrednosti stranke.
  • Prepoznavanje dejavnikov tveganja: Odkrivanje dejavnikov tveganja za bolezni, finančne krize ali druge negativne dogodke.
  • Ravnanje z visokodimenzionalnimi podatki: Analiziranje nizov podatkov z velikim številom vhodnih funkcij.
  • Zajemanje zapletenih odnosov: Modeliranje kompleksnih odnosov med vhodnimi značilnostmi in ciljno spremenljivko.

Prednosti regresije naključnega gozda

  • Je enostaven za uporabo in manj občutljiv na podatke o usposabljanju v primerjavi z odločitvenim drevesom.
  • Je natančnejši od drevo odločitev algoritem.
  • Učinkovit je pri ravnanju z velikimi zbirkami podatkov, ki imajo veliko atributov.
  • Lahko obravnava manjkajoče podatke, odstopanja , in hrupne lastnosti.

Slabosti regresije naključnega gozda

  • Model je lahko tudi težko interpretirati.
  • Ta algoritem lahko zahteva nekaj domenskega strokovnega znanja za izbiro ustreznih parametrov, kot je število odločitvenih dreves, največja globina vsakega drevesa in število funkcij, ki jih je treba upoštevati pri vsaki delitvi.
  • Računalniško je drago, zlasti za velike podatkovne nize.
  • Lahko trpi zaradi prekomerno opremljanje če je model preveč zapleten ali je število odločitvenih dreves preveliko.

Zaključek

Naključna gozdna regresija je postala močno orodje za neprekinjene naloge napovedovanja s prednostmi pred tradicionalnimi odločitvenimi drevesi. Zaradi svoje zmožnosti obdelave visokodimenzionalnih podatkov, zajemanja zapletenih odnosov in zmanjševanja prekomernega opremljanja je priljubljena izbira za različne aplikacije. Pythonova knjižnica scikit-learn omogoča implementacijo, optimizacijo in vrednotenje modelov regresije naključnih gozdov, zaradi česar je dostopna in učinkovita tehnika za izvajalce strojnega učenja.

Pogosto zastavljena vprašanja (FAQ)

1. Kaj je Random Forest Regression Python?

Random Forest Regression Python je učna metoda ansambla, ki za napovedovanje uporablja več odločitvenih dreves. Je zmogljiv in vsestranski algoritem, ki je zelo primeren za naloge regresije.

2. Kakšna je uporaba regresije naključnega gozda?

Regresijo naključnega gozda je mogoče uporabiti za napovedovanje različnih ciljnih spremenljivk, vključno s cenami, prodajo, odlivom strank in še več. Je robusten algoritem, ki ga ni enostavno preveč opremiti, zaradi česar je dobra izbira za aplikacije v resničnem svetu.

3. Kakšna je razlika med naključnim gozdom in regresijo?

Random Forest je učna metoda ansambla, medtem ko je regresija vrsta nadzorovanega učnega algoritma. Random Forest za napovedovanje uporablja več odločitvenih dreves, medtem ko regresija za napovedovanje uporablja en sam model.

4. Kako prilagodite hiperparametre regresije naključnega gozda?

Obstaja več metod za prilagajanje hiperparametrov regresije naključnega gozda, kot so:

  • Iskanje po mreži: Iskanje po mreži vključuje sistematično preizkušanje različnih kombinacij vrednosti hiperparametrov, da bi našli najboljšo kombinacijo.
  • Naključno iskanje: Naključno iskanje naključno vzorči različne kombinacije vrednosti hiperparametrov, da najde dobro kombinacijo.

5. Zakaj je naključni gozd boljši od regresije?

Naključni gozd je na splošno natančnejši in robustnejši od regresije. Prav tako je manj nagnjen k prekomernemu opremljanju, kar pomeni, da je bolj verjetno, da bo dobro posploševal nove podatke.