Ladění hyperparametrů

Modeling with tidymodels in R

David Svancer

Data Scientist

Hyperparametry

Parametry modelu nastavené před trénováním, které řídí složitost modelu

parsnip rozhodovací strom

  • cost_complexity
    • Penalizuje velký počet koncových uzlů
  • tree_depth
    • Nejdelší cesta od kořene ke koncovému uzlu
  • min_n
    • Minimální počet datových bodů v uzlu pro další větvení

Obdélníkové oblasti modelu rozhodovacího stromu

Modeling with tidymodels in R

Výchozí hodnoty hyperparametrů

Funkce decision_tree() nastavuje výchozí hodnoty hyperparametrů

  • cost_complexity je nastaveno na 0,01
  • tree_depth je nastaveno na 30
  • min_n je nastaveno na 20

Tyto hodnoty nemusí být optimální pro všechny datové sady

  • Ladění hyperparametrů
    • Proces hledání optimálních hodnot hyperparametrů pomocí křížové validace
dt_model <- decision_tree() %>% 
  set_engine('rpart') %>% 
  set_mode('classification')
Modeling with tidymodels in R

Označení hyperparametrů pro ladění

Funkce tune() z balíčku tune

  • Pro označení hyperparametrů k ladění je nastavte rovné tune() ve specifikaci modelu parsnip
  • Vytvoří objekt modelu s ladicími parametry
    • Umožní ostatním funkcím vědět, že je třeba je optimalizovat
dt_tune_model <- decision_tree(cost_complexity = tune(),
                               tree_depth = tune(),
                               min_n = tune()) %>% 
  set_engine('rpart') %>% 
  set_mode('classification')

dt_tune_model
Decision Tree Model Specification (classification)

Main Arguments:
  cost_complexity = tune()
  tree_depth = tune()
  min_n = tune()

Computational engine: rpart
Modeling with tidymodels in R

Vytvoření ladicího workflow

Objekty workflow lze snadno aktualizovat

  • Předchozí leads_wkfl
    • Kroky přípravy dat pro lead scoring a model rozhodovacího stromu s výchozími hyperparametry
  • Předejte leads_wkfl do update_model() a zadejte nový model s ladicími parametry
leads_tune_wkfl <- leads_wkfl %>% 

update_model(dt_tune_model)
leads_tune_wkfl
== Workflow ===============
Preprocessor: Recipe
Model: decision_tree()
-- Preprocessor -----------
3 Recipe Steps
* step_corr()
* step_normalize()
* step_dummy()
-- Model ------------------
Decision Tree Model Specification (classification)
Main Arguments: cost_complexity = tune()
                tree_depth = tune()
                min_n = tune()
Computational engine: rpart
Modeling with tidymodels in R

Prohledávání mřížky

Nejběžnější metoda ladění hyperparametrů

  • Vygeneruje mřížku unikátních kombinací hodnot hyperparametrů
    • Pro každou kombinaci odhadne výkon modelu pomocí křížové validace
  • Zvolí nejlepší kombinaci

 

cost_complexity tree_depth min_n
0.001 20 35
0.001 20 15
0.001 35 35
0.001 35 15
0.2 20 35
... ... ...
Modeling with tidymodels in R

Identifikace hyperparametrů

Funkce parameters() z balíčku dials

  • Přijímá objekt modelu parsnip
  • Vrací tibble s hyperparametry označenými funkcí tune(), pokud existují
    • Slouží k vytváření ladicích mřížek pomocí balíčku dials
parameters(dt_tune_model)
Collection of 3 parameters for tuning

  identifier            type     object
cost_complexity  cost_complexity nparam[+]
tree_depth       tree_depth      nparam[+]
min_n            min_n           nparam[+]
Modeling with tidymodels in R

Náhodná mřížka

Generování náhodných kombinací

  • Tato metoda zvyšuje pravděpodobnost nalezení optimálních hodnot hyperparametrů

Funkce grid_random()

  • Prvním argumentem jsou výsledky funkce parameters()
  • size určuje počet náhodných kombinací
    • Před grid_random() spusťte set.seed() pro reprodukovatelnost
set.seed(214)
grid_random(parameters(dt_tune_model),

size = 5)
# A tibble: 5 x 3
  cost_complexity  tree_depth min_n
            <dbl>      <int>  <int>
1    0.0000000758        14     39
2    0.0243               5     34
3    0.00000443          11      8
4    0.000000600          3      5
5    0.00380              5     36
Modeling with tidymodels in R

Uložení ladicí mřížky

První krok při ladění hyperparametrů

  • Vytvořte a uložte ladicí mřížku
  • dt_grid obsahuje 5 náhodných kombinací hodnot hyperparametrů
set.seed(214)
dt_grid <- grid_random(parameters(dt_tune_model),
                       size = 5)

dt_grid
# A tibble: 5 x 3
  cost_complexity  tree_depth min_n
            <dbl>      <int>  <int>
1    0.0000000758        14     39
2    0.0243               5     34
3    0.00000443          11      8
4    0.000000600          3      5
5    0.00380              5     36
Modeling with tidymodels in R

Ladění hyperparametrů s křížovou validací

Funkce tune_grid() provádí ladění hyperparametrů

Přijímá následující argumenty:

  • Objekt workflow nebo modelu parsnip
  • Objekt křížové validace, resamples
  • Ladicí mřížka, grid
  • Volitelná funkce metrics

Vrací tibble s výsledky

  • .metrics
    • Sloupcový seznam s výsledky pro každý fold
dt_tuning <- leads_tune_wkfl %>%

tune_grid(resamples = leads_folds,
grid = dt_grid,
metrics = leads_metrics)
dt_tuning
# Tuning results
# 10-fold cross-validation using stratification 
# A tibble: 10 x 4
   splits             id       .metrics         ..
   <list>            <chr>      <list>          ..
<split [896/100]>   Fold01   <tibble [15 x 7]>  ..
................    ......   ...............    ..
<split [897/99]>    Fold09   <tibble [15 x 7]>  ..
<split [897/99]>    Fold10   <tibble [15 x 7]>  ..
Modeling with tidymodels in R

Prozkoumání výsledků ladění

Funkce collect_metrics() standardně poskytuje souhrnné výsledky

  • Průměrné odhadované hodnoty metrik napříč všemi foldy pro každou kombinaci
dt_tuning %>% 
  collect_metrics()
# A tibble: 15 x 9
   cost_complexity tree_depth min_n .metric .estimator  mean     n std_err .config
             <dbl>      <int> <int> <chr>   <chr>      <dbl> <int>   <dbl> <chr>  
 1    0.0000000758         14    39 roc_auc binary     0.827    10 0.0147  Model1 
 2    0.0000000758         14    39 sens    binary     0.728    10 0.0277  Model1 
 3    0.0000000758         14    39 spec    binary     0.865    10 0.0156  Model1 
 4    0.0243                5    34 roc_auc binary     0.823    10 0.0147  Model2 
 .    ......               ..    .. ....    ......     .....    .. .....   ......
14    0.00380               5    36 sens    binary     0.747    10 0.0209  Model5 
15    0.00380               5    36 spec    binary     0.858    10 0.0161  Model5
Modeling with tidymodels in R

Pojďme ladit!

Modeling with tidymodels in R

Preparing Video For Download...