Programma
La Random Forest Regression è uno dei modi più affidabili per modellare dati tabellari non lineari con un setup minimo. Ti permette di ottenere rapidamente un modello funzionante, anche quando i dati sono rumorosi o le relazioni non sono chiaramente definite.
Questa guida ti accompagna nell’intero workflow della Random Forest Regression. Capirai come funziona l’algoritmo e lo implementerai in Python. Parleremo anche di tecniche di valutazione e di fine-tuning per migliorarne le prestazioni.
Cos’è la Random Forest Regression?
La random forest regression è una tecnica ensemble che costruisce più alberi decisionali randomizzati e combina le loro uscite per produrre una previsione continua. Invece di fare affidamento su un singolo modello, aggrega le previsioni di molti alberi, tipicamente facendo la media delle loro uscite.

Perché più alberi? Un singolo albero decisionale tende a overfittare. Cattura il rumore insieme ai segnali, soprattutto quando si lavora con dati disordinati del mondo reale.
Bootstrap aggregating e casualità delle feature
La forza del modello Random Forest Regression deriva da come introduce casualità a ogni passo e poi aggrega i risultati per ridurre la varianza. Vediamo questo meccanismo interno.
Bootstrap aggregating, o bagging, allena ciascun albero su un diverso sottoinsieme casuale dei dati. Questo introduce variazione tra gli alberi e riduce il rischio di overfitting.
Casualità delle feature aggiunge un ulteriore livello di diversità selezionando a ogni split un sottoinsieme casuale di feature. Insieme, queste tecniche stabilizzano le previsioni e migliorano la generalizzazione.
Campionamento bootstrap e casualità delle feature
Random Forest parte dal campionamento bootstrap, noto anche come bagging. Ogni albero è addestrato su un sottoinsieme estratto casualmente dal dataset originale. Di conseguenza, gli alberi apprendono pattern diversi invece di ripetere la stessa struttura.
Introduce anche casualità nelle feature. A ogni split, il modello considera solo un sottoinsieme casuale di feature invece di tutte quelle disponibili. Questo impedisce a poche feature dominanti di controllare ogni albero.
Insieme, bagging e casualità delle feature creano un insieme di alberi non correlati che commettono errori diversi; combinandoli, le loro previsioni annullano il rumore e migliorano l’accuratezza complessiva.
Crescita degli alberi e aggregazione delle previsioni
Ogni albero della foresta cresce in profondità, spesso senza potatura. Questo permette al modello di catturare pattern complessi, interazioni e relazioni non lineari nei dati.
Questi singoli alberi possono overfittare, ma l’effetto si riduce quando la Random Forest aggrega le loro uscite per il risultato finale.
Il trade-off bias-varianza
La random forest bilancia due fattori chiave: la forza dei singoli alberi e la diversità della foresta.
Gli alberi profondi hanno basso bias perché possono adattarsi da vicino ai dati di training. Allo stesso tempo, la casualità nel campionamento dei dati e nella selezione delle feature riduce la correlazione tra gli alberi. Mediando molti alberi a basso bias e debolmente correlati, il modello riduce la varianza complessiva senza aumentare il bias.
Preprocessing dei dati e workflow di implementazione
Ora metteremo in pratica i concetti e vedremo le tecniche per trasformare dati grezzi in un modello Random Forest funzionante.
Data cleaning e feature engineering
La preparazione dei dati per i modelli Random Forest di solito inizia con la gestione delle variabili categoriche.
- Per categorie con pochi livelli, il one-hot encoding funziona bene ed è affidabile
- Per feature ad alta cardinalità, il target encoding è spesso più efficiente, perché cattura segnali a livello di categoria senza aumentare significativamente la dimensionalità
Poi si affrontano i dati mancanti. L’approccio dipende dalla libreria che stai usando. Alcune implementazioni possono gestire i valori mancanti direttamente durante gli split, mentre altre si aspettano che tu li riempia. Nella maggior parte dei casi, una semplice imputazione usando mediana o moda è sufficiente. Poiché la Random Forest non si basa su distribuzioni rigide, questi metodi diretti funzionano bene in pratica.
Alla fine, l’impatto maggiore arriva dal feature engineering. Per esempio, le variabili lag introducono dipendenze temporali, gli aggregati mobili catturano trend locali e le statistiche per gruppo codificano pattern di livello superiore. Queste feature ingegnerizzate permettono al modello di rappresentare meglio l’informazione e migliorare le prestazioni predittive.
Per un approfondimento, consiglio di leggerti il mio tutorial Feature Engineering in Machine Learning.
Definire baseline e strategie di split
Prima di ottimizzare qualsiasi cosa, il primo passo è suddividere correttamente i dati.
Per i problemi tabellari standard, di solito significa separare il dataset in train, validation e test set così che il modello venga addestrato su una porzione, ottimizzato su un’altra e valutato su una porzione finale non toccata.
Questa separazione è importante perché ti dà una lettura realistica di come il modello si comporterà su nuovi dati.

