Regresia forestieră aleatorie este o tehnică versatilă de învățare automată pentru prezicerea valorilor numerice. Combină previziunile arborilor de decizie multipli pentru a reduce supraadaptarea și pentru a îmbunătăți acuratețea. Python’s învățare automată bibliotecile facilitează implementarea și optimizarea acestei abordări.
Învățare prin ansamblu
Învățarea prin ansamblu este o tehnică de învățare automată care combină predicțiile din mai multe modele pentru a crea o predicție mai precisă și mai stabilă. Este o abordare care valorifică inteligența colectivă a mai multor modele pentru a îmbunătăți performanța generală a sistemului de învățare.
Tipuri de metode de ansamblu
Există diferite tipuri de metode de învățare prin ansamblu, printre care:
- Ambalare (agregare Bootstrap): Această metodă implică antrenarea mai multor modele pe subseturi aleatorii ale datelor de antrenament. Predicțiile de la modelele individuale sunt apoi combinate, de obicei prin mediere.
- Amplificare: Această metodă implică antrenarea unei secvențe de modele, în care fiecare model ulterior se concentrează pe erorile făcute de modelul anterior. Predicțiile sunt combinate folosind o schemă de vot ponderată.
- Stivuire: Această metodă implică utilizarea predicțiilor dintr-un set de modele ca caracteristici de intrare pentru un alt model. Predicția finală este făcută de modelul de al doilea nivel.
Pădurea aleatorie
O pădure aleatoare este o metodă de învățare prin ansamblu care combină predicțiile din arbori de decizie multipli pentru a produce o predicție mai precisă și mai stabilă. Este un tip de algoritm de învățare supravegheată care poate fi utilizat atât pentru sarcini de clasificare, cât și pentru regresie.
Fiecare arborele de decizie are o varianță mare, dar când le combinăm pe toate în paralel, atunci varianța rezultată este scăzută, deoarece fiecare arbore de decizie este perfect antrenat pe acele date de eșantion și, prin urmare, rezultatul nu depinde de un arbore de decizie, ci de mai mulți arbori de decizie. În cazul unei probleme de clasificare, rezultatul final este luat prin utilizarea clasificatorului cu vot majoritar. În cazul unei probleme de regresie, rezultatul final este media tuturor rezultatelor. Această parte se numește Agregare .

