Un apprendista pasticcere sforna la sua prima torta: buona, ma poco dolce e un po’ cruda al centro. Il maestro non la butta. La assaggia, annota gli errori — «manca zucchero, più cottura» — e passa le note a un secondo apprendista, che non rifà la torta da capo: prepara solo la correzione. Un terzo apprendista corregge gli errori rimasti dopo la seconda passata. Dopo qualche decina di iterazioni, la somma di tutti quei contributi imperfetti è una torta che nessuno dei singoli apprendisti avrebbe saputo fare da solo. Questo, quasi alla lettera, è il gradient boosting: una sequenza di modelli deboli, ognuno addestrato a correggere gli errori residui di tutti quelli che lo precedono.
L’albero decisionale, perché da solo è ballerino, e come Random Forest e boosting lo correggono: nel libro.
Il residuo: quello che il modello non ha capito
Partiamo dal caso più semplice, la regressione. Abbiamo un primo modello — tipicamente un albero decisionale poco profondo — che prova a predire i prezzi delle case. Per ogni casa nel dataset possiamo calcolare il residuo: la differenza tra il prezzo vero e quello predetto. Se il modello ha predetto 180.000 euro per una casa che ne vale 210.000, il residuo è +30.000.
L’intuizione chiave del boosting è che i residui non sono rumore da ignorare: sono un nuovo dataset. Contengono, in forma concentrata, tutto ciò che il primo modello non ha capito. Allora addestriamo un secondo albero non sui prezzi, ma sui residui del primo. La predizione combinata diventa: albero 1 + albero 2. Poi calcoliamo i residui di questa somma, addestriamo un terzo albero su quelli, e così via. Ogni albero vede solo «quello che manca ancora».
C’è un dettaglio importante: ogni contributo viene moltiplicato per un fattore piccolo, il learning rate (tipicamente tra 0,01 e 0,3). Invece di correggere l’errore tutto in una volta, ogni albero fa un passo prudente nella direzione giusta. Passi più piccoli richiedono più alberi, ma producono un modello finale più robusto — come stringere una vite con tanti piccoli giri invece di una torsione violenta che rischia di spanarla.
Perché si chiama «gradient» boosting
Fin qui i residui sembrano un trucco contabile. La formalizzazione, dovuta a Jerome Friedman a cavallo del 2000, li rivela per quello che sono: gradienti. Se la funzione di perdita è l’errore quadratico, il suo gradiente rispetto alla predizione è — a meno di un segno e di una costante — proprio il residuo. Addestrare ogni albero sui residui significa fare discesa del gradiente, ma in uno spazio insolito: non lo spazio dei parametri di un singolo modello, bensì lo spazio delle funzioni. Ogni nuovo albero è un passo di discesa; il modello complessivo scende lungo la superficie della perdita un albero alla volta.
Questa lettura ha una conseguenza pratica enorme: basta cambiare la funzione di perdita per adattare lo stesso identico algoritmo a problemi diversi. Perdita logistica per la classificazione, perdite robuste agli outlier per la regressione, perdite di ranking per ordinare risultati di ricerca. L’algoritmo non cambia: cambia solo il gradiente che ogni albero insegue.
Ogni albero non impara il problema: impara quello che tutti gli alberi precedenti, messi insieme, ancora sbagliano.
Lo schema: una catena di correzioni
Vale la pena fissare l’immagine. A sinistra il primo modello, con il suo errore grande. Ogni anello successivo della catena riceve i residui del precedente e li riduce. La predizione finale è la somma di tutti i contributi.
La catena correttiva del boosting: ogni albero viene addestrato sui residui della somma dei precedenti, e le barre dell’errore si accorciano a ogni passo. Il modello finale è la somma pesata di tutti i contributi.
Boosting contro bagging: due filosofie opposte
Nel deep-dive precedente abbiamo visto il random forest, che addestra tanti alberi in parallelo su campioni diversi dei dati e poi li fa votare. Il boosting fa l’esatto contrario: gli alberi sono in sequenza, e ognuno dipende da tutti i precedenti. La differenza filosofica è netta. Il bagging combatte la varianza: prende modelli già capaci ma instabili e li stabilizza mediandoli. Il boosting combatte il bias: prende modelli deliberatamente deboli — alberi profondi tre o quattro livelli, quasi inutili da soli — e li rende collettivamente espressivi.
Questa dipendenza sequenziale ha un costo: il boosting non si parallelizza sugli alberi (ognuno deve aspettare il precedente) ed è più sensibile al rumore, perché un’etichetta sbagliata genera residui grandi che gli alberi successivi inseguono con zelo. Da qui l’importanza della regolarizzazione: learning rate basso, numero di alberi controllato con early stopping, profondità limitata.
Cosa aggiunge XGBoost
XGBoost — eXtreme Gradient Boosting, rilasciato da Tianqi Chen nel 2014 e descritto in un paper del 2016 — non cambia l’idea di fondo: la ingegnerizza. Tre contributi su tutti.
- Espansione al secondo ordine. Invece del solo gradiente, XGBoost usa anche la derivata seconda della perdita (l’informazione di curvatura, come il metodo di Newton rispetto alla discesa semplice). Ogni albero fa passi meglio calibrati, e la formula per il valore ottimale di ogni foglia diventa una divisione in forma chiusa tra somme di gradienti e di hessiane.
- Regolarizzazione integrata. La funzione obiettivo penalizza esplicitamente il numero di foglie e la grandezza dei loro valori. La complessità dell’albero non è un ripensamento: entra nel criterio con cui si decide ogni singolo split.
- Ingegneria di sistema. Strutture dati ordinate per colonna, parallelizzazione della ricerca degli split (gli alberi restano sequenziali, ma la costruzione di ciascuno no), gestione nativa dei valori mancanti, cache-awareness. È il motivo per cui XGBoost gira in minuti dove implementazioni ingenue impiegano ore.
Sulla stessa scia sono arrivati LightGBM (Microsoft) e CatBoost (Yandex), con varianti sulla crescita degli alberi e sul trattamento delle variabili categoriche. Le differenze pratiche tra i tre sono spesso marginali rispetto a una buona scelta degli iperparametri.
Perché sui dati tabellari batte ancora le reti neurali
È un fatto che sorprende chi arriva al machine learning dal deep learning: su dati tabellari — la classica tabella con righe e colonne eterogenee, età accanto a reddito accanto a codice postale — il gradient boosting resta molto difficile da battere. Benchmark sistematici pubblicati tra il 2022 e il 2023 lo confermano su decine di dataset di dimensioni medie.
Una ragione plausibile è strutturale: gli alberi gestiscono senza sforzo scale diverse, variabili categoriche, soglie brusche e interazioni non lisce, esattamente il tipo di irregolarità che i dati tabellari esibiscono e che le reti neurali, costruite per funzioni lisce, faticano ad approssimare senza tanta regolarizzazione e tanti dati. Dove i dati hanno struttura spaziale o sequenziale — immagini, audio, testo — le reti dominano. Dove i dati sono una tabella di fatti eterogenei, la catena di alberi correttivi resta lo strumento giusto.
Cosa portarsi a casa
Se lavorate con dati tabellari — churn, prezzi, frodi, scoring, previsioni di domanda — il gradient boosting è con ogni probabilità il primo modello serio da provare dopo una baseline lineare. Capire il meccanismo dei residui vi serve concretamente: spiega perché il learning rate e il numero di alberi vanno regolati insieme (più piccolo l’uno, più grande l’altro), perché l’early stopping su un set di validazione è la difesa naturale contro l’overfitting, e perché etichette rumorose fanno più danni qui che in un random forest. E c’è un beneficio collaterale: l’idea di scendere lungo il gradiente nello spazio delle funzioni, un pezzo alla volta, è una delle intuizioni più eleganti del machine learning classico — e vi tornerà utile ogni volta che incontrerete un sistema che migliora iterando sui propri errori. Che è poi, in fondo, anche il modo in cui impariamo noi.

I commenti sono riservati agli iscritti.
Accedi per commentare