Hyperparameter-Tuning

Maschinelles Lernen mit baumbasierten Modellen in R

Sandro Raabe

Data Scientist

Hyperparameter

  • Beeinflussen Form und Komplexität von Bäumen
  • Modellparameter, die die Modellkomplexität steuern und vor dem Training festgelegt werden

Hyperparameter in parsnip-Entscheidungsbäumen:

  • min_n: minimale Anzahl an Beobachtungen zum Splitten eines Knotens
  • tree_depth: maximal erlaubte Baumtiefe
  • cost_complexity: Strafterm für Baumkomplexität
Maschinelles Lernen mit baumbasierten Modellen in R

Why tuning?

Standardwerte von parsnip:

decision_tree(min_n = 20, tree_depth = 30, cost_complexity = 0.01)
  • Funktionieren oft gut, sind aber nicht für alle Datensätze optimal

 

Ziel des Hyperparameter-Tunings ist es, die optimalen Werte zu finden.

Maschinelles Lernen mit baumbasierten Modellen in R

Tuning mit tidymodels und dem Paket tune

ein leeres Tuning-Grid

Maschinelles Lernen mit baumbasierten Modellen in R

Tuning mit tidymodels

Dummy-Spezifikation

Maschinelles Lernen mit baumbasierten Modellen in R

Tuning mit tidymodels

ein Tuning-Grid mit einem trainierten Modell pro Gitterpunkt

Maschinelles Lernen mit baumbasierten Modellen in R

Tuning mit tidymodels

der bestperformende Gitterpunkt wird ausgewählt

Maschinelles Lernen mit baumbasierten Modellen in R

Schritt 1: Platzhalter erstellen: 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() markiert Parameter fürs Tuning
  • Rest der Spezifikation wie gewohnt
Maschinelles Lernen mit baumbasierten Modellen in R

Schritt 2: Tuning-Grid erstellen: 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
  • Hilfsfunktion parameters()
  • levels: Anzahl der Gitterpunkte pro Hyperparameter
Maschinelles Lernen mit baumbasierten Modellen in R

Schritt 3: Grid tunen: tune_grid()

  • Baut ein Modell für jeden Gitterpunkt
  • Bewertet jedes Modell out-of-sample (CV)

 

Verwendung und Argumente:

  • Untunede Baum-Spezifikation
  • Modellformel
  • CV-Folds
  • Tuning-Grid
  • Metriken, verpackt in metric_set()
tune_results <- tune_grid(

spec_untuned,
outcome ~ .,
resamples = my_folds,
grid = tree_grid,
metrics = metric_set(accuracy))
Maschinelles Lernen mit baumbasierten Modellen in R

Tuning-Ergebnisse visualisieren

autoplot(tune_results)

Tuning-Ergebnisse

Maschinelles Lernen mit baumbasierten Modellen in R

Schritt 4: Beste Parameter nutzen: finalize_model()

# Die bestperformenden Parameter auswählen
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
# In die Spezifikation einsetzen
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
Maschinelles Lernen mit baumbasierten Modellen in R

Let's tune!

Maschinelles Lernen mit baumbasierten Modellen in R

Preparing Video For Download...