logo

Náhodná lesní regrese v Pythonu

Random Forest Regression je všestranná technika strojového učení pro predikci číselných hodnot. Kombinuje předpovědi více rozhodovacích stromů, aby se snížilo přemontování a zlepšila přesnost. Python strojové učení knihovny usnadňují implementaci a optimalizaci tohoto přístupu.

Ensemble Learning

Ensemble learning je technika strojového učení, která kombinuje předpovědi z více modelů a vytváří tak přesnější a stabilnější předpověď. Je to přístup, který využívá kolektivní inteligenci více modelů ke zlepšení celkového výkonu výukového systému.



Typy Ensemble metod

Existují různé typy metod souborového učení, včetně:

  1. Pytlování (Bootstrap Agregating): Tato metoda zahrnuje trénování více modelů na náhodných podmnožinách trénovacích dat. Předpovědi z jednotlivých modelů jsou pak kombinovány, typicky průměrováním.
  2. Posílení: Tato metoda zahrnuje trénování posloupnosti modelů, kde se každý následující model zaměřuje na chyby způsobené předchozím modelem. Předpovědi jsou kombinovány pomocí schématu váženého hlasování.
  3. Stohování: Tato metoda zahrnuje použití předpovědí z jedné sady modelů jako vstupních vlastností pro jiný model. Konečnou předpověď provádí model druhé úrovně.

Náhodný les

Náhodný les je souborová metoda učení, která kombinuje předpovědi z více rozhodovacích stromů, aby vytvořila přesnější a stabilnější předpověď. Je to typ algoritmu učení pod dohledem, který lze použít pro klasifikační i regresní úlohy.

Každý rozhodovací strom má velký rozptyl, ale když je všechny zkombinujeme paralelně, pak je výsledný rozptyl nízký, protože každý rozhodovací strom je dokonale trénován na konkrétních vzorových datech, a proto výstup nezávisí na jednom rozhodovacím stromu, ale na více rozhodovacích stromech. V případě klasifikačního problému se konečný výstup získá pomocí klasifikátoru většinového hlasování. V případě regresního problému je konečný výstup průměrem všech výstupů. Tato část se nazývá Agregace .



Náhodný model regrese lesa funguje

Náhodný model regrese lesa funguje

Co je náhodná lesní regrese?

Náhodná lesní regrese ve strojovém učení je technická sada schopný vykonávat obojí regrese a klasifikace úlohy s využitím více rozhodovacích stromů a techniky zvané Bootstrap and Aggregation, běžně známé jako pytlování . Základní myšlenkou je kombinovat více rozhodovacích stromů při určování konečného výstupu spíše než spoléhat na jednotlivé rozhodovací stromy.

Random Forest má několik rozhodovacích stromů jako základní modely učení. Náhodně provádíme vzorkování řádků a vzorkování prvků z datové sady tvořící vzorové datové sady pro každý model. Tato část se nazývá Bootstrap.



K technice regrese Random Forest musíme přistupovat jako ke každé jiné strojové učení technika.

  • Navrhněte konkrétní otázku nebo data a získejte zdroj pro určení požadovaných dat.
  • Ujistěte se, že jsou data v přístupném formátu, jinak je převeďte do požadovaného formátu.
  • Zadejte všechny viditelné anomálie a chybějící datové body, které mohou být vyžadovány k dosažení požadovaných dat.
  • Vytvořte model strojového učení.
  • Nastavte základní model, kterého chcete dosáhnout
  • Trénujte model strojového učení dat.
  • Poskytněte náhled do modelu pomocí testovacích dat
  • Nyní porovnejte metriky výkonu testovacích dat a předpokládaných dat z modelu.
  • Pokud nesplňuje vaše očekávání, můžete zkusit svůj model odpovídajícím způsobem vylepšit nebo datovat data nebo použít jinou techniku ​​modelování dat.
  • V této fázi interpretujete získaná data a podle toho podáváte zprávy.

Náhodná lesní regrese v Pythonu

V níže uvedeném příkladu použijeme podobnou ukázkovou techniku. Níže je krok za krokem ukázková implementace náhodné lesní regrese na datové sadě, kterou lze stáhnout zde - https://bit.ly/417n3N5