Funcționează modelul de regresie forestieră aleatorie
Ce este regresia aleatorie a pădurii?
Regresia forestieră aleatorie în învățarea automată este o set tehnic capabil să execute ambele regresie și clasificare sarcini cu utilizarea mai multor arbori de decizie și o tehnică numită Bootstrap și Aggregation, cunoscută în mod obișnuit ca ambalarea . Ideea de bază din spatele acestui lucru este de a combina mai mulți arbori de decizie în determinarea rezultatului final, mai degrabă decât să se bazeze pe arbori de decizie individuali.
Random Forest are mai mulți arbori de decizie ca modele de bază de învățare. Efectuăm aleatoriu eșantionarea rândurilor și eșantionarea caracteristicilor din setul de date formând seturi de date eșantion pentru fiecare model. Această parte se numește Bootstrap.
Trebuie să abordăm tehnica regresiei Random Forest ca oricare alta învățare automată tehnică.
- Proiectați o anumită întrebare sau date și obțineți sursa pentru a determina datele necesare.
- Asigurați-vă că datele sunt într-un format accesibil, altfel convertiți-le în formatul necesar.
- Specificați toate anomaliile vizibile și punctele de date lipsă care pot fi necesare pentru a obține datele necesare.
- Creați un model de învățare automată.
- Setați modelul de bază pe care doriți să-l obțineți
- Antrenați modelul de învățare automată a datelor.
- Oferiți o perspectivă asupra modelului cu date de testare
- Acum comparați valorile de performanță atât ale datelor de testare, cât și ale datelor prezise din model.
- Dacă nu vă satisface așteptările, puteți încerca să vă îmbunătățiți modelul în consecință sau să vă datați datele sau să utilizați o altă tehnică de modelare a datelor.
- În această etapă, interpretați datele pe care le-ați obținut și raportați în consecință.
Regresie aleatorie a pădurii în Python
Vom folosi o tehnică eșantion similară în exemplul de mai jos. Mai jos este un exemplu de implementare pas cu pas a regresiei forestiere aleatorii, pe setul de date care poate fi descărcat aici - https://bit.ly/417n3N5
Piton bibliotecile ne fac foarte ușor să gestionăm datele și să realizăm sarcini tipice și complexe cu o singură linie de cod.
- panda – Această bibliotecă ajută la încărcarea cadrului de date într-un format de matrice 2D și are mai multe funcții pentru a efectua sarcini de analiză dintr-o singură mișcare.
- Numpy – Matricele Numpy sunt foarte rapide și pot efectua calcule mari într-un timp foarte scurt.
- Matplotlib / Seaborn – Această bibliotecă este folosită pentru a desena vizualizări.
- Sklearn – Acest modul conține mai multe biblioteci care au funcții pre-implementate pentru a efectua sarcini de la preprocesarea datelor până la dezvoltarea și evaluarea modelului.
- RandomForestRegressor – Acesta este modelul de regresie care se bazează pe modelul Random Forest sau pe ansamblul de învățare pe care îl vom folosi în acest articol folosind biblioteca sklearn.
- sklearn: Această bibliotecă este biblioteca principală de învățare automată în Python. Oferă o gamă largă de instrumente pentru preprocesarea, modelarea, evaluarea și implementarea modelelor de învățare automată.
- LabelEncoder: Această clasă este folosită pentru a codifica datele categorice în valori numerice.
- KNNImputer: Această clasă este utilizată pentru a imputa valorile lipsă într-un set de date folosind o abordare k-nearest neighbors.
- train_test_split: Această funcție este utilizată pentru a împărți un set de date în seturi de antrenament și de testare.
- StandardScaler: Această clasă este utilizată pentru standardizarea caracteristicilor prin eliminarea mediei și scalarea la varianța unității.
- f1_score: Această funcție este utilizată pentru a evalua performanța unui model de clasificare folosind scorul F1.
- RandomForestRegressor: Această clasă este folosită pentru a antrena un model de regresie aleatoare a pădurii.
- cross_val_score: Această funcție este utilizată pentru a efectua validarea încrucișată în k-fold pentru a evalua performanța unui model
Pasul 1: importați biblioteci
Aici importăm toate bibliotecile necesare necesare.
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'> )> |
>
>
Pasul 2: importați setul de date
Acum să încărcăm setul de date în cadrul de date al panda. Pentru o mai bună manipulare a datelor și utilizarea funcțiilor la îndemână pentru a efectua sarcini complexe dintr-o singură mișcare.
supw
Python3
df> => pd.read_csv(> 'Salaries.csv'> )> print> (df)> |
>
>
Ieșire:
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>
Aici.info()>
Metoda oferă o privire de ansamblu rapidă asupra structurii, tipurilor de date și utilizării memoriei setului de date.
Python3
df.info()> |
>
>
Ieșire:
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>
Pasul 3: Pregătirea datelor
Aici codul va extrage două subseturi de date din setul de date și le va stoca în variabile separate.
- Caracteristici de extragere: Extrage caracteristicile din DataFrame și le stochează într-o variabilă numită
X>
. - Extragerea variabilei țintă: Extrage variabila țintă din DataFrame și o stochează într-o variabilă numită
y>
.
Python3
# Assuming df is your DataFrame> X> => df.iloc[:,> 1> :> 2> ].values> #features> y> => df.iloc[:,> 2> ].values> # Target variable> |
>
sortare matrice java
>
Pasul 4: Modelul regresor forestier aleatoriu
Codul procesează datele categorice prin codificarea lor numeric, combină datele procesate cu date numerice și antrenează un model de regresie aleatorie a pădurii folosind datele pregătite.
Python3
apurva padgaonkar
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)> |
>
>
Pasul 5: Faceți predicții și evaluare
Codul evaluează modelul de regresie aleatoare a pădurii antrenat:
- Scorul out-of-bag (OOB), care estimează performanța de generalizare a modelului.
- Face predicții folosind modelul antrenat și le stochează în matricea „predicții”.
- Evaluează performanța modelului folosind valorile Eroare medie pătratică (MSE) și R-pătrat (R2).
Scor din sac în RandomForest
Scorul sac sau Scorul OOB este tipul de tehnică de validare care este utilizată în principal în algoritmii de însacare pentru a valida algoritmul de însacare. Aici o mică parte a datelor de validare este preluată din curentul principal al datelor, iar predicțiile asupra datelor de validare particulare sunt făcute și comparate cu celelalte rezultate.
Principalul avantaj pe care îl oferă scorul OOB este că aici datele de validare nu sunt văzute de algoritmul de însacare și de aceea rezultatele la scorul OOB sunt rezultatele adevărate care au indicat performanța reală a algoritmului de însacare.
Pentru a obține scorul OOB al unui anumit algoritm Random Forest, trebuie să setați valoarea True pentru parametrul OOB_Score din algoritm.
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}'> )> |
>
>
Ieșire:
Out-of-Bag Score: 0.644879832593859 Mean Squared Error: 2647325000.0 R-squared: 0.9671801245316117>
Pasul 6: Vizualizare
Acum să vizualizăm rezultatele obținute prin utilizarea modelului de regresie RandomForest pe setul nostru de date privind salariile.
- Creează o grilă de puncte de predicție care acoperă intervalul de valori ale caracteristicilor.
- Trasează punctele de date reale ca puncte de împrăștiere albastre.
- Trasează valorile prezise pentru grila de predicție ca o linie verde.
- Adaugă etichete și un titlu la intriga pentru o mai bună înțelegere.
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()> |
>
>
Ieșire:
Pasul-7: Vizualizarea unui arbore de decizie unic din modelul forestier aleatoriu
Codul vizualizează unul dintre arborii de decizie din modelul de pădure aleatorie antrenat. Trasează arborele de decizie selectat, afișând procesul decizional al unui singur arbore din ansamblu.
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()> |
>
>
Ieșire:
sql ordine aleatorie
Aplicații ale regresiei forestiere aleatorii
Regresia pădurii aleatoare are o gamă largă de probleme din lumea reală, inclusiv:
- Prezicerea valorilor numerice continue: Prezicerea prețurilor caselor, prețurilor acțiunilor sau a valorii de viață a clientului.
- Identificarea factorilor de risc: Detectarea factorilor de risc pentru boli, crize financiare sau alte evenimente negative.
- Manipularea datelor cu dimensiuni mari: Analiza seturi de date cu un număr mare de caracteristici de intrare.
- Captarea relațiilor complexe: Modelarea relațiilor complexe dintre caracteristicile de intrare și variabila țintă.
Avantajele regresiei aleatorii forestiere
- Este ușor de utilizat și mai puțin sensibil la datele de antrenament în comparație cu arborele de decizie.
- Este mai precis decât arborele de decizie algoritm.
- Este eficient în manipularea seturilor mari de date care au multe atribute.
- Poate gestiona datele lipsă, valori aberante , și caracteristici zgomotoase.
Dezavantajele regresiei aleatorii forestiere
- Modelul poate fi, de asemenea, dificil de interpretat.
- Acest algoritm poate necesita o anumită expertiză în domeniu pentru a alege parametrii corespunzători, cum ar fi numărul de arbori de decizie, adâncimea maximă a fiecărui arbore și numărul de caracteristici de luat în considerare la fiecare împărțire.
- Este costisitor din punct de vedere computațional, în special pentru seturi mari de date.
- Poate suferi de supraadaptare dacă modelul este prea complex sau numărul de arbori de decizie este prea mare.
Concluzie
Regresia forestieră aleatorie a devenit un instrument puternic pentru sarcinile de predicție continuă, cu avantaje față de arborii de decizie tradiționali. Capacitatea sa de a gestiona date cu dimensiuni mari, de a capta relații complexe și de a reduce supraadaptarea a făcut din acesta o alegere populară pentru o varietate de aplicații. Biblioteca scikit-learn a lui Python permite implementarea, optimizarea și evaluarea modelelor de regresie ale pădurii aleatoare, făcându-l o tehnică accesibilă și eficientă pentru practicanții de învățare automată.
Întrebări frecvente (Întrebări frecvente)
1. Ce este Random Forest Regression Python?
Random Forest Regression Python este o metodă de învățare prin ansamblu care utilizează mai mulți arbori de decizie pentru a face predicții. Este un algoritm puternic și versatil, potrivit pentru sarcinile de regresie.
2. La ce folosește regresia forestieră aleatoare?
Regresia forestieră aleatorie poate fi utilizată pentru a prezice o varietate de variabile țintă, inclusiv prețuri, vânzări, rata de creștere a clienților și multe altele. Este un algoritm robust care nu este ușor de suprainstalat, ceea ce îl face o alegere bună pentru aplicațiile din lumea reală.
3. Care este diferența dintre pădure aleatoare și regresie?
Random Forest este o metodă de învățare prin ansamblu, în timp ce regresia este un tip de algoritm de învățare supravegheată. Random Forest folosește mai mulți arbori de decizie pentru a face predicții, în timp ce regresia folosește un singur model pentru a face predicții.
4. Cum reglați hiperparametrii regresiei aleatorii forestiere?
Există mai multe metode de reglare a hiperparametrilor de regresie aleatorie a pădurii, cum ar fi:
- Căutare în grilă: Căutarea în grilă implică încercarea sistematică a diferitelor combinații de valori ale hiperparametrului pentru a găsi cea mai bună combinație.
- Căutare aleatoare: Căutarea aleatorie eșantionează aleatoriu diferite combinații de valori ale hiperparametrului pentru a găsi o combinație bună.
5. De ce este pădurea aleatorie mai bună decât regresia?
Random Forest este, în general, mai precisă și mai robustă decât regresia. De asemenea, este mai puțin predispus la supraadaptare, ceea ce înseamnă că este mai probabil să se generalizeze bine la date noi.