4.5 KiB
Il Gradient Boosting è un algoritmo di apprendimento supervisionato basato sull’idea di creare un modello forte combinando molti modelli deboli (solitamente alberi decisionali poco profondi), migliorandoli iterativamente.
Idea Principale
A differenza di tecniche come il bagging (ad esempio la Random Forest), che costruiscono modelli indipendenti, il boosting costruisce i modelli in sequenza. Ogni modello successivo cerca di correggere gli errori del modello precedente, utilizzando il gradiente dell'errore come guida.
Fasi del Training
-
Inizializzazione:
- Il modello parte con una predizione iniziale, spesso la media dei valori target nel caso della regressione.
-
Costruzione iterativa:
- Ad ogni passo mm:
-
Si calcola il residuo o il gradiente dell'errore per il modello corrente:
r_i^{(m)} = y_i - F_{m-1}(x_i) \quad \text{(Regressione)} \quad \text{oppure} \quad \nabla L(F_{m-1}, y_i) \quad \text{(Generale)}
DoveF_{m-1}
è il modello fino all'iterazione precedente. -
Si addestra un nuovo modello debole (ad esempio un albero decisionale poco profondo) per predire i residui o il gradiente.
-
Si aggiorna il modello combinando il modello precedente con il nuovo:
F_m(x) = F_{m-1}(x) + \eta \cdot h_m(x)
Dove:h_m(x)
è il modello addestrato sui residui.\eta
è il learning rate, che controlla l'impatto dih_m(x)
.
-
- Ad ogni passo mm:
-
Ripetizione:
- Il processo si ripete per MM iterazioni, fino a che l'errore non è sufficientemente basso o si raggiunge il numero massimo di modelli.
Vantaggi del Gradient Boosting
-
Alta Accuratezza:
- È uno degli algoritmi più potenti, capace di adattarsi a problemi complessi.
-
Flessibilità:
- Può gestire obiettivi di regressione, classificazione e anche metriche personalizzate.
-
Controllo di Overfitting:
- Parametri come la profondità degli alberi, il numero di iterazioni (MM) e il learning rate (η\eta) aiutano a bilanciare bias e varianza.
Parametri Importanti
1. Numero di Iterazioni (n_estimators):
- Numero di alberi o modelli deboli da creare.
- Un valore troppo alto può causare overfitting.
2. Learning Rate (\eta
):
- Determina la velocità di apprendimento. Valori tipici sono tra 0.01 e 0.2.
- Un valore basso richiede più iterazioni, ma migliora la generalizzazione.
3. Profondità degli Alberi (max_depth):
- Profondità massima degli alberi. Valori bassi (ad esempio, 3-5) sono comuni per mantenere gli alberi "deboli".
4. Subsample:
- Percentuale di campioni usati per addestrare ogni albero. Valori inferiori a 1 (ad esempio, 0.8) introducono casualità e migliorano la robustezza.
5. Regolarizzazione (\lambda, \gamma
):
- Penalizzazioni sull'importanza dei nodi o sulla complessità degli alberi per prevenire overfitting.
Complessità Computazionale
-
Training:
Per un albero: O(d⋅nlogn)O(d \cdot n \log n), dove dd è il numero di feature e nn il numero di campioni.
Per MM iterazioni: O(M⋅d⋅nlogn)O(M \cdot d \cdot n \log n). -
Predizione:
Predire su un campione richiede O(M⋅depth)O(M \cdot \text{depth}), dove depth\text{depth} è la profondità degli alberi.
Vantaggi e Svantaggi
Vantaggi:
- Molto accurato su molti dataset.
- Flessibile con metriche di errore personalizzate.
- In grado di gestire outlier (con algoritmi robusti come Huber loss).
Svantaggi:
- Può essere lento da addestrare, soprattutto per grandi dataset.
- Richiede ottimizzazione attenta dei parametri per evitare overfitting.
- Sensibile al rumore nei dati.
Gradient Boosting vs Random Forest
Caratteristica | Random Forest | Gradient Boosting |
---|---|---|
Costruzione | Alberi indipendenti (in parallelo). | Alberi sequenziali (in serie). |
Tolleranza al rumore | Più robusto al rumore. | Sensibile al rumore nei dati. |
Tempo di training | Più veloce (parallelizzabile). | Più lento, ma ottimizzabile. |
Overfitting | Meno incline. | Maggiore rischio se non regolato. |
Versioni Avanzate
- XGBoost: Ottimizza Gradient Boosting con parallelizzazione e tecniche avanzate di regularizzazione.
- LightGBM: Usa tecniche di crescita dell'albero basate su foglie, più rapido per dataset molto grandi.
- CatBoost: Ottimizzato per feature categoriche, riduce la necessità di pre-elaborazione.