Bloque 3: Evaluación de Modelos Orientada al Negocio
Una métrica agregada puede ser engañosa. En un problema con un 95 % de observaciones de la clase negativa, un modelo que predice siempre esa clase obtiene un 95 % de exactitud sin ninguna capacidad predictiva. Los errores de un modelo tienen costes distintos según su tipo, y la elección de la métrica y del umbral de decisión debe derivarse de esos costes.
Principio Metodológico: El Conjunto de Prueba no se Utiliza para Tomar Decisiones
Seleccionar un umbral, una métrica o una configuración observando el conjunto de prueba convierte ese conjunto en parte del entrenamiento, y la métrica final deja de ser una estimación fiable del rendimiento en producción. Todas las decisiones de este bloque se toman sobre una partición de validación extraída del conjunto de entrenamiento. El conjunto de prueba se utiliza una única vez, para el reporte final.
Prerrequisitos
- Bloque 2 integrado en
main.
Material de Referencia
- Métricas de clasificación: Estudie el módulo de clasificación del Google Machine Learning Crash Course. El material muestra de forma interactiva el efecto del umbral de decisión sobre los tipos de error, la curva ROC y el área bajo la curva (AUC).
- Catálogo de métricas: Consulte la sección Metrics and scoring de la guía de usuario de scikit-learn como referencia de las métricas de clasificación y regresión disponibles y de su definición formal.
Actividad Práctica
- Cree la rama
feat/b03-evaluaciondesdemainactualizada. - Implemente el script
B03_Evaluacion_y_Metricas/evaluacion.py, ejecutable conuv run python -m B03_Evaluacion_y_Metricas.evaluacion. El script importa las funciones del Bloque 2 (from B02_Fundamentos_ML_Clasico.entrenamiento import ...); no duplique su código. - Aplique la misma partición entrenamiento/prueba del Bloque 2. A continuación, divida
X_trainen entrenamiento y validación contrain_test_split(test_size=0.25,random_state=42y, en clasificación, estratificada). Repita el preprocesado manual del Bloque 2 calculando sus parámetros solo sobre la nueva partición de entrenamiento y reentrene el modelo de referencia y el Random Forest. - Defina por escrito el coste de cada tipo de error en el contexto del problema asignado: qué implica un falso positivo y un falso negativo (clasificación), o un error por exceso y por defecto (regresión).
- Evalúe los modelos sobre la partición de validación:
- Clasificación:
- Genere la matriz de confusión y calcule precisión, sensibilidad (recall) y F1-Score.
- Genere las curvas ROC y Precisión-Sensibilidad con sus áreas bajo la curva. En presencia de desequilibrio de clases, priorice la curva Precisión-Sensibilidad, ya que la curva ROC puede ofrecer una visión optimista.
- Seleccione el umbral de decisión a partir de las probabilidades (
predict_proba) según el criterio de coste del paso 4. El umbral por defecto de 0,5 solo es aceptable si se justifica.
- Regresión:
- Calcule MAE, RMSE y R².
- Realice un análisis de residuos: residuos frente a valores predichos, distribución de los residuos y error por segmentos relevantes del problema.
- Justifique la elección entre MAE y RMSE según la tolerancia del negocio a errores de gran magnitud.
- Clasificación:
- Con la configuración ya fijada (métrica y, en clasificación, umbral), evalúe una única vez el modelo sobre el conjunto de prueba y compárelo con el modelo de referencia.
- Genere todas las figuras con Plotly Express.
Contenido Obligatorio del Pull Request
Informe técnico con los siguientes apartados:
- Coste de cada tipo de error en el problema de negocio.
- Métrica priorizada y justificación.
- Umbral de decisión seleccionado y justificación (solo en clasificación).
- Resultados en validación y en prueba, frente al modelo de referencia.
Criterios de Aceptación
- Ninguna decisión (métrica, umbral) se ha tomado observando el conjunto de prueba.
- El código del Bloque 2 se reutiliza mediante importación.
Transición al Bloque 4
Dos resultados de este bloque condicionan el siguiente. Primero, la métrica priorizada será el criterio (scoring) de la validación cruzada. Segundo, el paso 3 ha exigido repetir manualmente el preprocesado para una nueva partición; con validación cruzada, esa repetición sería necesaria en cada pliegue. El Bloque 4 elimina esta fuente de errores encapsulando preprocesado y modelo en un único objeto.