Une méthode pour trouver les meilleurs réglages d'un modèle en un minimum d'essais. Après chaque essai, elle met à jour une carte approximative des scores possibles, puis choisit le prochain essai là où le gain espéré est le plus fort. Indispensable quand chaque entraînement prend des minutes ou des heures.
Un chercheur de pétrole ne fore pas au hasard ni en quadrillage. Après chaque forage, il met à jour sa carte géologique et fore là où la chance de trouver est la plus forte, en gardant un peu de place pour explorer les zones inconnues.
On évalue une poignée de combinaisons de réglages tirées au hasard, chacune notée en validation croisée.
Un modèle statistique rapide (processus gaussien, ou estimateur TPE dans Optuna) apprend la relation entre réglages et score, avec son incertitude.
La fonction d'acquisition, par exemple le gain espéré (Expected Improvement), arbitre entre exploiter les zones prometteuses et explorer les zones incertaines.
Le nouvel essai est évalué, le modèle de substitution est mis à jour, et ainsi de suite jusqu'au budget fixé.
3 000 clients, cinq variables, un gradient boosting avec quatre réglages sensibles : taux d'apprentissage, profondeur des arbres, nombre d'arbres, part des lignes tirées par arbre. Une grille complète demanderait des centaines d'entraînements.
L'étude renvoie les réglages retenus, leur score et l'historique de tous les essais. On voit les essais se concentrer peu à peu sur la zone qui marche.
L'AUC en validation croisée note chaque essai. Sur ce jeu simple, la régression logistique atteint déjà environ 0,77 avec les mêmes blocs : si le gradient boosting réglé ne fait pas mieux, le réglage n'aura servi qu'à le confirmer.
Noms donnés pour R (ParBayesianOptimization) et Python (Optuna).
Des plages réalistes, en échelle log pour les taux et les pénalités (log=True dans Optuna). Un espace trop large gaspille des essais.
Les premiers essais sont tirés au hasard pour donner une première carte. Compter au moins deux fois le nombre de réglages.
20 à 100 essais selon le coût d'un entraînement. Optuna permet aussi un budget en temps avec timeout.
Le gain espéré (« ei ») est un bon défaut. La borne supérieure de confiance (« ucb ») pousse plus à explorer. Dans Optuna, l'échantillonneur TPE joue ce rôle.
# Score de churn : optimisation bayésienne des réglages en R
library(xgboost)
library(ParBayesianOptimization)
clients <- read.csv("clients_churn.csv")
X <- model.matrix(~ anciennete + appels_support + montant + contrat + incidents_3m, data = clients)[, -1]
dclients <- xgb.DMatrix(X, label = clients$churn)
# Fonction coûteuse à optimiser : l'AUC en validation croisée pour un jeu de réglages
objectif <- function(eta, max_depth, subsample) {
params <- list(objective = "binary:logistic", eval_metric = "auc",
eta = eta, max_depth = max_depth, subsample = subsample)
cv <- xgb.cv(params = params, data = dclients, nrounds = 400, nfold = 5,
early_stopping_rounds = 20, verbose = FALSE)
list(Score = max(cv$evaluation_log$test_auc_mean))
}
# Processus gaussien sur les essais passés + critère « gain espéré » pour choisir le suivant
set.seed(42)
res <- bayesOpt(FUN = objectif, bounds = list(eta = c(0.01, 0.3), max_depth = c(2L, 6L), subsample = c(0.5, 1)),
initPoints = 6, iters.n = 24, acq = "ei", verbose = 0)
print(getBestPars(res))
essais <- as.data.frame(res$scoreSummary)
print(head(essais[order(-essais$Score), c("Iteration", "eta", "max_depth", "subsample", "Score")], 5))
# Score de churn : optimisation bayésienne des réglages en Python (Optuna)
import optuna
import pandas as pd
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.model_selection import StratifiedKFold, cross_val_score
clients = pd.read_csv("clients_churn.csv")
X = pd.get_dummies(clients[["anciennete", "appels_support", "montant", "contrat", "incidents_3m"]], dtype=float)
y = clients["churn"]
blocs = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)
# Fonction coûteuse à optimiser : l'AUC en validation croisée pour un jeu de réglages
def objectif(essai):
reglages = {"learning_rate": essai.suggest_float("learning_rate", 0.01, 0.3, log=True),
"max_depth": essai.suggest_int("max_depth", 2, 6),
"n_estimators": essai.suggest_int("n_estimators", 50, 400),
"subsample": essai.suggest_float("subsample", 0.5, 1.0)}
modele = GradientBoostingClassifier(random_state=42, **reglages)
return cross_val_score(modele, X, y, cv=blocs, scoring="roc_auc").mean()
# Chaque nouvel essai est choisi d'après les résultats des précédents (échantillonneur TPE)
optuna.logging.set_verbosity(optuna.logging.WARNING)
etude = optuna.create_study(direction="maximize", sampler=optuna.samplers.TPESampler(seed=42))
etude.optimize(objectif, n_trials=30)
print("Meilleurs réglages :", etude.best_params)
print("AUC en validation croisée :", round(etude.best_value, 3))
print(etude.trials_dataframe()[["number", "value"]].sort_values("value", ascending=False).head(5).round(3))
C'est une méthode de réglage qui construit, au fil des essais, un modèle statistique du score en fonction des réglages. Elle s'en sert pour choisir le prochain essai le plus prometteur, au lieu de tester une grille complète ou des combinaisons au hasard. Elle atteint en général un bon réglage en beaucoup moins d'essais.
Oui, au sens large. Son échantillonneur par défaut, TPE (Tree-structured Parzen Estimator), est une méthode d'optimisation séquentielle fondée sur un modèle probabiliste des bons et des mauvais essais. Optuna propose aussi un échantillonneur à processus gaussien, et l'arrêt précoce des essais peu prometteurs (pruning).
Le grid search est simple et parallèle, mais son coût explose avec le nombre de réglages. L'optimisation bayésienne est séquentielle et plus économe : elle vaut le coup dès que chaque entraînement prend plus de quelques minutes ou que l'on règle plus de trois paramètres.
Essais fixés d'avance ou au hasard, sans apprendre des précédents. Plus simple, plus gourmand.
Voir la fiche → le moteurLe modèle de substitution classique : il prévoit le score d'un réglage et son incertitude.
Voir la fiche → l'étape d'aprèsAutomatise aussi le choix de l'algorithme. Beaucoup d'outils AutoML utilisent l'optimisation bayésienne en interne.
Voir la fiche →Dataistudio forme les équipes au machine learning et à l'IA, sur des cas concrets.
Nous utilisons des cookies de mesure d'audience et de suivi publicitaire pour comprendre la fréquentation du site et l'efficacité de nos annonces. Rien n'est déposé sans votre accord. En savoir plus