master-degree-notes/Foundation of data science/notes/9 Gradient Boosting.md

107 lines
4.5 KiB
Markdown
Raw Normal View History

2024-12-11 13:29:42 +01:00
Il _Gradient Boosting_ è un algoritmo di apprendimento supervisionato basato sullidea 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**
1. **Inizializzazione:**
- Il modello parte con una predizione iniziale, spesso la media dei valori target nel caso della regressione.
2. **Costruzione iterativa:**
- Ad ogni passo mm:
1. 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)}$$ Dove $F_{m-1}$ è il modello fino all'iterazione precedente.
2. Si addestra un nuovo modello debole (ad esempio un albero decisionale poco profondo) per predire i residui o il gradiente.
3. 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 di $h_m(x)$.
3. **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**
1. **Alta Accuratezza:**
- È uno degli algoritmi più potenti, capace di adattarsi a problemi complessi.
2. **Flessibilità:**
- Può gestire obiettivi di regressione, classificazione e anche metriche personalizzate.
3. **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**
1. **XGBoost:** Ottimizza Gradient Boosting con parallelizzazione e tecniche avanzate di regularizzazione.
2. **LightGBM:** Usa tecniche di crescita dell'albero basate su foglie, più rapido per dataset molto grandi.
3. **CatBoost:** Ottimizzato per feature categoriche, riduce la necessità di pre-elaborazione.