logo

Atsitiktinė miško regresija Python

Atsitiktinė miško regresija yra universali mašininio mokymosi technika, skirta nuspėti skaitines reikšmes. Jis sujungia kelių sprendimų medžių prognozes, kad sumažintų permontavimą ir pagerintų tikslumą. Python's mašininis mokymasis bibliotekos leidžia lengvai įgyvendinti ir optimizuoti šį metodą.

Ansamblio mokymasis

Ansamblio mokymasis yra mašininio mokymosi metodas, kuris sujungia kelių modelių prognozes, kad būtų sukurtas tikslesnis ir stabilesnis numatymas. Tai metodas, kuriuo pasitelkiamas kelių modelių kolektyvinis intelektas, siekiant pagerinti bendrą mokymosi sistemos našumą.

Ansamblinių metodų tipai

Yra įvairių tipų ansamblio mokymosi metodai, įskaitant:



  1. Pakavimas į maišus (įkrovos kaupimas): Šis metodas apima kelių modelių mokymą atsitiktiniuose mokymo duomenų pogrupiuose. Tada atskirų modelių prognozės sujungiamos, paprastai apskaičiuojant vidurkį.
  2. Stiprinimas: Šis metodas apima modelių sekos mokymą, kai kiekvienas paskesnis modelis sutelkia dėmesį į ankstesnio modelio padarytas klaidas. Prognozės derinamos naudojant svertinę balsavimo schemą.
  3. Krovimas: Šis metodas apima vieno modelių rinkinio prognozių naudojimą kaip kito modelio įvesties ypatybes. Galutinę prognozę atlieka antrojo lygio modelis.

Atsitiktinis miškas

Atsitiktinis miškas yra mokymosi kompleksinis metodas, kuris sujungia kelių sprendimų medžių prognozes, kad būtų galima gauti tikslesnę ir stabilesnę prognozę. Tai yra prižiūrimo mokymosi algoritmo tipas, kuris gali būti naudojamas tiek klasifikavimo, tiek regresijos užduotims atlikti.

kas sprendimų medis turi didelę dispersiją, bet kai sujungiame juos visus lygiagrečiai, gaunama dispersija yra maža, nes kiekvienas sprendimų medis puikiai apmokomas pagal konkrečius imties duomenis, todėl išvestis priklauso ne nuo vieno sprendimų medžio, o nuo kelių sprendimų medžių. Klasifikavimo problemos atveju galutinis rezultatas gaunamas naudojant daugumos balsavimo klasifikatorių. Regresijos problemos atveju galutinis rezultatas yra visų išėjimų vidurkis. Ši dalis vadinama Sujungimas .

Atsitiktinės miško regresijos modelio veikimas

Atsitiktinės miško regresijos modelio veikimas

Kas yra atsitiktinė miško regresija?

Atsitiktinė miško regresija mašininiame mokyme yra techninis komplektas galintis atlikti abu regresija ir klasifikacija užduotys naudojant kelis sprendimų medžius ir techniką, vadinamą Bootstrap ir Aggregation, paprastai žinomą kaip pakavimas į maišus . Pagrindinė to idėja yra sujungti kelis sprendimų medžius nustatant galutinį rezultatą, o ne pasikliauti atskirais sprendimų medžiais.

„Random Forest“ turi kelis sprendimų medžius kaip pagrindinius mokymosi modelius. Atsitiktinai atliekame eilučių atranką ir funkcijų atranką iš duomenų rinkinio, sudarydami pavyzdinius duomenų rinkinius kiekvienam modeliui. Ši dalis vadinama Bootstrap.

