Justera hyperparametrar

Maskininlärning med trädbaserade modeller i R

Sandro Raabe

Data Scientist

Hyperparametrar

  • Påverkar trädets form och komplexitet
  • Modellparametrar som styr modellens komplexitet och sätts innan träning

Hyperparametrar i parsnip-beslutsträd:

  • min_n: Minsta antal sampel för att dela en nod
  • tree_depth: Maximalt tillåtet djup för trädet
  • cost_complexity: Straff för trädets komplexitet
Maskininlärning med trädbaserade modeller i R

Varför justera?

Standardvärden i parsnip:

decision_tree(min_n = 20, tree_depth = 30, cost_complexity = 0.01)
  • Fungerar bra i många fall, men är inte alltid optimala för alla datamängder

 

Målet med hyperparameterjustering är att hitta de optimala hyperparametervärdena.

Maskininlärning med trädbaserade modeller i R

Justera med tidymodels och tune-paketet

ett tomt justeringsrutnät

Maskininlärning med trädbaserade modeller i R

Justera med tidymodels

en platshållarspecifikation

Maskininlärning med trädbaserade modeller i R

Justera med tidymodels

ett justeringsrutnät med en tränad modell per rutnätspunkt

Maskininlärning med trädbaserade modeller i R

Justera med tidymodels

den bäst presterande rutnätspunkten väljs ut

Maskininlärning med trädbaserade modeller i R

Steg 1: Skapa platshållare: 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() markerar parametrar för justering
  • Övrig specifikation som vanligt
Maskininlärning med trädbaserade modeller i R

Steg 2: Skapa ett justeringsrutnät: 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
  • Hjälpfunktionen parameters()
  • levels: antal rutnätspunkter per hyperparameter
Maskininlärning med trädbaserade modeller i R

Steg 3: Justera rutnätet: tune_grid()

  • Bygger en modell för varje rutnätspunkt
  • Utvärderar varje modell ut-ur-urvalet (CV)

 

Användning och argument:

  • Ojusterad trädspecifikation
  • Modellformel
  • CV-veck
  • Justeringsrutnät
  • Lista med mätvärden i metric_set()
tune_results <- tune_grid(

spec_untuned,
outcome ~ .,
resamples = my_folds,
grid = tree_grid,
metrics = metric_set(accuracy))
Maskininlärning med trädbaserade modeller i R

Visualisera justeringsresultaten

autoplot(tune_results)

justeringsresultat

Maskininlärning med trädbaserade modeller i R

Steg 4: Använd de bästa parametrarna: finalize_model()

# Select the best performing 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
# Plug them into the specification
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
Maskininlärning med trädbaserade modeller i R

Nu kör vi en övning!

Maskininlärning med trädbaserade modeller i R

Preparing Video For Download...