logo

Regressione casuale della foresta in Python

La regressione casuale della foresta è una tecnica versatile di apprendimento automatico per prevedere valori numerici. Combina le previsioni di più alberi decisionali per ridurre l'overfitting e migliorare la precisione. Di Python apprendimento automatico le librerie semplificano l'implementazione e l'ottimizzazione di questo approccio.

Apprendimento d'insieme

L'apprendimento insieme è una tecnica di apprendimento automatico che combina le previsioni di più modelli per creare una previsione più accurata e stabile. È un approccio che sfrutta l’intelligenza collettiva di più modelli per migliorare le prestazioni complessive del sistema di apprendimento.



Tipi di metodi d'insieme

Esistono vari tipi di metodi di apprendimento d'insieme, tra cui:

  1. Bagging (aggregazione bootstrap): Questo metodo prevede l'addestramento di più modelli su sottoinsiemi casuali dei dati di addestramento. Le previsioni dei singoli modelli vengono quindi combinate, generalmente mediante la media.
  2. Potenziamento: Questo metodo prevede l'addestramento di una sequenza di modelli, in cui ciascun modello successivo si concentra sugli errori commessi dal modello precedente. I pronostici vengono combinati utilizzando uno schema di voto ponderato.
  3. Impilamento: Questo metodo prevede l'utilizzo delle previsioni di un insieme di modelli come funzionalità di input per un altro modello. La previsione finale è fatta dal modello di secondo livello.

Foresta casuale

Una foresta casuale è un metodo di apprendimento d'insieme che combina le previsioni di più alberi decisionali per produrre una previsione più accurata e stabile. È un tipo di algoritmo di apprendimento supervisionato che può essere utilizzato sia per attività di classificazione che di regressione.

Ogni albero decisionale ha una varianza elevata, ma quando li combiniamo tutti in parallelo la varianza risultante è bassa poiché ciascun albero decisionale viene perfettamente addestrato su quel particolare campione di dati, e quindi l'output non dipende da un albero decisionale ma da più alberi decisionali. Nel caso di un problema di classificazione, l'output finale viene ottenuto utilizzando il classificatore con voto a maggioranza. Nel caso di un problema di regressione, l’output finale è la media di tutti gli output. Questa parte si chiama Aggregazione .



Funzionamento del modello di regressione casuale della foresta

Funzionamento del modello di regressione casuale della foresta

Cos'è la regressione casuale della foresta?

La regressione casuale della foresta nell'apprendimento automatico è un insieme tecnico in grado di eseguire entrambi regressione e classificazione compiti con l'uso di alberi decisionali multipli e una tecnica chiamata Bootstrap and Aggregation, comunemente nota come insaccamento . L’idea di base alla base di ciò è quella di combinare più alberi decisionali per determinare il risultato finale piuttosto che fare affidamento su alberi decisionali individuali.

Random Forest ha più alberi decisionali come modelli di apprendimento di base. Eseguiamo in modo casuale il campionamento delle righe e delle funzionalità dal set di dati formando set di dati di esempio per ogni modello. Questa parte si chiama Bootstrap.



Dobbiamo affrontare la tecnica di regressione Random Forest come qualsiasi altra apprendimento automatico tecnica.

  • Progetta una domanda o dei dati specifici e ottieni la fonte per determinare i dati richiesti.
  • Assicurati che i dati siano in un formato accessibile altrimenti convertili nel formato richiesto.
  • Specificare tutte le anomalie evidenti e i punti dati mancanti che potrebbero essere necessari per ottenere i dati richiesti.
  • Creare un modello di machine learning.
  • Imposta il modello di base che desideri ottenere
  • Addestrare il modello di machine learning dei dati.
  • Fornire informazioni dettagliate sul modello con i dati di test
  • Ora confronta le metriche prestazionali dei dati di test e dei dati previsti dal modello.
  • Se non soddisfa le tue aspettative, puoi provare a migliorare il tuo modello di conseguenza o a datare i tuoi dati o a utilizzare un'altra tecnica di modellazione dei dati.
  • In questa fase, interpreti i dati che hai acquisito e riferisci di conseguenza.

Regressione casuale della foresta in Python

Utilizzeremo una tecnica di esempio simile nell'esempio seguente. Di seguito è riportato un esempio di implementazione passo passo della regressione casuale della foresta, sul set di dati che può essere scaricato qui: https://bit.ly/417n3N5

