Gradient Boosting dalla teoria alla pratica (Parte 1)

Gradient Boosting Theory to Practice (Part 1)

Comprendere la matematica dietro l’algoritmo di gradient boosting popolare e come utilizzarlo nella pratica

Foto di Jens Lelie su Unsplash

Il gradient boosting è una tecnica di machine learning ampiamente utilizzata che si basa su una combinazione di boosting e discesa del gradiente.

Il boosting è un metodo di ensemble che combina più weak learner (o base learner) per creare un modello predittivo forte. I modelli di base vengono addestrati in sequenza, dove ciascun modello si concentra sulla correzione degli errori commessi dai modelli precedenti.

Nel gradient boosting, ciascun modello di base viene addestrato per prevedere i gradienti negativi della funzione di perdita rispetto alle previsioni dei modelli precedenti. Di conseguenza, l’aggiunta del nuovo base learner addestrato all’ensemble compie un passo nella direzione della discesa più ripida verso il minimo della perdita. Questo processo è simile alla discesa del gradiente, ma opera nello spazio delle funzioni anziché nello spazio dei parametri. Pertanto, è noto come discesa del gradiente funzionale.

Quando i weak learner sono alberi decisionali, il metodo risultante è noto come alberi decisionali con gradient boosting (GBDT) o gradient boosting machine (GBM).

Il gradient boosting è uno dei migliori algoritmi esistenti oggi per gestire dati strutturali e fornisce risultati all’avanguardia su molti benchmark di classificazione standard. Insieme al deep learning, è uno degli algoritmi più comunemente utilizzati nelle competizioni Kaggle.

L’algoritmo di gradient boosting è stato originariamente sviluppato da Jerome Freidman nel 2001 [1]. Da allora, è stato esteso a una famiglia di algoritmi che include XGBoost, CatBoost e LightGBM. Queste varianti dell’algoritmo incorporano varie migliorie che migliorano ulteriormente le prestazioni e la scalabilità del gradient boosting.

Questo articolo approfondisce la teoria e l’implementazione del gradient boosting. Nella prima parte dell’articolo ci concentreremo sui concetti teorici del gradient boosting, presenteremo l’algoritmo in pseudocodice e discuteremo vari modi per regolarizzare il modello. Nella seconda parte, esploreremo le classi in Scikit-Learn che implementano il gradient boosting e le utilizzeremo per risolvere diverse attività di regressione e classificazione.