Ajuster les hyperparamètres

Machine Learning avec des modèles à base d’arbres en R

Sandro Raabe

Data Scientist

Hyperparamètres

  • Influencent la forme et la complexité des arbres
  • Paramètres du modèle qui contrôlent sa complexité et sont définis avant l'entraînement

Hyperparamètres des arbres de décision parsnip :

  • min_n : nombre minimal d'observations pour diviser un nœud
  • tree_depth : profondeur maximale autorisée de l'arbre
  • cost_complexity : pénalité de complexité de l'arbre
Machine Learning avec des modèles à base d’arbres en R

Pourquoi ajuster ?

Valeurs par défaut définies par parsnip :

decision_tree(min_n = 20, tree_depth = 30, cost_complexity = 0.01)
  • Efficaces dans de nombreux cas, mais pas toujours optimales pour tous les jeux de données

 

L'objectif de l'ajustement est de trouver l'ensemble optimal de valeurs d'hyperparamètres.

Machine Learning avec des modèles à base d’arbres en R

Ajuster avec tidymodels et le package tune

une grille d'ajustement vide

Machine Learning avec des modèles à base d’arbres en R

Ajuster avec tidymodels

spécification factice

Machine Learning avec des modèles à base d’arbres en R

Ajuster avec tidymodels

une grille d'ajustement avec un modèle entraîné par point de grille

Machine Learning avec des modèles à base d’arbres en R

Ajuster avec tidymodels

le meilleur point de grille est sélectionné

Machine Learning avec des modèles à base d’arbres en R

Étape 1 : Créer des espaces réservés : 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() marque les paramètres à ajuster
  • Le reste de la spécification est inchangé
Machine Learning avec des modèles à base d’arbres en R

Étape 2 : Créer une grille d'ajustement : 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
  • Fonction utilitaire parameters()
  • levels : nombre de points de grille par hyperparamètre
Machine Learning avec des modèles à base d’arbres en R

Étape 3 : Ajuster la grille : tune_grid()

  • Construit un modèle pour chaque point de grille
  • Évalue chaque modèle hors échantillon (CV)

 

Utilisation et arguments :

  • Spécification d'arbre non ajustée
  • Formule du modèle
  • Plis de CV
  • Grille d'ajustement
  • Liste de métriques via metric_set()
tune_results <- tune_grid(

spec_untuned,
outcome ~ .,
resamples = my_folds,
grid = tree_grid,
metrics = metric_set(accuracy))
Machine Learning avec des modèles à base d’arbres en R

Visualiser les résultats d'ajustement

autoplot(tune_results)

résultats d'ajustement

Machine Learning avec des modèles à base d’arbres en R

Étape 4 : Utiliser les meilleurs paramètres : finalize_model()

# Sélectionner les meilleurs paramètres
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
# Les intégrer dans la spécification
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 avec des modèles à base d’arbres en R

Passons à la pratique !

Machine Learning avec des modèles à base d’arbres en R

Preparing Video For Download...