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:FALSEpentru a suprima mesajele.
Acest exercițiu face parte din cursul
Învățare supervizată în R: Regresia
Instrucțiuni pentru exercițiu
- Completează spațiile libere pentru a rula
xgb.cv()pe datele de antrenament tratate; atribuie rezultatul variabileicv.- 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_roundsla 5. - Setează
etala 0,75 șimax_depthla 5.
- Folosește
- Extrage cadrul de date
evaluation_logdincvși atribuie-l variabileielog. Fiecare rând dinevaluation_logcorespunde 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șitest_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)