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

4.5 KiB
Raw Blame History

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.