En este tutorial, implementamos un flujo de trabajo avanzado de Optuna que explora sistemáticamente la poda, la optimización multiobjetivo, las devoluciones de llamada personalizadas y la visualización enriquecida. A través de cada fragmento, vemos cómo Optuna nos ayuda a dar forma a espacios de búsqueda más inteligentes, acelerar los experimentos y extraer información que oriente la mejora del modelo. Trabajamos con conjuntos de datos reales, diseñamos estrategias de búsqueda eficientes y analizamos el comportamiento de las pruebas de una manera que resulta interactiva, rápida e intuitiva. Consulta los CÓDIGOS COMPLETOS aquí.
para plegar, (train_idx, val_idx) en enumerar (kf.split(X)): X_train, X_val = X[train_idx]X[val_idx]
y_tren, y_val = y[train_idx]y[val_idx]
model.fit(X_train, y_train) puntuación = model.score(X_val, y_val) puntuaciones.append(puntuación) juicio.report(np.mean(puntuaciones), fold) si prueba.should_prune(): aumentar optuna.TrialPruned() devolver np.mean(puntuaciones) estudio1 = optuna.create_study( dirección=’maximizar’, muestreador=TPESampler(semilla=42), podadora=MedianPruner(n_startup_trials=5, n_warmup_steps=1) ) estudio1.optimize(objetivo_con_poda, n_pruebas=30, show_progress_bar=True) print(estudio1.mejor_valor, estudio1.mejores_params)
Configuramos todas las importaciones principales y definimos nuestra primera función objetivo con la poda. A medida que ejecutamos la optimización de aumento de gradiente, observamos a Optuna podando activamente las pruebas más débiles y guiándonos hacia regiones de hiperparámetros más fuertes. Sentimos que la optimización se vuelve más rápida e inteligente a medida que avanza el estudio. Consulta los CÓDIGOS COMPLETOS aquí.
Pasamos a una configuración de objetivos múltiples donde optimizamos tanto la precisión como la complejidad del modelo. A medida que exploramos diferentes configuraciones, vemos cómo Optuna construye automáticamente un frente de Pareto, lo que nos permite comparar compensaciones en lugar de perseguir una puntuación única. Esto nos proporciona una comprensión más profunda de cómo interactúan entre sí las métricas en competencia. Consulta los CÓDIGOS COMPLETOS aquí.
Introducimos nuestra propia devolución de llamada de parada temprana y la conectamos a un objetivo de regresión. Observamos cómo el estudio se detiene cuando el progreso se detiene, ahorrando tiempo y cálculo. Esto nos hace sentir el poder de personalizar el flujo de Optuna para que coincida con el comportamiento de entrenamiento del mundo real. Consulta los CÓDIGOS COMPLETOS aquí.
valores = [t.value for t in study1.trials if t.value is not None]
ax.plot(valores, marcador=”o”, marcadorsize=3) ax.axhline(y=study1.best_value, color=”r”, linestyle=”–“) ax.set_title(‘Historia del estudio 1’) ax = ejes[0, 1]
importancia = optuna.importance.get_param_importances(estudio1) params = lista(importancia.keys())[:5]
valores = [importance[p] para p en parámetros]ax.barh(params, vals) ax.set_title(‘Importancia del parámetro’) ax = ejes[1, 0]
para t en estudio2.ensayos: si t.valores: ax.scatter(t.valores[0]valores t.[1]alfa=0,3) para t en estudio2.best_trials: ax.scatter(t.values[0]valores t.[1]c=”rojo”, s=90) ax.set_title(‘Frente de Pareto’) ax = ejes[1, 1]
pares = [(t.params.get(‘max_depth’, 0), t.value) for t in study1.trials if t.value]
Xv, Yv = zip(*pares) si los pares else ([], []) ax.scatter(Xv, Yv, alpha=0.6) ax.set_title(‘máxima profundidad vs precisión’) plt.tight_layout() plt.savefig(‘optuna_analysis.png’, dpi=150) plt.show()
Visualizamos todo lo que hemos ejecutado hasta ahora. Generamos curvas de optimización, importancias de parámetros, frentes de Pareto y relaciones parámetro-métricas, que nos ayudan a interpretar todo el experimento de un vistazo. A medida que examinamos los gráficos, obtenemos información sobre dónde funciona mejor el modelo y por qué. Consulta los CÓDIGOS COMPLETOS aquí.
Resumimos los resultados clave de los tres estudios, revisando la precisión, la eficiencia de la poda, las soluciones de Pareto y el MSE de regresión. Ver todo condensado en unas pocas líneas nos da una idea clara de nuestro viaje de optimización. Ahora nos sentimos seguros de poder ampliar y adaptar esta configuración para experimentos más avanzados.
En conclusión, hemos comprendido cómo construir potentes canales de optimización de hiperparámetros que van mucho más allá del simple ajuste de una sola métrica. Combinamos herramientas de poda, optimización de Pareto, parada anticipada y análisis para formar un flujo de trabajo completo y flexible. Ahora nos sentimos seguros de poder adaptar esta plantilla para cualquier modelo futuro de ML o DL que queramos optimizar, sabiendo que ahora tenemos un modelo claro y práctico para la experimentación de alta calidad basada en Optuna.
Consulta los CÓDIGOS COMPLETOS aquí. No dude en consultar nuestra página de GitHub para tutoriales, códigos y cuadernos. Además, no dude en seguirnos en Twitter y no olvide unirse a nuestro SubReddit de más de 100.000 ML y suscribirse a nuestro boletín. ¡Esperar! estas en telegrama? Ahora también puedes unirte a nosotros en Telegram.
Asif Razzaq es el director ejecutivo de Marktechpost Media Inc.. Como empresario e ingeniero visionario, Asif está comprometido a aprovechar el potencial de la inteligencia artificial para el bien social. Su esfuerzo más reciente es el lanzamiento de una plataforma de medios de inteligencia artificial, Marktechpost, que se destaca por su cobertura en profundidad del aprendizaje automático y las noticias sobre aprendizaje profundo que es técnicamente sólida y fácilmente comprensible para una amplia audiencia. La plataforma cuenta con más de 2 millones de visitas mensuales, lo que ilustra su popularidad entre el público.
🙌 Siga MARKTECHPOST: agréguenos como fuente preferida en Google.