logo

Náhodná lesná regresia v Pythone

Náhodná lesná regresia je všestranná technika strojového učenia na predpovedanie číselných hodnôt. Kombinuje predpovede viacerých rozhodovacích stromov, aby sa znížilo nadmerné prispôsobenie a zlepšila presnosť. Python's strojové učenie knižnice uľahčujú implementáciu a optimalizáciu tohto prístupu.

Ensemble Learning

Ensemble learning je technika strojového učenia, ktorá kombinuje predpovede z viacerých modelov a vytvára tak presnejšiu a stabilnejšiu predpoveď. Je to prístup, ktorý využíva kolektívnu inteligenciu viacerých modelov na zlepšenie celkového výkonu vzdelávacieho systému.



Typy Ensemble metód

Existujú rôzne typy metód súborového učenia, vrátane:

  1. Baging (Bootstrap Aggregating): Táto metóda zahŕňa trénovanie viacerých modelov na náhodných podmnožinách trénovacích údajov. Predpovede z jednotlivých modelov sa potom kombinujú, zvyčajne spriemerovaním.
  2. Posilnenie: Táto metóda zahŕňa trénovanie postupnosti modelov, kde sa každý nasledujúci model zameriava na chyby spôsobené predchádzajúcim modelom. Predpovede sa kombinujú pomocou schémy váženého hlasovania.
  3. Stohovanie: Táto metóda zahŕňa použitie predpovedí z jednej sady modelov ako vstupných funkcií pre iný model. Konečnú predpoveď robí model druhej úrovne.

Náhodný les

Náhodný les je metóda učenia súboru, ktorá kombinuje predpovede z viacerých rozhodovacích stromov, aby sa vytvorila presnejšia a stabilnejšia predpoveď. Je to typ algoritmu učenia pod dohľadom, ktorý možno použiť pre klasifikačné aj regresné úlohy.

Každý rozhodovací strom má vysoký rozptyl, ale keď ich všetky skombinujeme paralelne, potom je výsledný rozptyl nízky, pretože každý rozhodovací strom je dokonale vyškolený na konkrétne vzorové údaje, a preto výstup nezávisí od jedného rozhodovacieho stromu, ale od viacerých rozhodovacích stromov. V prípade klasifikačného problému sa konečný výstup získa pomocou klasifikátora väčšinového hlasovania. V prípade regresného problému je konečný výstup priemerom všetkých výstupov. Táto časť je tzv Agregácia .



Práca s náhodným modelom lesnej regresie

Práca s náhodným modelom lesnej regresie

Čo je náhodná lesná regresia?

Náhodná lesná regresia v strojovom učení je technický súbor schopný vykonávať oboje regresia a klasifikácia úlohy s využitím viacerých rozhodovacích stromov a techniky nazývanej Bootstrap and Aggregation, bežne známej ako vrecovanie . Základnou myšlienkou je kombinovať viacero rozhodovacích stromov pri určovaní konečného výstupu, a nie spoliehať sa na jednotlivé rozhodovacie stromy.

Random Forest má viacero rozhodovacích stromov ako základné modely učenia. Náhodne vykonávame vzorkovanie riadkov a vzorkovanie funkcií zo súboru údajov, ktoré tvoria vzorové súbory údajov pre každý model. Táto časť sa nazýva Bootstrap.



K technike regresie Random Forest musíme pristupovať ako ku ktorejkoľvek inej strojové učenie technika.

  • Navrhnite konkrétnu otázku alebo údaje a získajte zdroj na určenie požadovaných údajov.
  • Uistite sa, že údaje sú v prístupnom formáte, inak ich preveďte do požadovaného formátu.
  • Zadajte všetky viditeľné anomálie a chýbajúce údajové body, ktoré môžu byť potrebné na dosiahnutie požadovaných údajov.
  • Vytvorte model strojového učenia.
  • Nastavte základný model, ktorý chcete dosiahnuť
  • Trénujte model strojového učenia údajov.
  • Poskytnite náhľad do modelu pomocou testovacích údajov
  • Teraz porovnajte metriky výkonu testovacích údajov a predpokladaných údajov z modelu.
  • Ak nespĺňa vaše očakávania, môžete sa pokúsiť zodpovedajúcim spôsobom vylepšiť svoj model alebo datovať údaje, prípadne použiť inú techniku ​​modelovania údajov.
  • V tejto fáze interpretujete získané údaje a podľa toho podávate správy.

Náhodná lesná regresia v Pythone

V nižšie uvedenom príklade použijeme podobnú vzorovú techniku. Nižšie je uvedená vzorová implementácia náhodnej lesnej regresie krok za krokom na súbore údajov, ktorý si môžete stiahnuť tu - https://bit.ly/417n3N5