Pitone le librerie ci rendono molto semplice gestire i dati ed eseguire attività tipiche e complesse con una singola riga di codice.

  • Panda – Questa libreria aiuta a caricare il frame di dati in un formato array 2D e ha più funzioni per eseguire attività di analisi in una volta sola.
  • Insensibile – Gli array Numpy sono molto veloci e possono eseguire grandi calcoli in un tempo molto breve.
  • Matplotlib / Nato dal mare – Questa libreria viene utilizzata per disegnare visualizzazioni.
  • Sklearn: questo modulo contiene più librerie con funzioni pre-implementate per eseguire attività dalla preelaborazione dei dati allo sviluppo e alla valutazione del modello.
  • RandomForestRegressor – Questo è il modello di regressione basato sul modello Random Forest o sull'apprendimento d'insieme che utilizzeremo in questo articolo utilizzando la libreria sklearn.
  • imparare: Questa libreria è la libreria principale di machine learning in Python. Fornisce un'ampia gamma di strumenti per la preelaborazione, la modellazione, la valutazione e la distribuzione di modelli di machine learning.
  • Codificatore etichetta: Questa classe viene utilizzata per codificare i dati categorici in valori numerici.
  • Computer KNN: Questa classe viene utilizzata per imputare i valori mancanti in un set di dati utilizzando un approccio k-vicini più vicini.
  • train_test_split: Questa funzione viene utilizzata per suddividere un set di dati in set di training e test.
  • Scaler standard: Questa classe viene utilizzata per standardizzare le caratteristiche rimuovendo la media e ridimensionando la varianza unitaria.
  • f1_punteggio: Questa funzione viene utilizzata per valutare le prestazioni di un modello di classificazione utilizzando il punteggio F1.
  • RandomForestRegressor: Questa classe viene utilizzata per addestrare un modello di regressione della foresta casuale.
  • cross_val_score: Questa funzione viene utilizzata per eseguire una convalida incrociata k-fold per valutare le prestazioni di un modello

Passaggio 1: importare librerie

Qui stiamo importando tutte le librerie necessarie richieste.

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

>

>

Passaggio 2: importa il set di dati

Ora carichiamo il set di dati nel data frame del panda. Per una migliore gestione dei dati e per sfruttare le pratiche funzioni per eseguire attività complesse in una volta sola.

uguaglianza delle stringhe in Java

Python3




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

>

>

Produzione:

 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>

Ecco il.info()>Il metodo fornisce una rapida panoramica della struttura, dei tipi di dati e dell'utilizzo della memoria del set di dati.

Python3




df.info()>

>

>

Produzione:

 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>

Passaggio 3: Preparazione dei dati

Qui il codice estrarrà due sottoinsiemi di dati dal set di dati e li memorizzerà in variabili separate.

  • Funzionalità di estrazione: Estrae le funzionalità dal DataFrame e le memorizza in una variabile denominataX>.
  • Estrazione della variabile di destinazione: Estrae la variabile di destinazione dal DataFrame e la memorizza in una variabile denominatay>.

Python3




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

>

ordinamento dell'array Java

>

Passaggio 4: modello di regressore della foresta casuale

Il codice elabora i dati categorici codificandoli numericamente, combina i dati elaborati con dati numerici e addestra un modello di regressione casuale della foresta utilizzando i dati preparati.

Python3


serpente pitone contro anaconda



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

>

>

Passaggio 5: fare previsioni e valutazioni

Il codice valuta il modello di regressione casuale della foresta addestrato:

  • punteggio out-of-bag (OOB), che stima le prestazioni di generalizzazione del modello.
  • Effettua previsioni utilizzando il modello addestrato e le memorizza nell'array 'previsioni'.
  • Valuta le prestazioni del modello utilizzando le metriche Errore quadratico medio (MSE) e R quadrato (R2).

Punteggio fuori borsa in RandomForest

Punteggio della borsa o Punteggio OOB è il tipo di tecnica di convalida utilizzata principalmente negli algoritmi di bagging per convalidare l'algoritmo di bagging. Qui una piccola parte dei dati di validazione viene presa dal mainstream dei dati e le previsioni sui particolari dati di validazione vengono fatte e confrontate con gli altri risultati.

Il vantaggio principale offerto dal punteggio OOB è che qui i dati di validazione non vengono visti dall'algoritmo di bagging ed è per questo che i risultati sul punteggio OOB sono i risultati reali che indicano le prestazioni effettive dell'algoritmo di bagging.

Per ottenere il punteggio OOB del particolare algoritmo Random Forest, è necessario impostare il valore True per il parametro OOB_Score nell'algoritmo.

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

>

>

Produzione:

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

Passaggio 6: visualizzazione

