Mașini de gradient boosting

Învățare supervizată în R: Regresia

Nina Zumel and John Mount

Win-Vector, LLC

Cum funcționează Gradient Boosting

  1. Se ajustează un arbore superficial $T_1$ la date: $M_1 = T_1$
Învățare supervizată în R: Regresia

Cum funcționează Gradient Boosting

  1. Se ajustează un arbore superficial $T_1$ la date: $M_1 = T_1$
  2. Se ajustează un arbore T_2 la reziduuri. Se găsește $\gamma$ astfel încât $M_2 = M_1 + \gamma T_2$ să fie cel mai bun ajustaj la date
Învățare supervizată în R: Regresia

Cum funcționează Gradient Boosting

Regularizare: rata de învățare $\eta \in(0,1)$

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

  • $\eta$ mai mare: învățare mai rapidă
  • $\eta$ mai mic: risc mai scăzut de supraajustare
Învățare supervizată în R: Regresia

Cum funcționează Gradient Boosting

  1. Se ajustează un arbore superficial $T_1$ la date
    • $M_1 = T_1$
  2. Se ajustează un arbore T_2 la reziduuri.
    • $M_2 = M_1 + \eta \gamma_2 T_2$
  3. Se repetă (2) până la condiția de oprire

Model final:

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

Învățare supervizată în R: Regresia

Validare încrucișată împotriva supraajustării

Eroarea de antrenare scade continuu, dar eroarea de test nu

Învățare supervizată în R: Regresia

Bună practică (cu xgboost())

  1. Rulați xgb.cv() cu un număr mare de runde (arbori).
Învățare supervizată în R: Regresia

Bună practică (cu xgboost())

  1. Rulați xgb.cv() cu un număr mare de runde (arbori).
  2. xgb.cv()$evaluation_log: înregistrează RMSE estimat pentru fiecare rundă.
    • Găsiți numărul de arbori care minimizează RMSE estimat: $n_{best}$
Învățare supervizată în R: Regresia

Bună practică (cu xgboost())

  1. Rulați xgb.cv() cu un număr mare de runde (arbori).
  2. xgb.cv()$evaluation_log: înregistrează RMSE estimat pentru fiecare rundă.
    • Găsiți numărul de arbori care minimizează RMSE estimat: $n_{best}$
  3. Rulați xgboost(), setând nrounds = $n_{best}$
Învățare supervizată în R: Regresia

Exemplu: Model pentru închirierea bicicletelor

Mai întâi, pregătiți datele

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

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

Pentru xgboost():

  • Date de intrare: as.matrix(bikesJan.treat)
  • Variabilă țintă: bikesJan$cnt
Învățare supervizată în R: Regresia

Antrenarea unui model cu 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)

Parametri cheie pentru xgb.cv() și xgboost()

  • data: date de intrare ca matrice ; label: variabilă țintă
  • objective: pentru regresie - "reg:squarederror"
  • nrounds: numărul maxim de arbori de ajustat
  • eta: rata de învățare
  • max_depth: adâncimea maximă a arborilor individuali
  • nfold (doar xgb.cv()): numărul de partiții pentru validarea încrucișată
Învățare supervizată în R: Regresia

Găsirea numărului optim de arbori

elog <- as.data.frame(cv$evaluation_log)
(nrounds <- which.min(elog$test_rmse_mean))
78
Învățare supervizată în R: Regresia

Rulați xgboost() pentru modelul final

nrounds <- 78

model <- xgboost(data = as.matrix(bikesJan.treat), 
                 label = bikesJan$cnt,
                 nrounds = nrounds,
                 objective = "reg:squarederror",
                 eta = 0.3,
                 max_depth = 6)
Învățare supervizată în R: Regresia

Predicții cu un model xgboost()

Pregătiți datele din februarie și realizați predicții

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

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

Performanța modelelor pe datele din februarie

Model RMSE
Quasipoisson 69.3
Random forests 67.15
Gradient Boosting 54.0
Învățare supervizată în R: Regresia

Vizualizarea rezultatelor

Predicții vs. închirieri reale de biciclete, februarie

Predicții și închirieri orare de biciclete, februarie

Învățare supervizată în R: Regresia

Să exersăm!

Învățare supervizată în R: Regresia

Preparing Video For Download...