Recherche par grille et aléatoire avec H2O

Ajustement d'hyperparamètres en R

Dr. Shirin Elsinghorst

Senior Data Scientist

Hyperparamètres dans les modèles H2O

  • Hyperparamètres pour le Gradient Boosting :
?h2o.gbm
  • ntrees : Nombre d'arbres. Par défaut : 50.

  • max_depth : Profondeur maximale des arbres. Par défaut : 5.

  • min_rows : Nombre minimal d'observations (pondérées) dans une feuille. Par défaut : 10.

  • learn_rate : Taux d'apprentissage (de 0.0 à 1.0). Par défaut : 0.1.

  • learn_rate_annealing : Réduit le taux d'apprentissage de ce facteur après chaque arbre (p. ex. 0.99 ou 0.999). Par défaut : 1.
Ajustement d'hyperparamètres en R

Préparer nos données pour la modélisation avec H2O

  • Convertir en trame H2O
seeds_data_hf <- as.h2o(seeds_data)
  • Identifier les caractéristiques et la cible
y <- "seed_type"
x <- setdiff(colnames(seeds_data_hf), y)
  • Diviser les données en ensembles d'entraînement, de test et de validation
sframe <- h2o.splitFrame(data = seeds_data_hf, ratios = c(0.7, 0.15), seed = 42)
train <- sframe[[1]]
valid <- sframe[[2]]
test <- sframe[[3]]
Ajustement d'hyperparamètres en R

Définir une grille d'hyperparamètres

  • Hyperparamètres GBM
gbm_params <- list(ntrees = c(100, 150, 200), max_depth = c(3, 5, 7), learn_rate = c(0.001, 0.01, 0.1))
  • Fonction h2o.grid
gbm_grid <- h2o.grid("gbm", 
                     grid_id = "gbm_grid",
                     x = x, 
                     y = y,
                     training_frame = train,
                     validation_frame = valid,
                     seed = 42,
                     hyper_params = gbm_params)
  • Examiner les résultats avec h2o.getGrid
Ajustement d'hyperparamètres en R

Examiner un objet de grille

  • Examiner les résultats du modèle gbm_grid avec la fonction h2o.getGrid.

  • Obtenir la grille triée par exactitude de validation

gbm_gridperf <- h2o.getGrid(grid_id = "gbm_grid", sort_by = "accuracy", decreasing = TRUE)
ID de la grille : gbm_grid 
Hyperparamètres utilisés : 
  -  learn_rate 
  -  max_depth 
  -  ntrees 
Nombre de modèles : 27 
Nombre d'échecs : 0 

Résumé de la recherche d'hyperparamètres : trié par exactitude décroissante
Ajustement d'hyperparamètres en R

Extraire le meilleur modèle d'une grille

  • Le meilleur modèle GBM selon l'exactitude de validation a l'ID en position 1
best_gbm <- h2o.getModel(gbm_gridperf@model_ids[[1]])
  • Voici les hyperparamètres du meilleur modèle :
print(best_gbm@model[["model_summary"]])
Résumé du modèle : 
 number_of_trees number_of_internal_trees model_size_in_bytes min_depth
             200                      600              100961         2 
 max_depth mean_depth min_leaves max_leaves mean_leaves
         7    5.22667          3         10     8.38833
Ajustement d'hyperparamètres en R

Extraire le meilleur modèle d'une grille

  • best_gbm est un modèle H2O régulier et peut être utilisé comme tel !
h2o.performance(best_gbm, test)
MSE : (extraire avec `h2o.mse`) 0.04761904
RMSE : (extraire avec `h2o.rmse`) 0.2182179
Logloss : (extraire avec `h2o.loglos
Ajustement d'hyperparamètres en R

Recherche aléatoire avec H2O

  • En plus de la grille d'hyperparamètres, ajouter des critères de recherche :
gbm_params <- list(ntrees = c(100, 150, 200),
                   max_depth = c(3, 5, 7),
                   learn_rate = c(0.001, 0.01, 0.1))

search_criteria <- list(strategy = "RandomDiscrete", max_runtime_secs = 60, seed = 42)
gbm_grid <- h2o.grid("gbm", grid_id = "gbm_grid", x = x, y = y, training_frame = train, validation_frame = valid, seed = 42, hyper_params = gbm_params, search_criteria = search_criteria)
Ajustement d'hyperparamètres en R
search_criteria <- list(strategy = "RandomDiscrete", 
                        stopping_metric = "mean_per_class_error", 
                        stopping_tolerance = 0.0001, 
                        stopping_rounds = 6)

gbm_grid <- h2o.grid("gbm", x = x, y = y, training_frame = train, validation_frame = valid, seed = 42, hyper_params = gbm_params, search_criteria = search_criteria)
Détails de la grille H2O
================
ID de la grille : gbm_grid 
Hyperparamètres utilisés : 
  -  learn_rate 
  -  max_depth 
  -  ntrees 
Nombre de modèles : 30 
Nombre d'échecs : 0
Ajustement d'hyperparamètres en R

Passons à la pratique !

Ajustement d'hyperparamètres en R

Preparing Video For Download...