Ora visualizziamo i risultati ottenuti utilizzando il modello di regressione RandomForest sul nostro set di dati sugli stipendi.

  • Crea una griglia di punti di previsione che copre l'intervallo dei valori delle caratteristiche.
  • Traccia i punti dati reali come punti scatter blu.
  • Traccia i valori previsti per la griglia di previsione come una linea verde.
  • Aggiunge etichette e un titolo alla trama per una migliore comprensione.

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

>

>

Produzione:

Schermata-2023-12-04-101235

Passaggio 7: Visualizzazione di un singolo albero decisionale dal modello della foresta casuale

Il codice visualizza uno degli alberi decisionali del modello Random Forest addestrato. Traccia l'albero decisionale selezionato, visualizzando il processo decisionale di un singolo albero all'interno dell'insieme.

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

>

>

Produzione:

Schermata-2023-12-05-111140 Applicazioni della regressione casuale della foresta

La regressione della foresta casuale presenta un'ampia gamma di problemi del mondo reale, tra cui:

quanti tasti hanno le tastiere?
  • Previsione di valori numerici continui: Prevedere i prezzi delle case, dei titoli azionari o il valore della vita del cliente.
  • Individuazione dei fattori di rischio: Rilevamento di fattori di rischio per malattie, crisi finanziarie o altri eventi negativi.
  • Gestione di dati ad alta dimensione: Analisi di set di dati con un gran numero di funzionalità di input.
  • Catturare relazioni complesse: Modellazione di relazioni complesse tra caratteristiche di input e variabile di destinazione.

Vantaggi della regressione casuale della foresta

  • È facile da usare e meno sensibile ai dati di addestramento rispetto all'albero decisionale.
  • È più accurato del albero decisionale algoritmo.
  • È efficace nella gestione di set di dati di grandi dimensioni con molti attributi.
  • Può gestire i dati mancanti, valori anomali e funzioni rumorose.

Svantaggi della regressione casuale della foresta

  • Il modello può anche essere difficile da interpretare.
  • Questo algoritmo potrebbe richiedere alcune competenze nel settore per scegliere i parametri appropriati come il numero di alberi decisionali, la profondità massima di ciascun albero e il numero di funzionalità da considerare ad ogni suddivisione.
  • È computazionalmente costoso, soprattutto per set di dati di grandi dimensioni.
  • Potrebbe soffrire di adattamento eccessivo se il modello è troppo complesso o il numero di alberi decisionali è troppo elevato.

Conclusione

La regressione casuale della foresta è diventata uno strumento potente per attività di previsione continua, con vantaggi rispetto agli alberi decisionali tradizionali. La sua capacità di gestire dati ad alta dimensione, acquisire relazioni complesse e ridurre l'overfitting lo ha reso una scelta popolare per una varietà di applicazioni. La libreria scikit-learn di Python consente l'implementazione, l'ottimizzazione e la valutazione dei modelli di regressione casuale della foresta, rendendola una tecnica accessibile ed efficace per i professionisti dell'apprendimento automatico.

Domande frequenti (FAQ)

1. Cos'è Python di regressione casuale della foresta?

Random Forest Regression Python è un metodo di apprendimento d'insieme che utilizza più alberi decisionali per fare previsioni. È un algoritmo potente e versatile che ben si adatta alle attività di regressione.

2. A cosa serve la regressione casuale della foresta?

La regressione casuale della foresta può essere utilizzata per prevedere una varietà di variabili target, tra cui prezzi, vendite, abbandono dei clienti e altro ancora. È un algoritmo robusto che non si adatta facilmente, rendendolo una buona scelta per le applicazioni del mondo reale.

3. Qual è la differenza tra foresta casuale e regressione?

Random Forest è un metodo di apprendimento d'insieme, mentre la regressione è un tipo di algoritmo di apprendimento supervisionato. Random Forest utilizza più alberi decisionali per effettuare previsioni, mentre la regressione utilizza un singolo modello per effettuare previsioni.

4. Come si ottimizzano gli iperparametri della regressione casuale della foresta?

Esistono diversi metodi per ottimizzare gli iperparametri della regressione casuale della foresta, ad esempio:

  • Ricerca in griglia: La ricerca a griglia implica provare sistematicamente diverse combinazioni di valori di iperparametri per trovare la combinazione migliore.
  • Ricerca casuale: La ricerca casuale campiona casualmente diverse combinazioni di valori di iperparametri per trovare una buona combinazione.

5. Perché la foresta casuale è migliore della regressione?

La foresta casuale è generalmente più accurata e robusta della regressione. È anche meno incline al sovradattamento, il che significa che è più probabile che si generalizzi bene ai nuovi dati.