Krajta knihovny nám velmi usnadňují manipulaci s daty a provádění typických a složitých úkolů pomocí jediného řádku kódu.

  • pandy – Tato knihovna pomáhá načíst datový rámec ve formátu 2D pole a má několik funkcí pro provádění analytických úloh najednou.
  • Numpy – Numpy pole jsou velmi rychlá a mohou provádět velké výpočty ve velmi krátkém čase.
  • Matplotlib / Seaborn – Tato knihovna se používá ke kreslení vizualizací.
  • Sklearn – Tento modul obsahuje několik knihoven s předimplementovanými funkcemi pro provádění úkolů od předzpracování dat až po vývoj a vyhodnocení modelu.
  • RandomForestRegressor – Toto je regresní model, který je založen na modelu Random Forest nebo na souborovém učení, které budeme používat v tomto článku pomocí knihovny sklearn.
  • sklearn: Tato knihovna je základní knihovnou strojového učení v Pythonu. Poskytuje širokou škálu nástrojů pro předběžné zpracování, modelování, vyhodnocování a nasazování modelů strojového učení.
  • LabelEncoder: Tato třída se používá ke kódování kategorických dat do číselných hodnot.
  • KNNImputer: Tato třída se používá k imputaci chybějících hodnot v datové sadě pomocí přístupu k-nearest sousedů.
  • train_test_split: Tato funkce se používá k rozdělení datové sady na trénovací a testovací sady.
  • StandardScaler: Tato třída se používá ke standardizaci funkcí odstraněním průměru a přizpůsobením jednotkovému rozptylu.
  • f1_score: Tato funkce se používá k hodnocení výkonnosti klasifikačního modelu pomocí skóre F1.
  • RandomForestRegressor: Tato třída se používá k trénování modelu náhodné regrese lesa.
  • cross_val_score: Tato funkce se používá k provedení k-násobné křížové validace k vyhodnocení výkonu modelu

Krok 1: Import knihoven

Zde importujeme všechny potřebné knihovny.

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: Import datové sady

Nyní načteme datovou sadu do datového rámce pandy. Pro lepší manipulaci s daty a využití užitečných funkcí k provádění složitých úkolů najednou.

jarní sv

Python3




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

>

>

Výstup:

 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>

Zde je.info()>poskytuje rychlý přehled o struktuře, datových typech a využití paměti datové sady.

Python3




df.info()>

>

>

Výstup:

 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: Příprava dat

Zde kód extrahuje dvě podmnožiny dat z datové sady a uloží je do samostatných proměnných.

  • Vlastnosti extrakce: Extrahuje funkce z DataFrame a ukládá je do proměnné s názvemX>.
  • Extrahování cílové proměnné: Extrahuje cílovou proměnnou z DataFrame a uloží ji do proměnné s názvemy>.

Python3




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

>

bubble sort java

>

Krok 4: Model náhodného lesního regresoru

Kód zpracovává kategorická data jejich číselným kódováním, kombinuje zpracovaná data s číselnými daty a pomocí připravených dat trénuje model náhodné lesní regrese.

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

>

parametr ve skriptu shellu
>

Krok 5: Provádějte předpovědi a hodnocení

Kód vyhodnocuje natrénovaný model náhodné lesní regrese:

  • out-of-bag (OOB) skóre, které odhaduje výkonnost modelu zobecnění.
  • Vytváří předpovědi pomocí natrénovaného modelu a ukládá je do pole „předpovědi“.
  • Vyhodnocuje výkon modelu pomocí metriky Mean Squared Error (MSE) a R-squared (R2).

Out of Bag Score v RandomForest

Taška skóre popř OOB skóre je typ ověřovací techniky, která se používá hlavně v algoritmech pytlování k ověření algoritmu pytlování. Zde je malá část validačních dat převzata z hlavního proudu dat a jsou provedeny předpovědi pro konkrétní validační data a porovnány s ostatními výsledky.

Hlavní výhodou, kterou skóre OOB nabízí, je to, že zde ověřovací data nevidí algoritmus pytlování, a proto jsou výsledky skóre OOB skutečnými výsledky, které indikovaly skutečný výkon algoritmu pytlování.

Chcete-li získat skóre OOB konkrétního algoritmu Random Forest, je třeba nastavit hodnotu True pro parametr OOB_Score v algoritmu.

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

>

>

Výstup:

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

Krok 6: Vizualizace

Nyní si pojďme vizualizovat výsledky získané pomocí modelu RandomForest Regression na našem souboru dat o platech.

  • Vytvoří mřížku bodů predikce pokrývající rozsah hodnot prvků.
  • Vykreslí skutečné datové body jako modré bodové body.
  • Vykreslí předpokládané hodnoty pro předpovědní mřížku jako zelenou čáru.
  • Přidává popisky a název ke spiknutí pro lepší pochopení.

