8.39 Evaluate the model

tune_res %>% 
     collect_metrics()
## # A tibble: 125 × 9
##    cost_complexity tree_depth min_n .metric  .estimator  mean     n std_err
##              <dbl>      <int> <int> <chr>    <chr>      <dbl> <int>   <dbl>
##  1        0.0001            3    10 accuracy binary     0.716   101 0.00374
##  2        0.000562          3    10 accuracy binary     0.716   101 0.00374
##  3        0.00316           3    10 accuracy binary     0.716   101 0.00374
##  4        0.0178            3    10 accuracy binary     0.715   101 0.00365
##  5        0.1               3    10 accuracy binary     0.697   101 0.00474
##  6        0.0001            4    10 accuracy binary     0.718   101 0.00449
##  7        0.000562          4    10 accuracy binary     0.718   101 0.00449
##  8        0.00316           4    10 accuracy binary     0.718   101 0.00449
##  9        0.0178            4    10 accuracy binary     0.724   101 0.00405
## 10        0.1               4    10 accuracy binary     0.697   101 0.00471
## # ℹ 115 more rows
## # ℹ 1 more variable: .config <chr>

Using autoplot() shows which values of cost_complexity appear to produce the highest accuracy.

autoplot(tune_res)

We can now select the best performing model with select_best(), finalize the workflow by updating the value of cost_complexity, tree_depth, and min_n and fit the model on the full training data set.

# select best model
best_model <- select_best(tune_res)

# fit model with best model hyperparameters
class_tree_final <- finalize_model(tree_spec, best_model)

# refit training dataset with best model hyperparameters
class_tree_final_fit <- fit(class_tree_final, High ~ ., data = carseats_train)

class_tree_final_fit
## parsnip model object
## 
## n= 300 
## 
## node), split, n, loss, yval, (yprob)
##       * denotes terminal node
## 
##   1) root 300 123 No (0.59000000 0.41000000)  
##     2) ShelveLoc=Bad,Medium 237  73 No (0.69198312 0.30801688)  
##       4) Advertising< 13.5 203  50 No (0.75369458 0.24630542)  
##         8) Price>=109.5 120  14 No (0.88333333 0.11666667) *
##         9) Price< 109.5 83  36 No (0.56626506 0.43373494)  
##          18) CompPrice< 124.5 65  20 No (0.69230769 0.30769231)  
##            36) Price>=76.5 55  12 No (0.78181818 0.21818182)  
##              72) Age>=61.5 30   2 No (0.93333333 0.06666667) *
##              73) Age< 61.5 25  10 No (0.60000000 0.40000000)  
##               146) CompPrice< 110 12   1 No (0.91666667 0.08333333) *
##               147) CompPrice>=110 13   4 Yes (0.30769231 0.69230769) *
##            37) Price< 76.5 10   2 Yes (0.20000000 0.80000000) *
##          19) CompPrice>=124.5 18   2 Yes (0.11111111 0.88888889) *
##       5) Advertising>=13.5 34  11 Yes (0.32352941 0.67647059)  
##        10) Age>=70.5 7   1 No (0.85714286 0.14285714) *
##        11) Age< 70.5 27   5 Yes (0.18518519 0.81481481) *
##     3) ShelveLoc=Good 63  13 Yes (0.20634921 0.79365079)  
##       6) Price>=135 15   6 No (0.60000000 0.40000000) *
##       7) Price< 135 48   4 Yes (0.08333333 0.91666667) *