Per le serie temporali, la strategia di split cambia. Split casuali possono far trapelare informazioni future nel passato, facendo sembrare le prestazioni migliori di quanto siano realmente.
La walk-forward validation evita questo problema allenando su una finestra temporale iniziale, validando sulla finestra successiva e poi avanzando passo dopo passo. Mantiene la valutazione allineata al modo in cui il modello verrebbe effettivamente usato in produzione.
Scrivere l’implementazione end-to-end in Python
L’implementazione segue un semplice flusso scikit-learn:
- Importare il modello
- Suddividere i dati
- Fittare lo stimatore
- Generare le previsioni
- Valutare l’output
Un setup tipico in pratica appare così:
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_absolute_error, root_mean_squared_error
import matplotlib.pyplot as plt
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
model = RandomForestRegressor(random_state=42)
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
mae = mean_absolute_error(y_test, y_pred)
rmse = root_mean_squared_error(y_test, y_pred)
Una volta allenato e valutato il modello, il passo successivo è visualizzare i valori previsti rispetto a quelli reali.
Uno scatter plot rende facile individuare bias sistematici, come previsioni che sovrastimano o sottostimano costantemente il target. Aiuta anche a rivelare la eteroschedasticità, dove gli errori di previsione si allargano all’aumentare dei valori target.
Hyperparameter tuning e valutazione
Dopo l’addestramento del modello, il passo successivo è ottimizzare i parametri chiave e valutarne le prestazioni. Ecco le tecniche più diffuse:
Scegliere e interpretare le metriche di regressione
Root mean squared error (RMSE), mean average error (MAE) e R² misurano le prestazioni in modi diversi.
- RMSE penalizza maggiormente gli errori grandi perché eleva al quadrato i residui. È utile quando gli errori grossi sono costosi e vanno minimizzati
- MAE tratta tutti gli errori allo stesso modo, quindi offre una visione più stabile quando i dati contengono outlier o quando conta di più un errore medio costante rispetto a picchi occasionali
- R² misura quanta varianza del target il modello spiega, il che aiuta a confrontare l’adattamento complessivo ma non riflette direttamente l’errore di previsione
Oltre alle metriche aggregate, l’analisi degli errori offre insight più profondi. I residui, definiti come la differenza tra valori reali e previsti, andrebbero esaminati su diverse porzioni di dati.
Tracciare i residui rispetto ai valori previsti o ai target reali aiuta a rivelare pattern. Per esempio, se gli errori aumentano con il crescere del target, indica eteroschedasticità. Se le previsioni cadono costantemente sopra o sotto la diagonale, indica bias sistematico.
Segmentare gli errori per gruppi di feature o intervalli del target aiuta anche a identificare i casi di fallimento. Il modello può infatti performare bene sui valori medi ma faticare agli estremi, oppure comportarsi diversamente fra i segmenti dei dati.
Usare la valutazione out-of-bag (OOB)
Random Forest fornisce un meccanismo di validazione integrato tramite il campionamento out-of-bag. Poiché ogni albero è addestrato su un campione bootstrap, una parte dei dati resta fuori e non viene vista in training. Questi campioni out-of-bag possono essere usati per valutare il modello senza creare un set di validazione separato. Questo è ciò che cattura l’OOB score.

