logo

Tilfældig skovregression i Python

Random Forest Regression er en alsidig maskinlæringsteknik til at forudsige numeriske værdier. Den kombinerer forudsigelserne fra flere beslutningstræer for at reducere overfitting og forbedre nøjagtigheden. Python's maskinelæring biblioteker gør det nemt at implementere og optimere denne tilgang.

Ensemble læring

Ensemble learning er en maskinlæringsteknik, der kombinerer forudsigelserne fra flere modeller for at skabe en mere præcis og stabil forudsigelse. Det er en tilgang, der udnytter den kollektive intelligens fra flere modeller til at forbedre den overordnede ydeevne af læringssystemet.

Typer af ensemblemetoder

Der er forskellige typer af ensemblelæringsmetoder, herunder:



  1. Bagning (Bootstrap Aggregating): Denne metode involverer træning af flere modeller på tilfældige delmængder af træningsdata. Forudsigelserne fra de enkelte modeller kombineres derefter, typisk ved gennemsnit.
  2. Boost: Denne metode indebærer træning af en sekvens af modeller, hvor hver efterfølgende model fokuserer på fejlene fra den tidligere model. Forudsigelserne kombineres ved hjælp af et vægtet stemmesystem.
  3. Stabling: Denne metode involverer at bruge forudsigelserne fra et sæt modeller som inputfunktioner for en anden model. Den endelige forudsigelse er lavet af modellen på andet niveau.

Tilfældig Skov

En tilfældig skov er en ensemblelæringsmetode, der kombinerer forudsigelserne fra flere beslutningstræer for at producere en mere præcis og stabil forudsigelse. Det er en type overvåget læringsalgoritme, der kan bruges til både klassifikations- og regressionsopgaver.

Hver beslutningstræ har høj varians, men når vi kombinerer dem alle parallelt, er den resulterende varians lav, da hvert beslutningstræ bliver perfekt trænet på de pågældende prøvedata, og outputtet afhænger derfor ikke af et beslutningstræ, men af ​​flere beslutningstræer. I tilfælde af et klassifikationsproblem tages det endelige output ved at bruge majoritetsklassificeringen. I tilfælde af et regressionsproblem er det endelige output gennemsnittet af alle output. Denne del kaldes Aggregation .

Tilfældig skovregressionsmodel arbejder

Tilfældig skovregressionsmodel, der fungerer

Hvad er tilfældig skovregression?

Random Forest Regression i maskinlæring er en teknisk sæt i stand til at udføre begge dele regression og klassifikation opgaver med brug af flere beslutningstræer og en teknik kaldet Bootstrap and Aggregation, almindeligvis kendt som sække . Den grundlæggende idé bag dette er at kombinere flere beslutningstræer til at bestemme det endelige output i stedet for at stole på individuelle beslutningstræer.

Random Forest har flere beslutningstræer som basislæringsmodeller. Vi udfører tilfældigt rækkeprøvetagning og funktionsprøvetagning fra datasættet, der danner prøvedatasæt for hver model. Denne del kaldes Bootstrap.

Vi skal nærme os Random Forest-regressionsteknikken som enhver anden maskinelæring teknik.

  • Design et specifikt spørgsmål eller data og få kilden til at bestemme de nødvendige data.
  • Sørg for, at dataene er i et tilgængeligt format, ellers konverter dem til det nødvendige format.
  • Angiv alle mærkbare anomalier og manglende datapunkter, der kan være nødvendige for at opnå de nødvendige data.
  • Opret en maskinlæringsmodel.
  • Indstil den basismodel, du ønsker at opnå
  • Træn datamaskinlæringsmodellen.
  • Giv et indblik i modellen med testdata
  • Sammenlign nu præstationsmålingerne for både testdata og de forudsagte data fra modellen.
  • Hvis det ikke lever op til dine forventninger, kan du prøve at forbedre din model i overensstemmelse hermed eller datere dine data eller bruge en anden datamodelleringsteknik.
  • På dette stadium fortolker du de data, du har fået, og rapporterer derefter.

Tilfældig skovregression i Python

Vi vil bruge en lignende prøveteknik i nedenstående eksempel. Nedenfor er et trin-for-trin eksempel på implementering af Random Forest Regression, på datasættet, der kan downloades her - https://bit.ly/417n3N5

