Il boosting è una tecnica di ensemble dove i modelli vengono addestrati sequenzialmente, ognuno cercando di correggere gli errori dei precedenti. Riduce il bias del modello finale.
Differenza con bagging: bagging addestra modelli in parallelo su dati diversi. Boosting in sequenza, ognuno focalizzato sugli errori dei predecessori.
Algoritmi famosi:
- AdaBoost (1995): il primo. Aumenta i pesi degli esempi sbagliati a ogni iterazione.
- Gradient Boosting: ogni nuovo modello addestrato per predire il gradiente dell'errore residuo. Generalizza AdaBoost.
- XGBoost (2014): implementazione ottimizzata di gradient boosting. Vincitore di Kaggle infinito.
- LightGBM (Microsoft, 2017): più veloce di XGBoost, usa istogrammi.
- CatBoost (Yandex, 2017): gestisce bene categorical features.
Perché boosting domina i dati tabulari:
- Funziona con poche feature: gli alberi gestiscono bene 10-1000 feature.
- Non serve normalizzare: gli split degli alberi sono invarianti a scaling.
- Robusto a missing data.
- Performance al top per dati tabulari, dove deep learning non è sempre meglio.
Iperparametri chiave (XGBoost / LightGBM):
- n_estimators: quante iterazioni / alberi. 100-1000 tipico.
- learning_rate: quanto pesa ogni nuovo albero. 0.05-0.1 standard.
- max_depth: profondità degli alberi. 3-8 tipico.
- min_child_weight, gamma: regolarizzazione.
Pericolo: overfitta più del bagging. Sempre validare con cross-validation, sempre early stopping.
Stato attuale: per dati tabulari, XGBoost / LightGBM / CatBoost battono ancora le reti neurali nella maggioranza dei casi. TabNet, FT-Transformer e altri tentano di portare deep learning sui tabular ma non sempre vincono. Il vecchio gradient boosting non vuole morire, e fa bene.