Il bagging (Bootstrap Aggregating) è una tecnica di ensemble classica. Funziona così:
- Crei N sottocampioni del dataset, ognuno con campionamento bootstrap (con reinserimento, stessa dimensione dell'originale).
- Addestri lo stesso tipo di modello su ogni sottocampione.
- Per la previsione, fai media (regressione) o voting (classificazione) tra gli N modelli.
Effetto: riduce la varianza del modello finale. Se i singoli modelli sono "instabili" (cambiano molto su piccole variazioni dei dati, tipico degli alberi di decisione), il bagging stabilizza.
Esempio classico: Random Forest. Bagging di alberi di decisione, con un trucco aggiuntivo: a ogni nodo dell'albero, considera solo un sottoinsieme casuale delle feature. Riduce la correlazione tra alberi, l'ensemble è più forte.
Vantaggi del Random Forest:
- Robusto a outlier e missing data.
- Pochi iperparametri da regolare.
- Funziona out-of-the-box su dati tabulari.
- Dà importanza delle feature gratis.
- Parallelizzabile (gli alberi sono indipendenti).
Svantaggi:
- Tipicamente perde contro boosting (XGBoost, LightGBM) per pochi punti.
- Memoria: tiene N alberi in memoria.
- Inferenza: passi per N alberi.
Quando usare bagging vs boosting:
- Random Forest: quando vuoi un baseline forte e poco da configurare. Ottimo per esplorare un problema nuovo.
- Boosting: quando vuoi prestazioni massime e sei disposto a regolare iperparametri.
Storia: bagging è del 1996 (Breiman), Random Forest del 2001 (sempre Breiman). Tecniche vecchie che ancora funzionano benissimo per dati tabulari, dove il deep learning non sempre vince.