Atsitiktinės miško regresijos techniką turime taikyti kaip bet kurią kitą mašininis mokymasis technika.

  • Sukurkite konkretų klausimą ar duomenis ir gaukite šaltinį, kad nustatytumėte reikiamus duomenis.
  • Įsitikinkite, kad duomenys yra prieinamo formato, kitaip konvertuokite juos į reikiamą formatą.
  • Nurodykite visas pastebimas anomalijas ir trūkstamus duomenų taškus, kurių gali prireikti norint gauti reikiamus duomenis.
  • Sukurkite mašininio mokymosi modelį.
  • Nustatykite pradinį modelį, kurį norite pasiekti
  • Išmokykite duomenų mašinos mokymosi modelį.
  • Pateikite modelio įžvalgą su bandymų duomenimis
  • Dabar palyginkite bandymo duomenų ir prognozuojamų modelio duomenų našumo metriką.
  • Jei jis nepatenkina jūsų lūkesčių, galite pabandyti atitinkamai patobulinti savo modelį arba nustatyti duomenų datą arba naudoti kitą duomenų modeliavimo metodą.
  • Šiame etape jūs interpretuojate gautus duomenis ir atitinkamai pranešate.

Atsitiktinė miško regresija Python

Toliau pateiktame pavyzdyje naudosime panašią pavyzdinę techniką. Žemiau pateikiamas žingsnis po žingsnio atsitiktinės miško regresijos įgyvendinimo pavyzdys duomenų rinkinyje, kurį galima atsisiųsti čia - https://bit.ly/417n3N5

Python bibliotekos leidžia mums labai lengvai tvarkyti duomenis ir atlikti įprastas bei sudėtingas užduotis naudojant vieną kodo eilutę.

  • Pandos – Ši biblioteka padeda įkelti duomenų rėmelį 2D masyvo formatu ir turi keletą funkcijų, leidžiančių vienu metu atlikti analizės užduotis.
  • Numigęs – Numpy masyvai yra labai greiti ir gali atlikti didelius skaičiavimus per labai trumpą laiką.
  • Matplotlib / Seaborn – Ši biblioteka naudojama vizualizacijoms piešti.
  • Sklearn – šiame modulyje yra kelios bibliotekos, turinčios iš anksto įdiegtas funkcijas, skirtas atlikti užduotis nuo išankstinio duomenų apdorojimo iki modelio kūrimo ir vertinimo.
  • RandomForestRegressor – Tai regresijos modelis, pagrįstas Random Forest modeliu arba mokymosi ansambliu, kurį naudosime šiame straipsnyje naudodami sklearn biblioteką.
  • sklearn: Ši biblioteka yra pagrindinė Python mašininio mokymosi biblioteka. Jame yra daugybė įrankių, skirtų išankstiniam apdorojimui, modeliavimui, vertinimui ir mašininio mokymosi modelių diegimui.
  • LabelEncoder: Ši klasė naudojama kategoriškiems duomenims koduoti į skaitines reikšmes.
  • KNNIMuter: Ši klasė naudojama trūkstamoms duomenų rinkinio reikšmėms priskirti naudojant k-arčiausių kaimynų metodą.
  • train_test_split: Ši funkcija naudojama duomenų rinkiniui padalyti į mokymo ir testavimo rinkinius.
  • Standartinis skaleris: Ši klasė naudojama ypatybėms standartizuoti, pašalinant vidurkį ir keičiant mastelį iki vieneto dispersijos.
  • f1_score: Ši funkcija naudojama klasifikavimo modelio veikimui įvertinti naudojant F1 balą.
  • RandomForestRegressor: Ši klasė naudojama atsitiktiniam miško regresijos modeliui treniruoti.
  • cross_val_score: Ši funkcija naudojama atlikti k-kartų kryžminį patvirtinimą, siekiant įvertinti modelio našumą

1 veiksmas: importuokite bibliotekas

Čia mes importuojame visas reikalingas bibliotekas.

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 veiksmas: importuokite duomenų rinkinį

Dabar įkelkime duomenų rinkinį į pandos duomenų rėmelį. Geresniam duomenų tvarkymui ir patogių funkcijų panaudojimui sudėtingoms užduotims atlikti vienu kartu.

darbas kompiuteriu

Python3




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

>

>

Išvestis:

 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>

Čia.info()>metodas suteikia greitą duomenų rinkinio struktūros, duomenų tipų ir atminties naudojimo apžvalgą.

