Gradient boosting machines

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$ s'ajuste au mieux 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 $$

  • $\eta$ plus grand : apprentissage plus rapide
  • $\eta$ plus petit : 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'à la condition d'arrêt

Modèle final :

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

Apprentissage supervisé en R : Régression

Validation croisée pour éviter le surapprentissage

L'erreur d'entraînement diminue, mais 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 : enregistre 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 : enregistre 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 en 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 au format matrice ; label : cible
  • objective : pour la régression – "reg:squarederror"
  • nrounds : nombre maximal d'arbres à ajuster
  • eta : taux d'apprentissage
  • max_depth : profondeur maximale des arbres
  • nfold (seulement xgb.cv()) : nombre 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

Exécuter 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, puis 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...