library(tidymodels)
regr-tree01
statlearning
trees
tidymodels
string
mtcars
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
<- initial_split(mtcars)
d_split <- training(d_split)
d_train <- testing(d_split) d_test
Modell(e)
<-
mod_tree decision_tree(mode = "classification",
cost_complexity = tune())
Rezept(e)
<-
rec1 recipe(am ~ ., data = d_train)
Resampling
<- vfold_cv(d_train, v = 2) rsmpl
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