Python3




df.info()>

>

>

Išvestis:

 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 veiksmas: Duomenų paruošimas

Čia kodas išskirs du duomenų pogrupius iš duomenų rinkinio ir išsaugos juos atskiruose kintamuosiuose.

  • Ištraukimo ypatybės: Jis ištraukia funkcijas iš „DataFrame“ ir išsaugo jas kintamajame pavadinimuX>.
  • Tikslinio kintamojo ištraukimas: Jis ištraukia tikslinį kintamąjį iš „DataFrame“ ir išsaugo jį kintamajame, pavadintamey>.

Python3




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

>

viršutinis indeksas iliustratoriuje

>

4 veiksmas: atsitiktinis miško regresoriaus modelis

Kodas apdoroja kategorinius duomenis, užkoduodamas juos skaitiniu būdu, apdorojamus duomenis sujungia su skaitiniais duomenimis ir, naudodamas paruoštus duomenis, parengia Atsitiktinės miško regresijos modelį.

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 veiksmas: numatykite ir įvertinkite

Kodas įvertina parengtą atsitiktinės miško regresijos modelį:

  • out-of-bag (OOB) balas, kuris įvertina modelio apibendrinimo našumą.
  • Numato prognozes naudodamas išmokytą modelį ir išsaugo jas „numatymo“ masyve.
  • Įvertina modelio našumą naudodama vidutinės kvadratinės klaidos (MSE) ir R kvadrato (R2) metriką.

„Out of Bag“ rezultatas „RandomForest“.

Maišelio balas arba OOB balas yra patvirtinimo technikos tipas, kuris daugiausia naudojamas maišymo į maišus algoritmuose, siekiant patvirtinti pakavimo į maišus algoritmą. Čia nedidelė patvirtinimo duomenų dalis paimama iš pagrindinių duomenų srauto, o tam tikrų patvirtinimo duomenų prognozės atliekamos ir palyginamos su kitais rezultatais.

Pagrindinis privalumas, kurį siūlo OOB balas, yra tas, kad čia patvirtinimo duomenų nemato maišymo į maišus algoritmas, todėl OOB balo rezultatai yra tikri rezultatai, rodantys tikrąjį maišymo algoritmo veikimą.

Norint gauti konkretaus atsitiktinio miško algoritmo OOB balą, algoritme reikia nustatyti OOB_Score parametro reikšmę True.

Python3




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

>

amiša patel

>

Išvestis:

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

6 veiksmas: vizualizacija

Dabar įsivaizduokime rezultatus, gautus naudojant RandomForest regresijos modelį mūsų atlyginimų duomenų rinkinyje.

  • Sukuria numatymo taškų tinklelį, apimantį ypatybių reikšmių diapazoną.
  • Tikruosius duomenų taškus nubraižo kaip mėlynos sklaidos taškus.
  • Numatomas prognozių tinklelio vertes nubraižo kaip žalią liniją.
  • Siužetui pridedamos etiketės ir pavadinimas, kad būtų geriau suprasti.

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

>

>

Išvestis:

Ekrano kopija-2023-12-04-101235

7 veiksmas: Vieno sprendimo medžio vizualizavimas iš atsitiktinio miško modelio

Kodas vizualizuoja vieną iš sprendimų medžių iš parengto Random Forest modelio. Nubraižo pasirinktą sprendimų medį, pateikdamas vieno medžio sprendimų priėmimo procesą ansamblyje.

Python3




pakeisti katalogo pavadinimą linux

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

>

>

Išvestis:

Ekrano kopija-2023-12-05-111140 Atsitiktinės miško regresijos taikymai

Atsitiktinė miško regresija turi daugybę realaus pasaulio problemų, įskaitant:

  • Ištisinių skaitinių reikšmių numatymas: Numatyti būsto kainas, akcijų kainas arba kliento viso laikotarpio vertę.
  • Rizikos veiksnių nustatymas: Ligų, finansinių krizių ar kitų neigiamų įvykių rizikos veiksnių nustatymas.
  • Didelių matmenų duomenų tvarkymas: Duomenų rinkinių su daugybe įvesties funkcijų analizė.
  • Sudėtingų santykių fiksavimas: Sudėtingų ryšių tarp įvesties savybių ir tikslinio kintamojo modeliavimas.

