regr-tree01

statlearning
trees
tidymodels
string
mtcars
Published

May 17, 2023

library(tidymodels)

Aufgabe

Berechnen Sie einfaches Prognosemodell auf Basis eines Entscheidungsbaums!

Modellformel: am ~ . (Datensatz mtcars)

Berichten Sie die Modellgüte (ROC-AUC).

Hinweise:

  • Tunen Sie den Komplexitätsparameter des Baumes.
  • Führen Sie eine \(v=2\)-fache Kreuzvalidierung durch (weil die Stichprobe so klein ist).
  • Beachten Sie die üblichen Hinweise.











Lösung

Setup

library(tidymodels)
data(mtcars)
library(tictoc)  # Zeitmessung

Für Klassifikation verlangt Tidymodels eine nominale AV, keine numerische:

mtcars <-
  mtcars %>% 
  mutate(am = factor(am))

Daten teilen

d_split <- initial_split(mtcars)
d_train <- training(d_split)
d_test <- testing(d_split)

Modell(e)

mod_tree <-
  decision_tree(mode = "classification",
                cost_complexity = tune())

Rezept(e)

rec1 <- 
  recipe(am ~ ., data = d_train)

Resampling

rsmpl <- vfold_cv(d_train, v = 2)

Workflow

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

Tuning/Fitting

fit1 <-
  tune_grid(object = wf1,
            resamples = rsmpl)

Bester Kandidat

autoplot(fit1)

show_best(fit1)
cost_complexity .metric .estimator mean n std_err .config
0.0e+00 roc_auc binary 0.5 2 0 pre0_mod01_post0
0.0e+00 roc_auc binary 0.5 2 0 pre0_mod02_post0
0.0e+00 roc_auc binary 0.5 2 0 pre0_mod03_post0
3.0e-07 roc_auc binary 0.5 2 0 pre0_mod04_post0
2.3e-06 roc_auc binary 0.5 2 0 pre0_mod05_post0

Finalisieren

wf1_finalized <-
  wf1 %>% 
  finalize_workflow(select_best(fit1))

Last Fit

final_fit <- 
  last_fit(object = wf1_finalized, d_split)

collect_metrics(final_fit)
.metric .estimator .estimate .config
accuracy binary 0.8750000 pre0_mod0_post0
roc_auc binary 0.8750000 pre0_mod0_post0
brier_class binary 0.1157407 pre0_mod0_post0

Categories:

  • statlearning
  • trees
  • tidymodels
  • string