tidymodels-vorlage

tidymodels
statlearning
template
string
Published

May 17, 2023

Aufgabe

Schreiben Sie eine prototypische Analyse für ein Vorhersagemodell, das sich als Vorlage für Analysen dieser Art eignet!

Hinweise:

  • Berechnen Sie ein Modell
  • Tunen Sie mind. einen Parameter des Modells
  • Verwenden Sie Kreuzvalidierung
  • Verwenden Sie Standardwerte, wo nicht anders angegeben.
  • Fixieren Sie Zufallszahlen auf den Startwert 42.











Lösung

# 2023-05-08


# Setup:
library(tidymodels)
library(tidyverse)
library(tictoc)  # Zeitmessung
library(baguette)  # Bagged-Trees


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

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


# model:
mod_bag <-
  bag_tree(mode = "regression",
           cost_complexity = tune())


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


# recipe:
rec1_plain <- recipe(body_mass_g ~  ., data = d_train)


# workflow:
wf1 <-
  workflow() %>% 
  add_model(mod_bag) %>% 
  add_recipe(rec1_plain)


# tuning:
tic()
wf1_fit <-
  wf1 %>% 
  tune_grid(
    resamples = rsmpl)
toc()
53.406 sec elapsed
# best candidate:
show_best(wf1_fit)
cost_complexity .metric .estimator mean n std_err .config
0.0064392 rmse standard 302.1977 10 16.11540 pre0_mod09_post0
0.0000010 rmse standard 303.9024 10 19.22696 pre0_mod05_post0
0.0000000 rmse standard 305.0243 10 15.34343 pre0_mod03_post0
0.0000429 rmse standard 305.2490 10 19.95539 pre0_mod07_post0
0.0000043 rmse standard 308.3078 10 16.17880 pre0_mod06_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 329.9022032 pre0_mod0_post0
rsq standard 0.8458163 pre0_mod0_post0

Categories:

  • tidymodels
  • statlearning
  • template
  • string