Ottimizzare gli iperparametri

Machine Learning con modelli ad albero in R

Sandro Raabe

Data Scientist

Iperparametri

  • Influenzano forma e complessità degli alberi
  • Parametri che controllano la complessità del modello e si impostano prima dell’addestramento

Iperparametri negli alberi parsnip:

  • min_n: numero minimo di campioni per dividere un nodo
  • tree_depth: profondità massima consentita
  • cost_complexity: penalità per la complessità
Machine Learning con modelli ad albero in R

Perché fare tuning?

Valori predefiniti impostati da parsnip:

decision_tree(min_n = 20, tree_depth = 30, cost_complexity = 0.01)
  • Funzionano spesso, ma non sono ottimali per tutti i dataset

 

Obiettivo del tuning: trovare il set ottimale di iperparametri.

Machine Learning con modelli ad albero in R

Tuning con tidymodels usando il pacchetto tune

una griglia di tuning vuota

Machine Learning con modelli ad albero in R

Tuning con tidymodels

specifica fittizia

Machine Learning con modelli ad albero in R

Tuning con tidymodels

una griglia di tuning con un modello addestrato per ogni punto griglia

Machine Learning con modelli ad albero in R

Tuning con tidymodels

viene selezionato il punto della griglia con le prestazioni migliori

Machine Learning con modelli ad albero in R

Step 1: Crea i segnaposto: 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() indica i parametri da ottimizzare
  • Il resto della specifica resta invariato
Machine Learning con modelli ad albero in R

Step 2: Crea una griglia: 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
  • Funzione helper parameters()
  • levels: numero di punti griglia per ogni iperparametro
Machine Learning con modelli ad albero in R

Step 3: Ottimizza la griglia: tune_grid()

  • Costruisce un modello per ogni punto griglia
  • Valuta ogni modello out-of-sample (CV)

 

Uso e argomenti:

  • Spec dell’albero non ottimizzata
  • Formula del modello
  • Fold di CV
  • Griglia di tuning
  • Elenco metriche in metric_set()
tune_results <- tune_grid(

spec_untuned,
outcome ~ .,
resamples = my_folds,
grid = tree_grid,
metrics = metric_set(accuracy))
Machine Learning con modelli ad albero in R

Visualizza i risultati del tuning

autoplot(tune_results)

risultati del tuning

Machine Learning con modelli ad albero in R

Step 4: Usa i migliori parametri: finalize_model()

# Seleziona i parametri con prestazioni migliori
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
# Inseriscili nella specifica
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 con modelli ad albero in R

Facciamo tuning!

Machine Learning con modelli ad albero in R

Preparing Video For Download...