Python biblioteker gør det meget nemt for os at håndtere dataene og udføre typiske og komplekse opgaver med en enkelt linje kode.

  • Pandaer – Dette bibliotek hjælper med at indlæse datarammen i et 2D-array-format og har flere funktioner til at udføre analyseopgaver på én gang.
  • Numpy – Numpy-arrays er meget hurtige og kan udføre store beregninger på meget kort tid.
  • Matplotlib / Søfødt – Dette bibliotek bruges til at tegne visualiseringer.
  • Sklearn – Dette modul indeholder flere biblioteker med præ-implementerede funktioner til at udføre opgaver fra dataforbehandling til modeludvikling og evaluering.
  • RandomForestRegressor – Dette er regressionsmodellen, der er baseret på Random Forest-modellen eller ensemblelæringen, som vi vil bruge i denne artikel ved hjælp af sklearn-biblioteket.
  • lære: Dette bibliotek er det centrale maskinlæringsbibliotek i Python. Det giver en bred vifte af værktøjer til forbehandling, modellering, evaluering og implementering af maskinlæringsmodeller.
  • LabelEncoder: Denne klasse bruges til at indkode kategoriske data til numeriske værdier.
  • KNNimputer: Denne klasse bruges til at imputere manglende værdier i et datasæt ved hjælp af en k-nearest neighbors-tilgang.
  • train_test_split: Denne funktion bruges til at opdele et datasæt i trænings- og testsæt.
  • StandardScaler: Denne klasse bruges til at standardisere funktioner ved at fjerne middelværdien og skalere til enhedsvarians.
  • f1_score: Denne funktion bruges til at evaluere ydeevnen af ​​en klassifikationsmodel ved hjælp af F1-score.
  • RandomForestRegressor: Denne klasse bruges til at træne en tilfældig skovregressionsmodel.
  • cross_val_score: Denne funktion bruges til at udføre k-fold krydsvalidering for at evaluere en models ydeevne

Trin-1: Importer biblioteker

Her importerer vi alle de nødvendige biblioteker.

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

>

>

Trin-2: Importer datasæt

Lad os nu indlæse datasættet i pandaens dataramme. For bedre datahåndtering og udnyttelse af de praktiske funktioner til at udføre komplekse opgaver på én gang.

bibliotek omdøb linux

Python3




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

>

>

Produktion:

 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>

Her er.info()>metode giver et hurtigt overblik over datasættets struktur, datatyper og hukommelsesbrug.

Python3




df.info()>

>

>

Produktion:

 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>

Trin-3: Dataforberedelse

Her udtrækker koden to delmængder af data fra datasættet og gemmer dem i separate variabler.

  • Udtræksfunktioner: Den udtrækker funktionerne fra DataFrame og gemmer dem i en variabel med navnX>.
  • Udtræk af målvariabel: Den udtrækker målvariablen fra DataFrame og gemmer den i en variabel med navny>.

Python3




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

>

installering af brænder

>

Trin-4: Random Forest Regressor Model

Koden behandler kategoriske data ved at kode dem numerisk, kombinerer de behandlede data med numeriske data og træner en Random Forest Regression-model ved hjælp af de forberedte data.

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

>

>

Trin-5: Lav forudsigelser og evaluering

Koden evaluerer den trænede Random Forest Regression-model:

  • out-of-bag (OOB) score, som estimerer modellens generaliseringsydelse.
  • Laver forudsigelser ved hjælp af den trænede model og gemmer dem i 'forudsigelser'-arrayet.
  • Evaluerer modellens ydeevne ved hjælp af Mean Squared Error (MSE) og R-squared (R2) metrics.

Out of Bag Score i RandomForest

8 til 1 multiplekser

Taske score eller OOB-score er den type valideringsteknik, der hovedsageligt bruges i sækkealgoritmer til at validere sækkealgoritmen. Her tages en lille del af valideringsdataene fra dataens mainstream, og forudsigelserne på de pågældende valideringsdata laves og sammenlignes med de øvrige resultater.

Den største fordel, som OOB-scoren tilbyder, er, at her ses valideringsdataene ikke af sækkealgoritmen, og det er derfor, resultaterne på OOB-scoren er de sande resultater, der indikerede den faktiske ydeevne af sækkealgoritmen.

For at få OOB-score for den særlige Random Forest-algoritme, skal man indstille værdien True for parameteren OOB_Score i algoritmen.

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

>

>

Produktion:

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

Trin-6: Visualisering

