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
Instructions de l’exercice
- Spécifiez les grilles des valeurs possibles pour
max_depthetsubsample. Pourmax_depth: 3, 5 et 7. Poursubsample: 0.8, 0.9 et 1.0. - Appliquez la fonction
product()du moduleitertoolsaux grilles d'hyperparamètres. Elle retourne toutes les combinaisons possibles pour ces deux grilles. - Transmettez chaque couple candidat d'hyperparamètres au dictionnaire
paramsdu 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)