Začněte nyníZačněte zdarma

Najdi správný počet stromů pro gradient boosting machine

V tomto cvičení se připravíš na sestavení modelu gradient boosting, který bude předpovídat počet vypůjčených kol za hodinu v závislosti na počasí, typu dne a denní době. Model natrénuješ na datech z července.

Julová data jsou předem načtena. Nezapomeň, že bikesJuly.treat už neobsahuje sloupec s výstupní proměnnou – ten musíš načíst z neupravených dat: bikesJuly$cnt.

K natrénování modelu použiješ balíček xgboost. Funkce xgb.cv() (docs) využívá křížovou validaci k odhadu chyby na nových datech s každým přidaným stromem. Optimální počet stromů pro finální model je ten, při kterém je RMSE na validační sadě nejnižší.

Pro toto cvičení jsou klíčové následující argumenty funkce xgb.cv():

  • data: numerická matice.
  • label: vektor výstupních hodnot (také numerický).
  • nrounds: maximální počet kol (stromů k natrénování).
  • nfold: počet skupin pro křížovou validaci. Hodnota 5 je dobrá volba.
  • objective: "reg:squarederror" pro spojité výstupní proměnné.
  • eta: rychlost učení.
  • max_depth: maximální hloubka stromů.
  • early_stopping_rounds: po tolika kolech bez zlepšení se trénování zastaví.
  • verbose: FALSE pro tichý režim.

Toto cvičení je součástí kurzu

Supervised Learning in R: Regression

Zobrazit kurz

Pokyny k cvičení

  • Doplň chybějící části a spusť xgb.cv() na upravených trénovacích datech; výsledek ulož do proměnné cv.
    • Pomocí as.matrix() převeď upravený datový rámec na matici.
    • Použij 50 kol a 5násobnou křížovou validaci.
    • Nastav early_stopping_rounds na 5.
    • Nastav eta na 0.75 a max_depth na 5.
  • Načti datový rámec evaluation_log z cv a ulož ho do proměnné elog. Každý řádek evaluation_log odpovídá jednomu přidanému stromu, takže číslo řádku ti říká, kolik stromů model obsahuje.
  • Doplň chybějící části pro nalezení počtu stromů s minimální hodnotou sloupců train_rmse_mean a test_rmse_mean.
    • Funkce which.min() (docs) vrátí index minimální hodnoty ve vektoru.
    • Kolik stromů tedy potřebuješ?

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

# 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)
Upravit a spustit kód