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")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 |
|---|---|---|---|---|---|---|
| 5 | rmse | standard | 637.8813 | 10 | 25.10837 | pre05_mod0_post0 |
| 2 | rmse | standard | 641.6387 | 10 | 24.43323 | pre02_mod0_post0 |
| 1 | rmse | standard | 641.9005 | 10 | 26.80631 | pre01_mod0_post0 |
| 4 | rmse | standard | 642.0463 | 10 | 25.61125 | pre04_mod0_post0 |
| 6 | rmse | standard | 650.6058 | 10 | 29.96043 | pre06_mod0_post0 |
sol <- show_best(tune1)$degree[1]
sol[1] 5
Die Antwort lautet: 5.
Categories:
- R
- statlearning
- tidymodels
- num