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")
Warning: No columns were selected in `update_role()`.

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)
# A tibble: 5 × 7
  degree .metric .estimator  mean     n std_err .config              
   <dbl> <chr>   <chr>      <dbl> <int>   <dbl> <chr>                
1      2 rmse    standard    642.    10    23.5 Preprocessor02_Model1
2      1 rmse    standard    644.    10    27.4 Preprocessor01_Model1
3      5 rmse    standard    646.    10    23.9 Preprocessor05_Model1
4      4 rmse    standard    648.    10    25.4 Preprocessor04_Model1
5      3 rmse    standard    654.    10    27.8 Preprocessor03_Model1
sol <- show_best(tune1)$degree[1]
sol
[1] 2

Die Antwort lautet: 2.


Categories:

  • R
  • statlearning
  • tidymodels
  • num