rf-finalize

tidymodels
statlearning
template
string
Published

May 17, 2023

Aufgabe

Berechnen Sie ein prädiktives Modell mit dieser Modellgleichung:

body_mass_g ~ . (Datensatz: palmerpenguins::penguins).

Berichten Sie den RSMSE im Test-Sample!

Hinweise: - Tunen Sie mtry - Verwenden Sie Kreuzvalidierung - Verwenden Sie Standardwerte, wo nicht anders angegeben. - Fixieren Sie Zufallszahlen auf den Startwert 42.











Lösung

# Setup:
library(tidymodels)
library(tidyverse)
library(tictoc)  # Zeitmessung


# Data:
d_path <- "https://vincentarelbundock.github.io/Rdatasets/csv/palmerpenguins/penguins.csv"
d <- read_csv(d_path)

# rm NA in the dependent variable:
d <- d %>% 
  drop_na(body_mass_g)


set.seed(42)
d_split <- initial_split(d)
d_train <- training(d_split)
d_test <- testing(d_split)


# model:
mod_rf <-
  rand_forest(mode = "regression",
           mtry = tune())


# cv:
set.seed(42)
rsmpl <- vfold_cv(d_train)


# recipe:
rec_plain <- 
  recipe(body_mass_g ~  ., data = d_train) %>% 
  step_impute_bag(all_predictors())


# workflow:
wf1 <-
  workflow() %>% 
  add_model(mod_rf) %>% 
  add_recipe(rec_plain)


# tuning:
tic()
wf1_fit <-
  wf1 %>% 
  tune_grid(
    resamples = rsmpl)
toc()
21.808 sec elapsed
# best candidate:
show_best(wf1_fit)
mtry .metric .estimator mean n std_err .config
3 rmse standard 280.8153 10 11.206073 pre0_mod3_post0
2 rmse standard 282.0886 10 11.401888 pre0_mod2_post0
6 rmse standard 283.1617 10 9.830670 pre0_mod6_post0
8 rmse standard 283.1983 10 10.600386 pre0_mod8_post0
7 rmse standard 283.2110 10 9.983912 pre0_mod7_post0
# finalize wf:
wf1_final <-
  wf1 %>% 
  finalize_workflow(select_best(wf1_fit))


wf1_fit_final <-
  wf1_final %>% 
  last_fit(d_split)


# Modellgüte im Test-Set:
collect_metrics(wf1_fit_final)
.metric .estimator .estimate .config
rmse standard 322.7491683 pre0_mod0_post0
rsq standard 0.8228114 pre0_mod0_post0

Achtung: step_impute_knn scheint Probleme zu haben, wenn es Charakter-Variablen gibt.


Categories:

  • tidymodels
  • statlearning
  • template
  • string