wfsets1

R
statlearning
tidymodels
wfsets
template
Published

November 30, 2023

Aufgabe

Berechnen Sie die Vorhersagegüte (RMSE) für folgende Lernalgorithmen mittesl tidymodels:

  • lineares Modell

Modellgleichung: body_mass_g ~ bill_length_mm, data = d_train.

Nutzen Sie minimale Vorverarbeitung im Rahmen zweier Rezepte.

Nutzen Sie ein Workflowset.











Lösung

Setup

library(tidymodels)
library(tictoc)  # Zeitmessung
data(penguins, package = "palmerpenguins")

Daten

d <-
  penguins %>% 
  drop_na()
d_split <- initial_split(d)
d_train <- training(d_split)
d_test <- testing(d_split)

Modelle

Lineares Modell:

mod_lin <- linear_reg()

mod_knn <- nearest_neighbor(mode = "regression",
                                  neighbors = tune())

Rezepte

rec_basic <- recipe(body_mass_g ~ bill_length_mm, data = d_train) %>% 
         step_normalize(all_predictors())
rec_plain <- recipe(body_mass_g ~ bill_length_mm, data = d_train)

Resampling

rsmpls <- vfold_cv(d_train, v = 5)

Workflow Set

wf_set <-
  workflow_set(
    preproc = list(rec_simple = rec_basic,
                   rec_plain = rec_plain),
    models = list(mod_lm = mod_lin)
  )

Fitten

tic()
wf_fit <-
  wf_set %>% 
  workflow_map(resamples = rsmpls)
toc()
wf_fit

Check:

wf_fit %>% pluck("result")

Bester Kandidat

autoplot(wf_fit)

autoplot(wf_fit, select_best = TRUE)

collect_metrics(wf_fit)
rank_results(wf_fit, rank_metric = "rmse") %>% 
  filter(.metric == "rmse")

Last Fit

best_wf <-
  wf_fit %>% 
  extract_workflow("rec_simple_mod_lm")

Finalisieren müssen wir diesen Workflow nicht, da er keine Tuningparameter hatte.

fit_final <-
  best_wf %>% 
  last_fit(d_split)

Modellgüte im Test-Set

collect_metrics(fit_final)