Tuttavia, la valutazione OOB non è sempre sufficiente. Per la validazione finale del modello, soprattutto in scenari critici o quando c’è rischio di leakage, è necessario un rigoroso test set di hold-out.
Dare priorità agli iperparametri chiave da ottimizzare
In Random Forest, i parametri max_features e n_estimators in genere guidano i cambiamenti di prestazioni più evidenti.
-
max_featurescontrolla il numero massimo di feature considerate a ogni split. Valori più bassi aumentano la casualità e riducono la correlazione fra gli alberi, il che può migliorare la generalizzazione. Valori più alti rendono gli alberi più forti ma più simili, aumentando potenzialmente la varianza. -
n_estimatorscontrolla il numero di alberi nella foresta. Aumentarlo di solito migliora le prestazioni stabilizzando le previsioni, ma aumenta anche il tempo di calcolo. Oltre un certo punto, i guadagni diventano marginali, quindi è importante identificare quel plateau.
Questi parametri dovrebbero essere ottimizzati usando la cross-validation per bilanciare complessità del modello, tempi di training e prestazioni predittive.
Importanza delle feature e interpretabilità
I modelli Random Forest sono spesso trattati come scatole nere, ma offrono diversi modi per capire come le feature influenzano le previsioni. Vediamone alcuni importanti.
Importanza basata sull’impurità
Random Forest calcola l’importanza delle feature usando la Mean Decrease in Impurity (MDI). Ogni volta che una feature viene usata per dividere un nodo, il modello misura di quanto quello split riduce l’impurità, come la varianza nei compiti di regressione. Queste riduzioni vengono accumulate su tutti gli alberi, fornendo un punteggio che riflette quanto una feature contribuisce a migliorare le previsioni.
Sebbene questo metodo sia veloce e integrato nel modello, ha limiti noti. La MDI tende a favorire feature continue o categoriche con molti valori unici. Queste feature creano più possibili punti di split, il che può gonfiare i loro punteggi di importanza anche se non sono realmente più predittive.
Permutation importance
La permutation importance misura come cambiano le prestazioni quando i valori di una feature vengono rimescolati casualmente in un dataset di hold-out. Se rimescolare una feature degrada significativamente le prestazioni, quella feature è importante. Se l’impatto è piccolo, probabilmente la feature ha valore predittivo limitato.
Questo approccio riflette il comportamento reale del modello, rendendolo più affidabile per l’analisi.
Tuttavia, le feature correlate introducono complessità. Quando due feature portano informazioni simili, rimescolarne una può non impattare molto sulle prestazioni perché l’altra fornisce comunque il segnale. Di conseguenza, l’importanza può dividersi tra feature correlate, richiedendo un’interpretazione attenta.
Valori SHAP
I valori SHAP (Shapley Additive Explanations) spiegano quanto ciascuna feature contribuisce a una singola previsione. Assegnano a ogni feature un valore che rappresenta quanto ha spinto la previsione sopra o sotto una baseline.
Questo metodo è spesso usato per spiegare le decisioni del modello e creare fiducia. Per un’analisi più da vicino, leggi il nostro tutorial SHAP Values in Machine Learning.
Limitazioni e casi comuni di fallimento
La Random Forest Regression è affidabile in molti scenari, ma ha limiti chiari. Capirli ti aiuta a decidere quando usarla e quando passare a un approccio diverso.
Limiti di estrapolazione e edge case
Random Forest non può estrapolare oltre l’intervallo dei dati di training.
Ogni albero fa previsioni in base agli split osservati durante l’addestramento, quindi l’uscita finale è sempre limitata dai valori minimi e massimi del target visti nel dataset. Se il modello ha visto target solo tra 10 e 100, non può prevedere 120, per quanto forte sia il segnale in input. Questo diventa un problema in scenari come la previsione della crescita o i sistemi guidati da trend.
Il modello fatica anche con dati sparsi estremamente ad alta dimensionalità, come rappresentazioni testuali o vettori one-hot con migliaia di colonne. In questi casi, gli alberi diventano inefficienti e non riescono a catturare split significativi. Soluzioni pratiche includono
- Riduzione della dimensionalità
- Selezione delle feature
- Uso di modelli progettati per input sparsi, come la Ridge Regression
Compromessi di interpretabilità
Un singolo albero offre un percorso chiaro dall’input alla previsione, il che lo rende facile da spiegare. Una foresta, invece, aggrega centinaia di alberi, rendendo più difficile tracciare le decisioni individuali.
In ambienti altamente regolamentati, questo compromesso conta. Se le spiegazioni devono essere semplici e direttamente tracciabili, un singolo albero decisionale o un modello lineare può essere più adatto. Se la priorità è la performance e le spiegazioni possono essere supportate da metodi come feature importance o SHAP, la Random Forest resta un’ottima opzione.
Vincoli di calcolo, memoria e latenza
Random Forest scala linearmente con il numero di alberi e la dimensione dei dati. All’aumentare dei dataset, il tempo di training e l’uso di memoria crescono perché ogni albero deve essere costruito e memorizzato. Foreste grandi possono anche rallentare l’inferenza, dato che le previsioni richiedono l’aggregazione delle uscite di tutti gli alberi.
Nei sistemi di produzione con vincoli stringenti di latenza o costo, questo può diventare un collo di bottiglia. Ridurre il numero di alberi, limitare la profondità degli alberi o vincolare il numero di feature considerate a ogni split può aiutare a controllare l’uso delle risorse. Queste regolazioni scambiano un po’ di accuratezza con tempi di training e predizione più rapidi.
Random Forest Regression vs. alternative: come scegliere
Potresti chiederti se la Random Forest Regression sia l’algoritmo giusto per il tuo caso d’uso, o quale alternativa considerare.
Creare un framework di confronto tra modelli
I casi d’uso variano, ma un approccio aiuta sempre: confronta le prestazioni di modelli diversi (come regressione lineare, support vector regression, gradient boosting, ecc.) sullo stesso dataset insieme al Random Forest Regressor.
Significa usare esattamente le stesse partizioni di train, validation e test per ogni modello, poi valutarli secondo gli stessi criteri di errore e le stesse assunzioni di business.
Random forest regression vs. regressione lineare e support vector regression
Random Forest e la regressione lineare risolvono problemi molto diversi. La regressione lineare funziona meglio quando la relazione tra input e target è per lo più lineare e i coefficienti devono essere facili da spiegare. È anche la scelta migliore quando conta l’estrapolazione rigorosa, poiché può estendersi oltre l’intervallo di target osservato.
La Random Forest, al contrario, è migliore con pattern non lineari, interazioni tra feature e confini irregolari. Questo la rende uno strumento di modellazione più forte per sistemi complessi del mondo reale, ma un’opzione più debole per la previsione guidata da trend.
La support vector regression (SVR) sta in un’altra area. Può performare bene su dataset più piccoli, ma è molto più sensibile allo scaling delle feature e di solito richiede un tuning più attento. La Random Forest non dipende da input standardizzati, il che la rende più facile da usare nei tipici workflow tabellari.
La SVR può essere un’ottima opzione quando il dataset è compatto e lo spazio delle feature è limitato, ma diventa più difficile da gestire al crescere del volume dei dati, della complessità delle feature o della pressione operativa.
Random forest regression vs. gradient boosting e singoli alberi decisionali
La Random Forest costruisce gli alberi in modo indipendente e ne fa la media delle uscite. Il gradient boosting costruisce gli alberi in sequenza, dove ogni nuovo albero corregge gli errori dei precedenti.
I metodi di gradient boosting, come XGBoost, di solito raggiungono soglie di accuratezza più alte, soprattutto sui dati tabellari strutturati. Tuttavia, richiedono più tuning e sono più sensibili agli iperparametri. L’addestramento può anche essere più lento a causa della natura sequenziale del boosting. La Random Forest è più facile da addestrare, più stabile out of the box e meno sensibile alla configurazione.
Rispetto a un singolo albero decisionale, la Random Forest è molto più stabile e accurata. Un singolo albero è facile da interpretare perché puoi tracciare ogni percorso decisionale, ma è altamente sensibile a piccoli cambiamenti nei dati. La Random Forest riduce questa instabilità mediando molti alberi, ma perde l’interpretabilità diretta.
Riepilogo del confronto tra modelli
|
Modello |
Gestione non linearità |
Estrapolazione |
Interpretabilità |
Complessità del tuning |
Costo di training |
|
Random Forest Regression |
Forte |
Debole |
Media |
Moderata |
Moderato |
|
Regressione lineare |
Debole - Moderata |
Forte |
Alta |
Bassa |
Basso |
|
Support Vector Regression |
Forte |
Debole - Moderata |
Bassa |
Alta |
Alto (su grandi dati) |
|
Gradient Boosting (XGBoost) |
Molto forte |
Debole |
Bassa - Media |
Alta |
Alto |
|
Singolo albero decisionale |
Moderata |
Debole |
Alta |
Bassa |
Basso |
Considerazioni finali
La Random Forest Regression funziona al meglio come modello di default quando i dati sono disordinati, le relazioni sono non lineari e ti serve una baseline solida senza pesante preprocessing. Gestisce tipi di feature misti, cattura le interazioni e offre prestazioni stabili con un setup minimo.
Il workflow tipico segue una progressione chiara. Parti con un preprocessing minimo e concentrati sul strutturare correttamente i dati. Costruisci una baseline usando un modello Random Forest di default e valutala con metriche coerenti. Da lì, ottimizza gli iperparametri chiave come il numero di alberi e la strategia di campionamento delle feature per migliorare le prestazioni.
Una volta stabilizzato il modello, passa a una valutazione più profonda analizzando i residui, segmentando gli errori e usando SHAP per spiegare le previsioni dove serve.
Come prossimo passo, per una comprensione approfondita e pratica, dai un’occhiata a questo corso su Machine Learning with Tree-Based Models in Python.
Domande frequenti sulla Random Forest Regression
Quali sono le limitazioni del modello Random Forest?
La Random Forest non può estrapolare oltre l’intervallo dei dati di training e può faticare con dataset sparsi ad altissima dimensionalità. È anche meno interpretabile di un singolo albero decisionale e può diventare costosa computazionalmente all’aumentare del numero di alberi.
Come faccio a sapere se il mio modello Random Forest sta overfittando?
Confronta le prestazioni in training e in validazione. Se l’errore in training è basso ma quello in validazione è significativamente più alto, il modello sta overfittando. Puoi anche verificare se aumentare la profondità degli alberi non migliora le metriche di validazione.
Meglio XGBoost o Random Forest?
XGBoost di solito raggiunge un’accuratezza più alta perché costruisce gli alberi in sequenza e corregge gli errori a ogni passo. Funziona al meglio quando puoi investire tempo nel tuning degli iperparametri. La Random Forest, invece, costruisce gli alberi in modo indipendente e ne fa la media delle previsioni. È più stabile, richiede meno tuning e funziona bene come baseline.
La Random Forest può gestire dati di serie temporali?
Non direttamente. Devi convertire le serie temporali in formato tabellare usando feature di lag, statistiche mobili o trasformazioni basate su finestre prima di addestrare.
Srujana è una tech writer freelance con una laurea quadriennale in Informatica. Scrivere di vari argomenti, tra cui data science, cloud computing, sviluppo, programmazione, sicurezza e molti altri, le viene naturale. Ama la letteratura classica ed esplorare nuove destinazioni.
