Hitta rätt antal träd för en gradientboostningsmaskin
I den här övningen förbereder du dig för att bygga en gradientboostningsmodell som ska förutsäga antalet uthyrda cyklar per timme utifrån väder, typ av dag och tid på dygnet. Du tränar modellen på data från juli månad.
Julidata har förhandsladdats. Kom ihåg att bikesJuly.treat inte längre innehåller utfallskolumnen, så du måste hämta den från den obehandlade datan: bikesJuly$cnt.
Du använder paketet xgboost för att anpassa modellen. Funktionen xgb.cv() (docs) använder korsvalidering för att uppskatta inlärningsfelet utanför urvalet när varje nytt träd läggs till modellen. Det lämpliga antalet träd att använda i den slutliga modellen är det antal som minimerar RMSE på hålloutdata.
För den här övningen är de viktigaste argumenten i xgb.cv()-anropet:
data: en numerisk matris.label: vektor med utfall (också numerisk).nrounds: det maximala antalet rundor (träd att bygga).nfold: antalet veck för korsvalideringen. 5 är ett bra val.objective:"reg:squarederror"för kontinuerliga utfall.eta: inlärningshastigheten.max_depth: maximalt djup för träden.early_stopping_rounds: efter så här många rundor utan förbättring avslutas körningen.verbose:FALSEför att undertrycka utskrifter.
Den här övningen är en del av kursen
Övervakad inlärning i R: Regression
Övningsinstruktioner
- Fyll i luckorna för att köra
xgb.cv()på den behandlade träningsdatan och tilldela resultatet till variabelncv.- Använd
as.matrix()för att konvertera den behandlade dataramen till en matris. - Använd 50 rundor och 5-folds korsvalidering.
- Sätt
early_stopping_roundstill 5. - Sätt
etatill 0,75 ochmax_depthtill 5.
- Använd
- Hämta dataramen
evaluation_logfråncvoch tilldela den till variabelnelog. Varje rad ievaluation_logmotsvarar ett ytterligare träd, så radnumret anger antalet träd i modellen. - Fyll i luckorna för att hitta antalet träd med det lägsta värdet i kolumnerna
train_rmse_meanochtest_rmse_mean.which.min()(docs) returnerar indexet för det minsta värdet i en vektor.- Hur många träd behöver du?
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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)