Hyperparameters afstemmen

Machine Learning met boomgebaseerde modellen in R

Sandro Raabe

Data Scientist

Hyperparameters

  • Bepalen vorm en complexiteit van bomen
  • Modelparameters die de complexiteit sturen en vóór trainen worden gezet

Hyperparameters in parsnip-beslisbomen:

  • min_n: minimum aantal samples om een node te splitsen
  • tree_depth: maximale diepte van de boom
  • cost_complexity: straf voor boompcomplexiteit
Machine Learning met boomgebaseerde modellen in R

Waarom tunen?

Standaardwaarden van parsnip:

decision_tree(min_n = 20, tree_depth = 30, cost_complexity = 0.01)
  • Werken vaak goed, maar zijn niet altijd optimaal voor elk dataset

 

Doel van hyperparameter-tuning: de optimale waarden vinden.

Machine Learning met boomgebaseerde modellen in R

Tunen met tidymodels met het tune-pakket

een leeg tuningrooster

Machine Learning met boomgebaseerde modellen in R

Tunen met tidymodels

dummy-specificatie

Machine Learning met boomgebaseerde modellen in R

Tunen met tidymodels

een tuningrooster met één getraind model per roosterpunt

Machine Learning met boomgebaseerde modellen in R

Tunen met tidymodels

het best presterende roosterpunt wordt gekozen

Machine Learning met boomgebaseerde modellen in R

Stap 1: Plaatshouders maken: tune()

spec_untuned <- decision_tree(

min_n = tune(), tree_depth = tune()
) %>% set_engine("rpart") %>% set_mode("classification")
Decision Tree Model Specification 
(classification)


Main Arguments: tree_depth = tune() min_n = tune()
  • tune() markeert parameters om te tunen
  • Rest van de specificatie zoals gebruikelijk
Machine Learning met boomgebaseerde modellen in R

Stap 2: Maak een tuningrooster: grid_regular()

tree_grid <- grid_regular(

parameters(spec_untuned),
levels = 3 )
# A tibble: 9 x 2
  min_n tree_depth
1     2          1
2    21          1
3    40          1
4     2          8
5    21          8
6    40          8
7     2         15
8    21         15
9    40         15
  • Helperfunctie parameters()
  • levels: aantal rasterpunten per hyperparameter
Machine Learning met boomgebaseerde modellen in R

Stap 3: Tune het rooster: tune_grid()

  • Bouwt een model voor elk roosterpunt
  • Evalueert elk model out-of-sample (CV)

 

Gebruik en argumenten:

  • Niet-getunede boomspecificatie
  • Modelformule
  • CV-folds
  • Tuningrooster
  • Lijst met metrics in metric_set()
tune_results <- tune_grid(

spec_untuned,
outcome ~ .,
resamples = my_folds,
grid = tree_grid,
metrics = metric_set(accuracy))
Machine Learning met boomgebaseerde modellen in R

Visualiseer de tuningresultaten

autoplot(tune_results)

tuningresultaten

Machine Learning met boomgebaseerde modellen in R

Stap 4: Gebruik de beste parameters: finalize_model()

# Selecteer de best presterende parameters
final_params <- select_best(tune_results)

final_params
# A tibble: 1 x 3
    min_n    tree_depth    .config
    <int>         <int>      <chr>
1      2              8     Model4
# Vul ze in de specificatie
best_spec <- finalize_model(spec_untuned, 
                            final_params)

best_spec
Decision Tree Model Specification 
                 (classification)

Main Arguments:
  tree_depth = 8
  min_n = 2

Computational engine: rpart
Machine Learning met boomgebaseerde modellen in R

Laten we tunen!

Machine Learning met boomgebaseerde modellen in R

Preparing Video For Download...