Pourquoi Optuna plutôt que GridSearch
- L'optimisation bayésienne apprend des essais passés
- L'élagage (pruning) arrête tôt les essais peu prometteurs (économise 60-80 % de calcul)
- Le stockage persistant reprend les études entre les sessions
Exemple minimal
import optuna
def objective(trial):
params = {
'n_estimators': trial.suggest_int('n_estimators', 100, 2000),
'learning_rate': trial.suggest_float('lr', 0.001, 0.3, log=True),
'max_depth': trial.suggest_int('max_depth', 3, 10),
}
model = LGBMClassifier(**params)
return cross_val_score(model, X, y, cv=5, scoring='roc_auc').mean()
study = optuna.create_study(direction='maximize')
study.optimize(objective, n_trials=100)
Élagage avec callbacks
from optuna.integration import LightGBMPruningCallback
callback = LightGBMPruningCallback(trial, 'auc')
model.fit(X_train, y_train, callbacks=[callback])