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