Gradient boosting

Indice dei contenuti

    Il gradient boosting è una forma di boosting in cui un modello additivo viene costruito aggiungendo, a ogni passo, un nuovo predittore che approssima il gradiente negativo della funzione di perdita rispetto alle predizioni correnti.

    Invece di aggiornare direttamente un vettore di parametri, il metodo aggiorna una funzione predittiva:

    F_M(x)=\sum_{m=0}^{M}\eta\,h_m(x),

    dove h_m sono modelli deboli, spesso alberi decisionali poco profondi, e \eta è il learning rate.

    Idea funzionale

    Dato un insieme di osservazioni (x_i,y_i), il metodo cerca di minimizzare

    \sum_{i=1}^n L(y_i,F(x_i)).

    Al passo m, si calcolano gli pseudo-residui

    r_i^{(m)} = - \left[ \dfrac{\partial L(y_i,F(x_i))} {\partial F(x_i)} \right]_{F=F_{m-1}}.

    Il nuovo modello base h_m viene addestrato per approssimare questi pseudo-residui. Poi si aggiorna:

    F_m(x)=F_{m-1}(x)+\eta h_m(x).

    Il termine “gradient” deriva proprio da questa interpretazione: il modello si muove nella direzione di discesa della loss, ma nello spazio delle funzioni.

    Caso della loss quadratica

    Per regressione con loss quadratica

    L(y,F)=\dfrac{1}{2}(y-F)^2,

    il gradiente rispetto a F è

    \dfrac{\partial L}{\partial F}=F-y.

    Il gradiente negativo è quindi

    y-F.

    Gli pseudo-residui coincidono con i residui ordinari: il nuovo albero cerca di predire ciò che il modello precedente non ha ancora spiegato.

    Classificazione

    In classificazione, il gradient boosting può usare loss logistiche o cross-entropy. In quel caso gli pseudo-residui non sono semplici residui y-\hat y, ma quantità derivate dalla loss probabilistica. Questo consente di ottimizzare direttamente obiettivi coerenti con probabilità e classificazione.

    Tuttavia, anche se un modello gradient boosting ha ottima accuratezza o AUC, le probabilità prodotte possono richiedere calibrazione, specialmente quando si usano molte iterazioni o dati sbilanciati.

    Parametri principali

    I parametri più importanti sono:

    • numero di alberi;
    • learning rate \eta;
    • profondità massima degli alberi;
    • numero minimo di osservazioni per foglia;
    • sottocampionamento di righe e colonne;
    • regolarizzazione;
    • early stopping.

    Learning rate piccolo e molti alberi spesso generalizzano meglio di pochi alberi con passi grandi, ma aumentano costo e tempi di addestramento. Alberi più profondi catturano interazioni più complesse, ma aumentano il rischio di overfitting.

    Implementazioni moderne

    XGBoost, LightGBM e CatBoost sono implementazioni efficienti e regolarizzate del gradient boosting su alberi. Introducono ottimizzazioni computazionali, gestione di feature categoriche o sparse, penalizzazioni, strategie di crescita degli alberi e strumenti per early stopping.

    Questi modelli sono spesso molto competitivi su dati tabellari, dove possono superare reti neurali più complesse se i dati non hanno struttura spaziale o sequenziale forte.

    Confronto con bagging e random forest

    Il bagging e le random forest riducono soprattutto varianza mediando molti alberi addestrati in parallelo. Il gradient boosting lavora in sequenza e riduce progressivamente la loss residua. Questo lo rende potente, ma anche più sensibile a tuning, rumore e validazione.

    Errori comuni

    Il primo errore è aumentare il numero di alberi senza controllare la loss di validazione. Il secondo è usare alberi troppo profondi, trasformando il modello in un sistema ad alta varianza. Il terzo è valutare solo l’accuratezza, ignorando metriche operative come curva ROC, calibrazione, costo dei falsi positivi e falsi negativi.

    Per esercizi su valutazione dei classificatori si veda classificazione e metriche: esercizi svolti.

    Ultimo aggiornamento: