UD3 · Operativización del entrenamiento | MP02 · Entrenamiento de modelos de aprendizaje automático
Búsqueda de hiperparámetros — Optimización bayesiana con Optuna
Optimización bayesiana usa los resultados de ensayos anteriores para elegir los siguientes puntos a evaluar, concentrando la búsqueda en las regiones más prometedoras.
import optuna
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.model_selection import cross_val_score
def objetivo(trial):
params = {
"n_estimators": trial.suggest_int("n_estimators", 50, 500),
"learning_rate": trial.suggest_float("learning_rate", 1e-4, 0.3, log=True),
"max_depth": trial.suggest_int("max_depth", 2, 10),
"min_samples_split": trial.suggest_int("min_samples_split", 2, 20)
}
modelo = GradientBoostingClassifier(**params, random_state=42)
return cross_val_score(modelo, X_train, y_train, cv=5, scoring="f1").mean()
estudio = optuna.create_study(direction="maximize")
estudio.optimize(objetivo, n_trials=100, timeout=3600)
print(f"Mejores params: {estudio.best_params}")