Python knižnice nám veľmi uľahčujú manipuláciu s údajmi a vykonávanie typických a zložitých úloh pomocou jediného riadku kódu.

  • pandy – Táto knižnica pomáha načítať dátový rámec vo formáte 2D poľa a má viacero funkcií na vykonávanie úloh analýzy naraz.
  • Numpy – Numpy polia sú veľmi rýchle a dokážu vykonávať veľké výpočty vo veľmi krátkom čase.
  • Matplotlib / Seaborn – Táto knižnica sa používa na kreslenie vizualizácií.
  • Sklearn – Tento modul obsahuje viacero knižníc s predimplementovanými funkciami na vykonávanie úloh od predspracovania údajov až po vývoj a vyhodnotenie modelu.
  • RandomForestRegressor – Toto je regresný model, ktorý je založený na modeli Random Forest alebo súborovom učení, ktoré budeme používať v tomto článku pomocou knižnice sklearn.
  • sklearn: Táto knižnica je hlavnou knižnicou strojového učenia v Pythone. Poskytuje širokú škálu nástrojov na predspracovanie, modelovanie, vyhodnocovanie a nasadzovanie modelov strojového učenia.
  • LabelEncoder: Táto trieda sa používa na kódovanie kategorických údajov do číselných hodnôt.
  • KNNImputer: Táto trieda sa používa na imputáciu chýbajúcich hodnôt v množine údajov pomocou prístupu k-najbližších susedov.
  • train_test_split: Táto funkcia sa používa na rozdelenie súboru údajov na tréningové a testovacie súbory.
  • StandardScaler: Táto trieda sa používa na štandardizáciu funkcií odstránením priemeru a škálovaním na jednotkový rozptyl.
  • f1_score: Táto funkcia sa používa na vyhodnotenie výkonnosti klasifikačného modelu pomocou skóre F1.
  • RandomForestRegressor: Táto trieda sa používa na trénovanie modelu náhodnej regresie lesa.
  • cross_val_score: Táto funkcia sa používa na vykonanie k-násobnej krížovej validácie na vyhodnotenie výkonnosti modelu

Krok 1: Importujte knižnice

Tu importujeme všetky potrebné kniž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'>)>

>

>

Krok 2: Importujte množinu údajov

Teraz načítajme súbor údajov do dátového rámca pandy. Pre lepšiu manipuláciu s údajmi a využitie praktických funkcií na vykonávanie zložitých úloh naraz.

rám tkinter

Python3




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

>

>

Výkon:

 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>

Tu je.info()>poskytuje rýchly prehľad o štruktúre, typoch údajov a využití pamäte množiny údajov.

Python3




df.info()>

>

>

Výkon:

 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>

Krok 3: Príprava dát

Tu kód extrahuje dve podmnožiny údajov z množiny údajov a uloží ich do samostatných premenných.

  • Vlastnosti extrakcie: Extrahuje funkcie z DataFrame a ukladá ich do premennej s názvomX>.
  • Extrahovanie cieľovej premennej: Extrahuje cieľovú premennú z DataFrame a uloží ju do premennej s názvomy>.

Python3




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

>

binárny strom inorder traversal

>

Krok 4: Model náhodného lesného regresora

Kód spracováva kategorické údaje ich číselným kódovaním, kombinuje spracované údaje s číselnými údajmi a pomocou pripravených údajov trénuje model náhodnej lesnej regresie.

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

>

>

Krok 5: Robte predpovede a hodnotenie

Kód vyhodnocuje natrénovaný model náhodnej lesnej regresie:

  • skóre out-of-bag (OOB), ktoré odhaduje výkonnosť zovšeobecnenia modelu.
  • Vytvára predpovede pomocou natrénovaného modelu a ukladá ich do poľa „predpovede“.
  • Hodnotí výkonnosť modelu pomocou metrík strednej štvorcovej chyby (MSE) a R2 (R2).

Skóre mimo vreca v RandomForest

Taška skóre resp Skóre OOB je typ validačnej techniky, ktorá sa používa hlavne v algoritmoch vrecovania na overenie algoritmu vrecovania. Tu je malá časť validačných údajov prevzatá z hlavného prúdu údajov a urobia sa predpovede pre konkrétne validačné údaje a porovnajú sa s ostatnými výsledkami.

Hlavnou výhodou, ktorú skóre OOB ponúka, je to, že validačné údaje tu nevidí algoritmus vrecovania, a preto sú výsledky skóre OOB skutočnými výsledkami, ktoré indikujú skutočný výkon algoritmu vrecovania.

Ak chcete získať skóre OOB konkrétneho algoritmu Random Forest, je potrebné nastaviť hodnotu True pre parameter OOB_Score v algoritme.

Python3

apache




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

>

>

Výkon:

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

Krok 6: Vizualizácia

Teraz si predstavme výsledky získané pomocou modelu RandomForest Regression na našom súbore údajov o platoch.

  • Vytvorí mriežku bodov predikcie pokrývajúcej rozsah hodnôt vlastností.
  • Vykreslí skutočné dátové body ako modré bodové body.
  • Vykreslí predpovedané hodnoty pre predikčnú mriežku ako zelenú čiaru.
  • Pridáva k zápletke štítky a názov pre lepšie pochopenie.

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

