CommencezCommencez gratuitement

Recherche en grille 2D

L'inconvénient d'ajuster chaque hyperparamètre séparément, c'est la dépendance potentielle entre eux. Une meilleure approche consiste à essayer toutes les combinaisons possibles d'hyperparamètres. Cependant, dans ce cas, l'espace de recherche en grille grandit très vite. Par exemple, si nous avons 2 paramètres avec 10 valeurs possibles chacun, cela donnera 100 exécutions d'expériences.

Votre objectif est de trouver le meilleur duo d'hyperparamètres max_depth et subsample pour le modèle de Gradient Boosting. subsample est la fraction d'observations utilisée pour ajuster les arbres individuels.

On vous fournit une fonction get_cv_score() qui prend comme arguments l'ensemble d'entraînement et un dictionnaire des paramètres du modèle, et qui retourne le RMSE de validation global sur une validation croisée à 3 plis.

Cette activité fait partie du cours

Remporter une compétition Kaggle en Python

Voir le cours

Instructions de l’exercice

  • Spécifiez les grilles des valeurs possibles pour max_depth et subsample. Pour max_depth : 3, 5 et 7. Pour subsample : 0.8, 0.9 et 1.0.
  • Appliquez la fonction product() du module itertools aux grilles d'hyperparamètres. Elle retourne toutes les combinaisons possibles pour ces deux grilles.
  • Transmettez chaque couple candidat d'hyperparamètres au dictionnaire params du modèle.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

import itertools

# Hyperparameter grids
max_depth_grid = [____]
subsample_grid = [____]
results = {}

# For each couple in the grid
for max_depth_candidate, subsample_candidate in itertools.____(max_depth_grid, subsample_grid):
    params = {'max_depth': ____,
              'subsample': ____}
    validation_score = get_cv_score(train, params)
    # Save the results for each couple
    results[(max_depth_candidate, subsample_candidate)] = validation_score   
print(results)
Modifier et exécuter le code