107 lines
No EOL
4.5 KiB
Markdown
107 lines
No EOL
4.5 KiB
Markdown
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**
|
||
|
||
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. |