Gradient Boosting dalla Teoria alla Pratica (Parte 2)

Gradient Boosting Theory to Practice (Part 2)

Utilizzare le classi di boosting del gradient in Scikit-Learn per risolvere differenti problemi di classificazione e regressione

Foto di Luca Bravo su Unsplash

Nella prima parte di questo articolo, abbiamo presentato l’algoritmo di boosting del gradient e mostrato la sua implementazione in pseudocodice.

In questa parte dell’articolo, esploreremo le classi in Scikit-Learn che implementano questo algoritmo, discuteremo i loro vari parametri e mostreremo come utilizzarle per risolvere diversi problemi di classificazione e regressione.

Sebbene la libreria XGBoost (che verrà trattata in un futuro articolo) fornisca un’implementazione del boosting del gradient più ottimizzata e altamente scalabile, per set di dati di piccole o medie dimensioni è spesso più semplice utilizzare le classi di boosting del gradient in Scikit-Learn, che hanno un’interfaccia più semplice e un numero significativamente inferiore di iperparametri da ottimizzare.

Boosting del Gradient in Scikit-Learn

Scikit-Learn fornisce le seguenti classi che implementano il modello di alberi decisionali boostati dal gradient (GBDT):

  1. GradientBoostingClassifier viene utilizzata per problemi di classificazione.
  2. GradientBoostingRegressor viene utilizzata per problemi di regressione.

Oltre ai parametri standard degli alberi decisionali, come criterion, max_depth (impostato per default a 3) e min_samples_split, queste classi forniscono i seguenti parametri:

  1. loss — la funzione di perdita da ottimizzare. In GradientBoostingClassifier, questa funzione può essere ‘log_loss’ (impostazione predefinita) o ‘exponential’ (che farà sì che il boosting del gradient si comporti come l’algoritmo AdaBoost). In GradientBoostingRegressor, questa funzione può essere ‘squared_loss’ (impostazione predefinita), ‘absolute_loss’, ‘huber’ o ‘quantile’.
  2. n_estimators — il numero di iterazioni di boosting (impostato per default a 100).
  3. learning_rate — un fattore che riduce il contributo di ogni albero (impostato per default a 0.1).
  4. subsample — la frazione di campioni da utilizzare per l’addestramento di ogni albero (impostata per default a 1.0).
  5. max_features — il numero di feature da considerare durante la ricerca della migliore divisione in ogni nodo. Le opzioni sono specificare un numero intero per il…