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⋅nlog⁡n)O(d \cdot n \log n), dove dd è il numero di feature e nn il numero di campioni. Per MM iterazioni: O(M⋅d⋅nlog⁡n)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.