Gradient boosting machines

R में Supervised Learning: Regression

Nina Zumel and John Mount

Win-Vector, LLC

Gradient Boosting कैसे काम करता है

  1. डेटा पर एक उथला ट्री $T_1$ फिट करें: $M_1 = T_1$
R में Supervised Learning: Regression

Gradient Boosting कैसे काम करता है

  1. डेटा पर एक उथला ट्री $T_1$ फिट करें: $M_1 = T_1$
  2. रेजिडुअल्स पर ट्री T_2 फिट करें. ऐसा $\gamma$ खोजें कि $M_2 = M_1 + \gamma T_2$ डेटा पर सर्वश्रेष्ठ फिट हो
R में Supervised Learning: Regression

Gradient Boosting कैसे काम करता है

Regularization: learning rate $\eta \in(0,1)$

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

  • बड़ा $\eta$: तेज़ लर्निंग
  • छोटा $\eta$: ओवरफिट का कम जोखिम
R में Supervised Learning: Regression

Gradient Boosting कैसे काम करता है

  1. डेटा पर एक उथला ट्री $T_1$ फिट करें
    • $M_1 = T_1$
  2. रेजिडुअल्स पर ट्री T_2 फिट करें.
    • $M_2 = M_1 + \eta \gamma_2 T_2$
  3. स्टॉपिंग कंडीशन तक (2) दोहराएँ

Final Model:

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

R में Supervised Learning: Regression

ओवरफिट से बचाव के लिए Cross-validation

Training error घटता रहता है, पर test error नहीं

R में Supervised Learning: Regression

Best Practice (with xgboost())

  1. बहुत अधिक राउंड्स (trees) के साथ xgb.cv() चलाएँ.
R में Supervised Learning: Regression

Best Practice (with xgboost())

  1. बहुत अधिक राउंड्स (trees) के साथ xgb.cv() चलाएँ.
  2. xgb.cv()$evaluation_log: हर राउंड का अनुमानित RMSE रिकॉर्ड करता है.
    • उतने trees खोजें जो अनुमानित RMSE को न्यूनतम करें: $n_{best}$
R में Supervised Learning: Regression

Best Practice (with xgboost())

  1. बहुत अधिक राउंड्स (trees) के साथ xgb.cv() चलाएँ.
  2. xgb.cv()$evaluation_log: हर राउंड का अनुमानित RMSE रिकॉर्ड करता है.
    • उतने trees खोजें जो अनुमानित RMSE को न्यूनतम करें: $n_{best}$
  3. xgboost() चलाएँ, nrounds = $n_{best}$ सेट करें
R में Supervised Learning: Regression

उदाहरण: Bike Rental मॉडल

पहले डेटा तैयार करें

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

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

xgboost() के लिए:

  • इनपुट डेटा: as.matrix(bikesJan.treat)
  • आउटकम: bikesJan$cnt
R में Supervised Learning: Regression

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)

xgb.cv() और xgboost() के मुख्य इनपुट

  • data: इनपुट डेटा (matrix) ; label: आउटकम
  • objective: regression के लिए - "reg:squarederror"
  • nrounds: फिट करने के लिए अधिकतम trees
  • eta: learning rate
  • max_depth: individual trees की अधिकतम गहराई
  • nfold (सिर्फ xgb.cv()): cross validation के folds की संख्या
R में Supervised Learning: Regression

सही संख्या में Trees खोजें

elog <- as.data.frame(cv$evaluation_log)
(nrounds <- which.min(elog$test_rmse_mean))
78
R में Supervised Learning: Regression

Final मॉडल के लिए xgboost() चलाएँ

nrounds <- 78

model <- xgboost(data = as.matrix(bikesJan.treat), 
                 label = bikesJan$cnt,
                 nrounds = nrounds,
                 objective = "reg:squarederror",
                 eta = 0.3,
                 max_depth = 6)
R में Supervised Learning: Regression

xgboost() मॉडल से प्रेडिक्ट करें

फ़रवरी का डेटा तैयार करें, और प्रेडिक्ट करें

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

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

फ़रवरी डेटा पर मॉडल का प्रदर्शन

Model RMSE
Quasipoisson 69.3
Random forests 67.15
Gradient Boosting 54.0
R में Supervised Learning: Regression

परिणामों का विज़ुअलाइज़ेशन

Predictions बनाम Actual Bike Rentals, February

Predictions और Hourly Bike Rentals, February

R में Supervised Learning: Regression

अभ्यास करते हैं!

R में Supervised Learning: Regression

Preparing Video For Download...