>

java bool na reťazec
>

Výkon:

Snímka obrazovky-2023-12-04-101235

Krok 7: Vizualizácia stromu s jedným rozhodnutím z modelu náhodného lesa

Kód vizualizuje jeden z rozhodovacích stromov z natrénovaného modelu Random Forest. Vykreslí vybraný rozhodovací strom a zobrazí rozhodovací proces jedného stromu v rámci súboru.

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

>

>

Výkon:

Snímka obrazovky-2023-12-05-111140 Aplikácie náhodnej lesnej regresie

Náhodná lesná regresia má širokú škálu problémov v reálnom svete vrátane:

  • Predpovedanie súvislých číselných hodnôt: Predpovedanie cien nehnuteľností, cien akcií alebo celoživotnej hodnoty zákazníka.
  • Identifikácia rizikových faktorov: Zisťovanie rizikových faktorov chorôb, finančných kríz alebo iných negatívnych udalostí.
  • Spracovanie vysokorozmerných údajov: Analýza množín údajov s veľkým počtom vstupných funkcií.
  • Zachytenie zložitých vzťahov: Modelovanie komplexných vzťahov medzi vstupnými vlastnosťami a cieľovou premennou.

Výhody náhodnej lesnej regresie

  • Je ľahko použiteľný a menej citlivý na tréningové dáta v porovnaní s rozhodovacím stromom.
  • Je presnejší ako rozhodovací strom algoritmu.
  • Je efektívny pri manipulácii s veľkými množinami údajov, ktoré majú veľa atribútov.
  • Dokáže spracovať chýbajúce údaje, odľahlé hodnoty a hlučné funkcie.

Nevýhody náhodnej lesnej regresie

  • Model môže byť tiež ťažko interpretovateľný.
  • Tento algoritmus môže vyžadovať určitú odbornosť domény na výber vhodných parametrov, ako je počet rozhodovacích stromov, maximálna hĺbka každého stromu a počet funkcií, ktoré je potrebné zvážiť pri každom rozdelení.
  • Je to výpočtovo nákladné, najmä pre veľké súbory údajov.
  • Môže trpieť nadmerná montáž ak je model príliš zložitý alebo počet rozhodovacích stromov príliš vysoký.

Záver

Náhodná lesná regresia sa stala silným nástrojom pre úlohy nepretržitej predikcie s výhodami oproti tradičným rozhodovacím stromom. Jeho schopnosť spracovávať vysokorozmerné dáta, zachytávať zložité vzťahy a redukovať nadmernú montáž z neho robí obľúbenú voľbu pre rôzne aplikácie. Knižnica scikit-learn v Pythone umožňuje implementáciu, optimalizáciu a hodnotenie modelov náhodnej lesnej regresie, čím sa stáva dostupnou a efektívnou technikou pre odborníkov strojového učenia.

Často kladené otázky (FAQ)

1. Čo je to Random Forest Regression Python?

Random Forest Regression Python je súborová metóda učenia, ktorá na vytváranie predpovedí používa viacero rozhodovacích stromov. Je to výkonný a všestranný algoritmus, ktorý je vhodný pre regresné úlohy.

2. Aké je využitie náhodnej lesnej regresie?

Náhodnú lesnú regresiu možno použiť na predpovedanie rôznych cieľových premenných vrátane cien, predaja, odchodu zákazníkov a ďalších. Je to robustný algoritmus, ktorý sa nedá ľahko premontovať, vďaka čomu je dobrou voľbou pre aplikácie v reálnom svete.

3. Aký je rozdiel medzi náhodným lesom a regresiou?

Random Forest je súborová metóda učenia, zatiaľ čo regresia je typ algoritmu učenia pod dohľadom. Random Forest používa na vytváranie predpovedí viacero rozhodovacích stromov, zatiaľ čo regresia používa na vytváranie predpovedí jeden model.

4. Ako ladíte hyperparametre náhodnej lesnej regresie?

Existuje niekoľko metód na ladenie hyperparametrov náhodnej lesnej regresie, ako napríklad:

  • Vyhľadávanie v mriežke: Vyhľadávanie v mriežke zahŕňa systematické skúšanie rôznych kombinácií hodnôt hyperparametrov s cieľom nájsť najlepšiu kombináciu.
  • Náhodné vyhľadávanie: Náhodné vyhľadávanie náhodne odoberie vzorky rôznych kombinácií hodnôt hyperparametrov, aby sa našla dobrá kombinácia.

5. Prečo je náhodný les lepší ako regresia?

Náhodný les je vo všeobecnosti presnejší a robustnejší ako regresia. Je tiež menej náchylný na nadmernú montáž, čo znamená, že je pravdepodobnejšie, že dobre zovšeobecní nové údaje.