CommencerCommencer gratuitement

Recherche par grille 2D

L’inconvénient d’ajuster chaque hyperparamètre indépendamment est la dépendance potentielle entre eux. Une meilleure approche consiste à tester toutes les combinaisons possibles d’hyperparamètres. Cependant, dans ce cas, l’espace de recherche de la grille croît très rapidement. Par exemple, si nous avons 2 paramètres avec 10 valeurs possibles chacun, cela donne 100 exécutions d’expériences.

Votre objectif est de trouver le meilleur couple 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 le jeu d’entraînement et un dictionnaire de paramètres du modèle comme arguments, et renvoie le score RMSE de validation global sur une validation croisée à 3 plis.

Cet exercice fait partie du cours

Gagner une compétition Kaggle en Python

Afficher le cours

Instructions

  • Définissez les grilles pour les valeurs possibles de 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 renvoie toutes les combinaisons possibles pour ces deux grilles.
  • Transmettez chaque couple de candidats d’hyperparamètres au dictionnaire params du modèle.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

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