CommencezCommencez gratuitement

Réglage bayésien des hyperparamètres avec Hyperopt

Dans cet exemple, vous allez configurer et exécuter un processus d'optimisation bayésienne des hyperparamètres avec le module Hyperopt (déjà importé sous le nom hp). Vous allez définir le domaine (semblable à la définition d'une grille pour une recherche sur grille), puis définir la fonction objectif. Enfin, vous lancerez l'optimiseur pour 20 itérations.

Vous devrez définir le domaine avec les valeurs suivantes :

  • max_depth au moyen d'une distribution quniform (entre 2 et 10, par pas de 2)
  • learning_rate au moyen d'une distribution uniform (de 0.001 à 0.9)

À noter que, pour les besoins de cet exercice, on a réduit la taille de l'échantillon de données ainsi que le nombre d'itérations d'hyperopt et du GBM. Si vous essayez cette méthode vous-même sur votre propre machine, utilisez un espace de recherche plus grand, plus d'essais, plus de validations croisées et un plus grand jeu de données pour vraiment voir la différence !

Cette activité fait partie du cours

Ajustement des hyperparamètres en Python

Voir le cours

Instructions de l’exercice

  • Créez un dictionnaire space selon le domaine indiqué ci-dessus.
  • Définissez la fonction objectif à l'aide d'un classificateur de gradient boosting.
  • Exécutez l'algorithme pour 20 évaluations (utilisez simplement l'algorithme par défaut suggéré dans les diapositives).

Exercice interactif pratique

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

# Set up space dictionary with specified hyperparameters
space = {'max_depth': hp.____('max_depth', ____, ____, ____),'learning_rate': hp.____('learning_rate', ____,____)}

# Set up objective function
def objective(params):
    params = {'max_depth': int(params[____]),'learning_rate': params[____]}
    gbm_clf = ____(n_estimators=100, **params) 
    best_score = cross_val_score(gbm_clf, X_train, y_train, scoring='accuracy', cv=2, n_jobs=4).mean()
    loss = 1 - ____
    return ____

# Run the algorithm
best = fmin(fn=____,space=space, max_evals=____, rstate=np.random.default_rng(42), algo=tpe.suggest)
print(____)
Modifier et exécuter le code