3.9 KiB
Una Random Forest è un potente algoritmo di apprendimento supervisionato basato sull'idea di combinare molti alberi decisionali (ensemble learning). È utile sia per problemi di classificazione che di regressione.
Idea Principale
L'algoritmo costruisce molti alberi decisionali su sottoinsiemi casuali del dataset e combina le loro predizioni per ottenere un modello più robusto e preciso.
- Classificazione: Si usa il voto di maggioranza (modalità delle predizioni degli alberi).
- Regressione: Si usa la media delle predizioni degli alberi.
Fasi del Training
-
Bootstrap Aggregating (Bagging):
- Viene creato un sottoinsieme casuale (con rimpiazzo) del dataset originale per ogni albero. Questo approccio riduce l'overfitting.
-
Random Subspace (Feature Bagging):
- Ad ogni split di un albero, viene considerato un sottoinsieme casuale delle feature. Questo introduce ulteriore diversità tra gli alberi.
-
Crescita degli Alberi:
- Ogni albero è costruito indipendentemente dagli altri, senza potatura, quindi può raggiungere la massima profondità.
Vantaggi di Random Forest
-
Robustezza:
- La combinazione di più alberi riduce il rischio di overfitting rispetto a un singolo albero.
- Resiste al rumore nei dati.
-
Efficienza:
- È scalabile e può essere parallelizzato, poiché gli alberi sono indipendenti.
-
Gestione delle Feature:
- È efficace anche con dataset ad alta dimensionalità.
- Può calcolare l'importanza relativa delle feature, utile per interpretare il modello.
-
Flessibilità:
- Funziona bene sia per problemi di classificazione che di regressione.
Parametri Importanti
1. Numero di Alberi (n_estimators):
- Un valore più alto migliora la robustezza, ma aumenta il tempo di calcolo.
- Valore tipico: 100-500.
2. Numero Massimo di Feature (max_features):
- Numero di feature da considerare per ogni split.
- Valori comuni:
- Classificazione:
\sqrt{d}
, dove dd è il numero totale di feature. - Regressione:
d/3
.
- Classificazione:
3. Profondità Massima dell'Albero (max_depth):
- Limita la profondità degli alberi per prevenire overfitting.
- Se non specificata, gli alberi cresceranno fino a che ogni nodo foglia contiene meno di
min_samples_split
campioni.
4. Dimensione del Campione (max_samples):
- Percentuale del dataset usata per creare ogni albero.
- Di default, è il 100% con rimpiazzo (bagging completo).
Complessità Computazionale
-
Training:
Per un singolo albero:O(d \cdot n \log n)
, dove dd è il numero di feature e nn il numero di campioni.
Con TT alberi:O(T \cdot d \cdot n \log n)
. -
Predizione:
Predire su un campione richiedeO(T \cdot \text{depth})
, dove la profondità (\text{depth}
) è proporzionale a\log n
.
Limiti
-
Lentezza:
- L'addestramento può essere costoso con molti alberi o dataset molto grandi.
-
Interpretabilità:
- Anche se le singole feature possono essere analizzate, il modello complessivo è meno interpretabile di un singolo albero.
-
Overfitting su Dati Rumorosi:
- Se i dati contengono molto rumore, una Random Forest potrebbe comunque sovradattarsi, anche se meno di un singolo albero.
Applicazioni
- Classificazione: Diagnosi mediche, analisi di frodi, riconoscimento di immagini.
- Regressione: Previsione dei prezzi, analisi delle serie temporali.
- Selezione di Feature: Grazie all'analisi dell'importanza delle feature.
Punti Chiave
- Differenza con Bagging: La Random Forest aggiunge il sottoinsieme casuale di feature al bagging per rendere ogni albero più indipendente.
- Differenza con Gradient Boosting: La Random Forest crea alberi in parallelo, mentre il Gradient Boosting li costruisce in sequenza ottimizzando errori residui.