Machines de gradient boosting

Apprentissage supervisé en R : régression

Nina Zumel and John Mount

Win-Vector, LLC

Fonctionnement du Gradient Boosting

  1. Ajuster un arbre peu profond $T_1$ aux données : $M_1 = T_1$
Apprentissage supervisé en R : régression

Fonctionnement du Gradient Boosting

  1. Ajuster un arbre peu profond $T_1$ aux données : $M_1 = T_1$
  2. Ajuster un arbre $T_2$ aux résidus. Trouver $\gamma$ tel que $M_2 = M_1 + \gamma T_2$ soit l'ajustement optimal aux données
Apprentissage supervisé en R : régression

Fonctionnement du Gradient Boosting

Régularisation : taux d'apprentissage $\eta \in(0,1)$

$$ M_2 = M_1 + \eta \gamma T_2 $$

  • Grand $\eta$ : apprentissage plus rapide
  • Petit $\eta$ : moins de risque de surapprentissage
Apprentissage supervisé en R : régression

Fonctionnement du Gradient Boosting

  1. Ajuster un arbre peu profond $T_1$ aux données
    • $M_1 = T_1$
  2. Ajuster un arbre $T_2$ aux résidus.
    • $M_2 = M_1 + \eta \gamma_2 T_2$
  3. Répéter (2) jusqu'au critère d'arrêt

Modèle final :

$$ M = M_1 + \eta \sum \gamma_i T_i $$

Apprentissage supervisé en R : régression

Validation croisée contre le surapprentissage

L'erreur d'entraînement baisse sans cesse, pas l'erreur de test

Apprentissage supervisé en R : régression

Bonnes pratiques (avec xgboost())

  1. Exécuter xgb.cv() avec un grand nombre d'itérations (arbres).
Apprentissage supervisé en R : régression

Bonnes pratiques (avec xgboost())

  1. Exécuter xgb.cv() avec un grand nombre d'itérations (arbres).
  2. xgb.cv()$evaluation_log : consigne le RMSE estimé à chaque itération.
    • Trouver le nombre d'arbres qui minimise le RMSE estimé : $n_{best}$
Apprentissage supervisé en R : régression

Bonnes pratiques (avec xgboost())

  1. Exécuter xgb.cv() avec un grand nombre d'itérations (arbres).
  2. xgb.cv()$evaluation_log : consigne le RMSE estimé à chaque itération.
    • Trouver le nombre d'arbres qui minimise le RMSE estimé : $n_{best}$
  3. Exécuter xgboost() avec nrounds = $n_{best}$
Apprentissage supervisé en R : régression

Exemple : modèle de location de vélos

D'abord, préparer les données

treatplan <- designTreatmentsZ(bikesJan, vars)
newvars <- treatplan$scoreFrame %>%
     filter(code %in% c("clean", "lev")) %>%
     use_series(varName)

bikesJan.treat <- prepare(treatplan, bikesJan, varRestriction = newvars)

Pour xgboost() :

  • Données d'entrée : as.matrix(bikesJan.treat)
  • Variable cible : bikesJan$cnt
Apprentissage supervisé en R : régression

Entraîner un modèle avec xgboost() / xgb.cv()

cv <- xgb.cv(data = as.matrix(bikesJan.treat), label = bikesJan$cnt,
              objective = "reg:squarederror",
              nrounds = 100, nfold = 5, eta = 0.3, max_depth = 6)

Entrées clés de xgb.cv() et xgboost()

  • data : données d'entrée en matrice ; label : cible
  • objective : pour régression – "reg:squarederror"
  • nrounds : nb maximal d'arbres à ajuster
  • eta : taux d'apprentissage
  • max_depth : profondeur maximale des arbres
  • nfold (seulement xgb.cv()) : nb de plis pour la validation croisée
Apprentissage supervisé en R : régression

Trouver le bon nombre d'arbres

elog <- as.data.frame(cv$evaluation_log)
(nrounds <- which.min(elog$test_rmse_mean))
78
Apprentissage supervisé en R : régression

Lancer xgboost() pour le modèle final

nrounds <- 78

model <- xgboost(data = as.matrix(bikesJan.treat), 
                 label = bikesJan$cnt,
                 nrounds = nrounds,
                 objective = "reg:squarederror",
                 eta = 0.3,
                 max_depth = 6)
Apprentissage supervisé en R : régression

Prédire avec un modèle xgboost()

Préparer les données de février et prédire

bikesFeb.treat <- prepare(treatplan, bikesFeb, varRestriction = newvars)

bikesFeb$pred <- predict(model, as.matrix(bikesFeb.treat))

Performances du modèle sur les données de février

Modèle RMSE
Quasipoisson 69,3
Forêts aléatoires 67,15
Gradient Boosting 54,0
Apprentissage supervisé en R : régression

Visualiser les résultats

Prédictions vs locations réelles de vélos, février

Prédictions et locations horaires de vélos, février

Apprentissage supervisé en R : régression

Passons à la pratique !

Apprentissage supervisé en R : régression

Preparing Video For Download...