Python3


python je číselný



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

>

>

Výstup:

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

Krok 7: Vizualizace jediného rozhodovacího stromu z modelu Random Forest

Kód vizualizuje jeden z rozhodovacích stromů z natrénovaného modelu Random Forest. Vykreslí vybraný rozhodovací strom a zobrazí rozhodovací proces jednoho stromu v rámci souboru.

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ýstup:

Snímek obrazovky-2023-12-05-111140 Aplikace náhodné lesní regrese

Náhodná regrese lesa má širokou škálu reálných problémů, včetně:

  • Předpovídání spojitých číselných hodnot: Předpovídání cen nemovitostí, cen akcií nebo celoživotní hodnoty zákazníka.
  • Identifikace rizikových faktorů: Detekce rizikových faktorů nemocí, finančních krizí nebo jiných negativních událostí.
  • Manipulace s vysokorozměrnými daty: Analýza datových sad s velkým počtem vstupních funkcí.
  • Zachycení složitých vztahů: Modelování komplexních vztahů mezi vstupními prvky a cílovou proměnnou.

Výhody náhodné lesní regrese

  • Je snadno použitelný a méně citlivý na trénovací data ve srovnání s rozhodovacím stromem.
  • Je přesnější než rozhodovací strom algoritmus.
  • Je efektivní při manipulaci s velkými datovými sadami, které mají mnoho atributů.
  • Dokáže zpracovat chybějící data, odlehlé hodnoty a hlučné funkce.

Nevýhody náhodné lesní regrese

  • Model může být také obtížně interpretovatelný.
  • Tento algoritmus může vyžadovat určitou odbornost domény k výběru vhodných parametrů, jako je počet rozhodovacích stromů, maximální hloubka každého stromu a počet funkcí, které je třeba vzít v úvahu při každém rozdělení.
  • Je to výpočetně nákladné, zvláště u velkých datových sad.
  • Může trpět přepastování pokud je model příliš složitý nebo počet rozhodovacích stromů příliš vysoký.

Závěr

Náhodná lesní regrese se stala mocným nástrojem pro nepřetržité predikční úlohy s výhodami oproti tradičním rozhodovacím stromům. Jeho schopnost zpracovávat vysokorozměrná data, zachycovat složité vztahy a omezovat nadměrné přizpůsobení z něj činí oblíbenou volbu pro různé aplikace. Knihovna scikit-learn v Pythonu umožňuje implementaci, optimalizaci a vyhodnocování modelů náhodné lesní regrese, což z ní činí dostupnou a efektivní techniku ​​pro praktiky strojového učení.

Často kladené otázky (FAQ)

1. Co je Random Forest Regression Python?

Random Forest Regression Python je souborová metoda učení, která k vytváření předpovědí používá více rozhodovacích stromů. Je to výkonný a všestranný algoritmus, který se dobře hodí pro regresní úlohy.

2. K čemu slouží náhodná lesní regrese?

Náhodnou lesní regresi lze použít k predikci různých cílových proměnných, včetně cen, prodeje, odchodu zákazníků a dalších. Je to robustní algoritmus, který není snadné přemontovat, takže je dobrou volbou pro aplikace v reálném světě.

3. Jaký je rozdíl mezi náhodným lesem a regresí?

Random Forest je souborová metoda učení, zatímco regrese je typ algoritmu učení pod dohledem. Random Forest používá k vytváření předpovědí více rozhodovacích stromů, zatímco regrese používá k vytváření předpovědí jediný model.

4. Jak vyladíte hyperparametry náhodné lesní regrese?

Existuje několik metod pro ladění hyperparametrů náhodné lesní regrese, jako například:

  • Vyhledávání v mřížce: Prohledávání mřížky zahrnuje systematické zkoušení různých kombinací hodnot hyperparametrů k nalezení nejlepší kombinace.
  • Náhodné hledání: Náhodné vyhledávání náhodně vybírá různé kombinace hodnot hyperparametrů, aby našlo dobrou kombinaci.

5. Proč je náhodný les lepší než regrese?

Random Forest je obecně přesnější a robustnější než regrese. Je také méně náchylný k nadměrnému přizpůsobení, což znamená, že s větší pravděpodobností dobře zobecní na nová data.