ÎncepețiÎncepe gratuit

Găsește numărul optim de arbori pentru un gradient boosting machine

În acest exercițiu, te vei pregăti să construiești un model de gradient boosting pentru a prezice numărul de biciclete închiriate într-o oră, în funcție de condițiile meteo și de tipul și momentul zilei. Vei antrena modelul pe datele din luna iulie.

Datele pentru iulie au fost preîncărcate. Reține că bikesJuly.treat nu mai conține coloana cu valorile de prezis, așa că trebuie să o preiei din datele netratate: bikesJuly$cnt.

Vei folosi pachetul xgboost pentru a antrena modelul. Funcția xgb.cv() (docs) utilizează validarea încrucișată pentru a estima eroarea de generalizare pe măsură ce fiecare arbore nou este adăugat în model. Numărul optim de arbori pentru modelul final este cel care minimizează RMSE pe setul de validare.

Pentru acest exercițiu, argumentele esențiale ale apelului xgb.cv() sunt:

  • data: o matrice numerică.
  • label: vectorul valorilor de prezis (tot numeric).
  • nrounds: numărul maxim de runde (arbori de construit).
  • nfold: numărul de segmente pentru validarea încrucișată. 5 este o valoare potrivită.
  • objective: "reg:squarederror" pentru valori continue.
  • eta: rata de învățare.
  • max_depth: adâncimea maximă a arborilor.
  • early_stopping_rounds: după atâtea runde fără îmbunătățire, antrenarea se oprește.
  • verbose: FALSE pentru a suprima mesajele.

Acest exercițiu face parte din cursul

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

Vezi cursul

Instrucțiuni pentru exercițiu

  • Completează spațiile libere pentru a rula xgb.cv() pe datele de antrenament tratate; atribuie rezultatul variabilei cv.
    • Folosește as.matrix() pentru a converti cadrul de date tratat într-o matrice.
    • Folosește 50 de runde și validare încrucișată cu 5 segmente.
    • Setează early_stopping_rounds la 5.
    • Setează eta la 0,75 și max_depth la 5.
  • Extrage cadrul de date evaluation_log din cv și atribuie-l variabilei elog. Fiecare rând din evaluation_log corespunde unui arbore suplimentar, deci numărul rândului îți indică numărul de arbori din model.
  • Completează spațiile libere pentru a obține numărul de arbori corespunzător valorii minime din coloanele train_rmse_mean și test_rmse_mean.
    • which.min() (docs) returnează indexul valorii minime dintr-un vector.
    • De câți arbori ai nevoie?

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

# Run xgb.cv
cv <- xgb.cv(data = ____, 
            label = ___,
            nrounds = ___,
            nfold = ___,
            objective = "reg:squarederror",
            eta = ___,
            max_depth = ___,
            early_stopping_rounds = ___,
            verbose = FALSE   # silent
)

# Get the evaluation log 
elog <- ___

# Determine and print how many trees minimize training and test error
elog %>% 
   summarize(ntrees.train = ___,   # find the index of min(train_rmse_mean)
             ntrees.test  = ___)   # find the index of min(test_rmse_mean)
Editează și rulează codul