library(tidymodels)
data(penguins, package = "palmerpenguins")
tidymodels-poly01
R
statlearning
tidymodels
num
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:
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:
<- bake(prep(rec1), new_data = NULL) d_baked
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
<- show_best(tune1)$degree[1]
sol sol
[1] 2
Die Antwort lautet: 2.
Categories:
- R
- statlearning
- tidymodels
- num