tidymodels-poly01

R
statlearning
tidymodels
num
Published

May 17, 2023

Aufgabe

Fitten Sie ein Polynomial-Modell für folgende Modellgleichung:

body_mass_g ~ bill_length_mm.

Gesucht ist der optimale Polynomgrad im Train-Sample (optimal hinsichtlich minimalem Prognosefehler).

Hinweise:

  • Datensatz penguins (palmerpenguins)
  • Verwenden Sie Tidymodels
  • Fitten Sie Polynome des Grades 1 bis 10.
  • Definieren Sie die Polynomegrade als Tuningparameter.
  • Beziehen Sie sich auf RMSE als Kennzahl der Modellgüte.
  • Entfernen Sie fehlende Werte in den Prädiktoren











Lösung

Setup:

library(tidymodels)
data(penguins, package = "palmerpenguins")

Rezept:

rec1 <- 
  recipe(body_mass_g ~ bill_length_mm, data = penguins) %>% 
  step_naomit(all_predictors()) %>% 
  step_poly(all_predictors(), degree = tune()) %>% 
  update_role(contains("_poly_"), new_role = "predictor")

Check:

d_baked <- bake(prep(rec1), new_data = NULL)

Workflow:

wf1 <-
  workflow() %>% 
  add_model(linear_reg()) %>% 
  add_recipe(rec1)

Rezepte mit Tuningparametern kann man nicht preppen/backen.

Tuning:

tune1 <-
  tune_grid(
    wf1,
    resamples = vfold_cv(data = penguins),
    metrics = metric_set(rmse),
    grid = grid_regular(degree(range = c(1, 10)),
                               levels = 10)
  )
autoplot(tune1)

show_best(tune1)
degree .metric .estimator mean n std_err .config
2 rmse standard 643.1677 10 20.66274 pre02_mod0_post0
5 rmse standard 645.4780 10 24.29428 pre05_mod0_post0
4 rmse standard 646.3220 10 23.06755 pre04_mod0_post0
1 rmse standard 647.6321 10 18.48407 pre01_mod0_post0
3 rmse standard 647.6829 10 24.19864 pre03_mod0_post0
sol <- show_best(tune1)$degree[1]
sol
[1] 2

Die Antwort lautet: 2.


Categories:

  • R
  • statlearning
  • tidymodels
  • num