Optimización de Hiperparámetros en Modelos de Machine Learning
Resumen
¿Cómo se realiza el research y selección de modelos?
El proceso de investigación y selección de modelos en Machine Learning es crucial para garantizar que se utilicen los algoritmos adecuados y los mejores hiperparámetros. Utilizar la técnica de búsqueda de grilla (Grid Search) es una de las formas más efectivas de lograrlo. Esta técnica permite definir un diccionario con varios hiperparámetros y, mediante una validación cruzada, se busca el conjunto óptimo de estos.
¿Qué elementos se consideran en el setup inicial?
Modelo a Entrenar: Elegir el algoritmo base que se usará.
Hiperparámetros: Crear un diccionario de búsqueda con diferentes valores posibles.
Scoring: Definir cuál será la métrica a optimizar.
Número de Jobs: Configurar cuántos procesos simultáneos usar.
Propósito: Establecer el objetivo de optimización para los hiperparámetros.
Ejecutar este setup inicial es vital antes de sumergirse en entrenamientos más complejos. Además, los modelos baseline son una excelente manera de evaluar el punto de partida y decidir si las estrategias más complejas son necesarias.
¿Cómo manejar los errores durante el entrenamiento?
Durante el proceso de entrenamiento, es común encontrarse con errores en el código, por ejemplo, al intentar llamar métodos inexistentes. En tales casos, es esencial revisar el código, identificar la fuente del error y corregirla antes de continuar.
# Previamente teníamos el siguiente error:# model.predict()# donde debería ser algo como:model.predict(x_test)
Corrigiendo este tipo de errores básicos, se asegura un entrenamiento fluido y sin interrupciones innecesarias.
¿Cuál es el papel de la matriz de confusión?
La matriz de confusión es una herramienta poderosa que se utiliza para evaluar el rendimiento de un modelo. Esta matriz muestra claramente verdaderos positivos, falsos positivos, verdaderos negativos y falsos negativos de las predicciones:
Verdaderos Positivos: Emitidos cuando las predicciones coinciden con las etiquetas reales.
Desbalance de Datos: Se observa en la matriz cuando los datos están desproporcionados.
Este desbalance puede llevar a un overfitting, donde el modelo se ajusta demasiado a los datos de entrenamiento y no se adapta bien a nuevas entradas.
¿Cuál es la importancia de la interfaz de MLflow?
MLflow ofrece una interfaz intuitiva para observar y comparar nuestros modelos de Machine Learning. Esto ayuda a identificar métricas críticas y determinar si hay un sobreajuste:
Activar Entorno: Antes de usar MLflow, asegúrate de que el entorno esté activado correctamente.
Verificar Tracking: Debe estar posicionado donde se almacena la información de seguimiento.
Comparar Métricas: A través de MLflow puedes organizar y comparar métricas como precision y recall para tanto entrenamiento como pruebas.
La comparación efectiva y la organización de métricas importantes permiten optimizar y validar el modelo antes de su despliegue.
¿Por qué es importante la gestión de artefactos en Scikit-Learn?
Guardar modelos como artefactos, en Scikit-Learn o cualquier otra biblioteca, permite reutilizar instancias entrenadas sin necesidad de repetir entrenamientos costosos en el futuro. Esto es crucial para:
Cargar Modelos por Run ID: Facilita las pruebas y validaciones de rendimiento.
Pruebas Unitarias Pre-Despliegue: Asegura que el modelo esté listo para producción respondiendo correctamente ante estrés y validaciones.
Al integrar estos procedimientos, los profesionales pueden optimizar no solo el desarrollo de modelos, sino también su implementación y mantenimiento a largo plazo.
Es posible que al abrir mlflow ui no puedan visualizar los experimentos, esto se debe a que el .db está quedando dentro de la carpeta tracking. deben ejecutar
La tracking_uri en MLflow puede tener varios valores dependiendo de cómo se configure el seguimiento de los experimentos. Los valores más comunes son:
Local: file:///ruta/a/directory - Guarda los datos de seguimiento en el sistema de archivos local. Ideal para pruebas y desarrollo.
Remoto (Servidor MLflow): http://url_del_servidor:puerto - Conecta a un servidor MLflow remoto. Facilita la colaboración y el acceso compartido a los experimentos.
Base de datos: sqlite:///ruta/a/db o postgresql://usuario:contraseña@host:puerto/db - Permite guardar los datos en una base de datos. Adecuado para proyectos más grandes donde se requieren múltiples usuarios y persistencia.
Cada opción tiene implicaciones en términos de accesibilidad, escalabilidad y rendimiento.
simplemente con log_reg = LogisticRegression(class_weight='balanced', max_iter=9999) obtuve un muy buen rendimiento enLogisticRegressionCVSmote
Yo de ti reviso tatno en set de entrenamiento como set de tests , realmente está bien tener modelos asi , pero siempre hay que revisar ambos sets con ambos entrenamientos debido a que eso puede ser igual a overtffiting
Al entrenar modelos baseline y analizar los resultados en la interfaz del usuario de MLFlow, podemos observar:
Los experimentos,
Sus atributos (dataset, source, models),
Las métricas (entrenamiento, test, recall),
Sus parámetros y
Los tags, si los hemos creado.
Específicamente, también podemos observar también los modelos asociados a las métricas, la métrica que se requiere optimizar, requerimientos del entorno para cada experimento, los registros de los modelos (MLFlow no es para el despliegue de modelos).
a la fecha imlearn me pide pyton 3.10 pa arriba
Menos mal el ambiente lo puse con python 3.12, porque qué lío intentar en WSL. Estoy trabajando el curso en codespaces.