Atsitiktinės miško regresijos pranašumai

  • Jį lengva naudoti ir jis mažiau jautrus treniruočių duomenims, palyginti su sprendimų medžiu.
  • Jis yra tikslesnis nei sprendimų medis algoritmas.
  • Tai veiksminga tvarkant didelius duomenų rinkinius, turinčius daug atributų.
  • Jis gali tvarkyti trūkstamus duomenis, nuokrypiai , ir triukšmingos funkcijos.

Atsitiktinės miško regresijos trūkumai

  • Modelį taip pat gali būti sunku interpretuoti.
  • Šiam algoritmui gali prireikti tam tikros srities patirties, kad būtų galima pasirinkti tinkamus parametrus, pvz., sprendimų medžių skaičių, maksimalų kiekvieno medžio gylį ir funkcijų, į kurias reikia atsižvelgti kiekviename padalijimo metu, skaičių.
  • Tai brangu, ypač dideliems duomenų rinkiniams.
  • Tai gali nukentėti nuo perdėtas jei modelis per sudėtingas arba sprendimų medžių skaičius per didelis.

Išvada

Atsitiktinė miško regresija tapo galingu nuolatinių numatymo užduočių įrankiu, turinčiu pranašumų prieš tradicinius sprendimų medžius. Dėl galimybės tvarkyti didelio masto duomenis, užfiksuoti sudėtingus ryšius ir sumažinti perteklinį pritaikymą jis tapo populiarus pasirinkimas įvairioms programoms. Python scikit-learn biblioteka leidžia įdiegti, optimizuoti ir įvertinti atsitiktinės miško regresijos modelius, todėl tai yra prieinama ir efektyvi technika mašininio mokymosi praktikams.

Dažnai užduodami klausimai (DUK)

1. Kas yra atsitiktinis miško regresijos Python?

Atsitiktinės miško regresijos Python yra ansamblinis mokymosi metodas, kuris prognozėms atlikti naudoja kelis sprendimų medžius. Tai galingas ir universalus algoritmas, puikiai tinkantis regresijos užduotims.

2. Kam naudinga atsitiktinė miško regresija?

Atsitiktinė miško regresija gali būti naudojama norint numatyti įvairius tikslinius kintamuosius, įskaitant kainas, pardavimus, klientų atsitraukimą ir kt. Tai tvirtas algoritmas, kuris nėra lengvai permontuojamas, todėl jis yra geras pasirinkimas realaus pasaulio programoms.

3. Kuo skiriasi atsitiktinis miškas nuo regresijos?

Atsitiktinis miškas yra ansamblinis mokymosi metodas, o regresija yra prižiūrimo mokymosi algoritmo tipas. „Random Forest“ prognozėms atlikti naudoja kelis sprendimų medžius, o regresijai prognozuoti naudojamas vienas modelis.

4. Kaip sureguliuojate atsitiktinės miško regresijos hiperparametrus?

Yra keli atsitiktinės miško regresijos hiperparametrų derinimo būdai, pavyzdžiui:

  • Tinklelio paieška: Tinklelio paieška apima sistemingą skirtingų hiperparametrų reikšmių derinių bandymą, siekiant rasti geriausią derinį.
  • Atsitiktinė paieška: Atsitiktinė paieška atsitiktinai atrenka skirtingus hiperparametrų reikšmių derinius, kad rastų gerą derinį.

5. Kodėl atsitiktinis miškas yra geresnis už regresiją?

Atsitiktinis miškas paprastai yra tikslesnis ir patikimesnis nei regresija. Be to, jis yra mažiau linkęs per daug priderinti, o tai reiškia, kad labiau tikėtina, kad jis gerai apibendrins naujus duomenis.