Lad os nu visualisere resultaterne opnået ved at bruge RandomForest-regressionsmodellen på vores løndatasæt.

  • Opretter et gitter af forudsigelsespunkter, der dækker området for funktionsværdierne.
  • Plot de rigtige datapunkter som blå spredningspunkter.
  • Plot de forudsagte værdier for forudsigelsesgitteret som en grøn linje.
  • Tilføjer etiketter og en titel til plottet for bedre forståelse.

Python3




hvor mange frugter er der
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()>

>

>

Produktion:

Skærmbillede-2023-12-04-101235

Trin-7: Visualisering af et enkelt beslutningstræ fra Random Forest Model

Koden visualiserer et af beslutningstræerne fra den trænede Random Forest-model. Plotter det valgte beslutningstræ og viser beslutningsprocessen for et enkelt træ i ensemblet.

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

>

>

Produktion:

Skærmbillede-2023-12-05-111140 Anvendelser af tilfældig skovregression

Den tilfældige skov-regression har en bred vifte af problemer i den virkelige verden, herunder:

  • Forudsigelse af kontinuerlige numeriske værdier: Forudsigelse af huspriser, aktiekurser eller kundens levetidsværdi.
  • Identifikation af risikofaktorer: Opdagelse af risikofaktorer for sygdomme, økonomiske kriser eller andre negative begivenheder.
  • Håndtering af højdimensionelle data: Analyse af datasæt med et stort antal inputfunktioner.
  • Indfangning af komplekse relationer: Modellering af komplekse sammenhænge mellem inputfunktioner og målvariablen.

Fordele ved Random Forest Regression

  • Den er nem at bruge og mindre følsom over for træningsdata sammenlignet med beslutningstræet.
  • Det er mere præcist end beslutningstræ algoritme.
  • Det er effektivt til at håndtere store datasæt, der har mange attributter.
  • Den kan håndtere manglende data, afvigere , og støjende funktioner.

Ulemper ved Random Forest Regression

  • Modellen kan også være svær at fortolke.
  • Denne algoritme kan kræve en vis domæneekspertise for at vælge de passende parametre som antallet af beslutningstræer, den maksimale dybde af hvert træ og antallet af funktioner, der skal overvejes ved hver opdeling.
  • Det er beregningsmæssigt dyrt, især for store datasæt.
  • Det kan lide af overfitting hvis modellen er for kompleks eller antallet af beslutningstræer er for højt.

Konklusion

Random Forest Regression er blevet et kraftfuldt værktøj til kontinuerlige forudsigelsesopgaver med fordele i forhold til traditionelle beslutningstræer. Dens evne til at håndtere højdimensionelle data, fange komplekse relationer og reducere overfitting har gjort det til et populært valg til en række forskellige applikationer. Pythons scikit-learn-bibliotek muliggør implementering, optimering og evaluering af Random Forest Regression-modeller, hvilket gør det til en tilgængelig og effektiv teknik for maskinlæringsudøvere.

Ofte stillede spørgsmål (FAQ'er)

1. Hvad er Random Forest Regression Python?

Random Forest Regression Python er en ensemblelæringsmetode, der bruger flere beslutningstræer til at lave forudsigelser. Det er en kraftfuld og alsidig algoritme, der er velegnet til regressionsopgaver.

2. Hvad er brugen af ​​tilfældig skovregression?

Random Forest Regression kan bruges til at forudsige en række målvariabler, herunder priser, salg, kundeafgang og mere. Det er en robust algoritme, der ikke let overmonteres, hvilket gør den til et godt valg til applikationer i den virkelige verden.

3. Hvad er forskellen mellem tilfældig skov og regression?

Random Forest er en ensemblelæringsmetode, mens regression er en type overvåget læringsalgoritme. Random Forest bruger flere beslutningstræer til at lave forudsigelser, mens regression bruger en enkelt model til at lave forudsigelser.

4. Hvordan tuner du hyperparametrene for Random Forest Regression?

Der er flere metoder til at justere hyperparametrene for Random Forest Regression, såsom:

  • Gittersøgning: Gridsøgning involverer systematisk at prøve forskellige kombinationer af hyperparameterværdier for at finde den bedste kombination.
  • Tilfældig søgning: Tilfældig søgning prøver tilfældigt forskellige kombinationer af hyperparameterværdier for at finde en god kombination.

5. Hvorfor er tilfældig skov bedre end regression?

Random Forest er generelt mere præcis og robust end regression. Det er også mindre tilbøjeligt til overfitting, hvilket betyder, at det er mere tilbøjeligt til at generalisere godt til nye data.