Programa de Prácticas en Ingeniería de ML

Bloque 2: Modelado Predictivo Base

El rendimiento de un modelo solo es informativo si se mide sobre datos que no han intervenido en su construcción. Este bloque introduce los tres elementos mínimos de cualquier experimento de modelado: la partición entrenamiento/prueba como primera operación del flujo, la comparación frente a un modelo de referencia (baseline) y el diagnóstico del sobreajuste a partir del diferencial de error entre ambos conjuntos.

Nota Metodológica

En este bloque, la imputación y la codificación se implementan manualmente, calculando sus parámetros exclusivamente sobre el conjunto de entrenamiento. El procedimiento es correcto, pero frágil: depende de la disciplina de quien programa y debe repetirse cada vez que cambia la partición. El Bloque 4 lo sustituirá por un Pipeline. El enfoque manual es intencionado: es necesario comprender qué operaciones se ejecutan y en qué orden para entender qué automatiza un Pipeline y por qué es obligatorio.

Prerrequisitos

Material de Referencia

  1. Flujo de trabajo de modelado: Complete Intro to Machine Learning (Kaggle Learn). El curso formaliza la separación entre datos de entrenamiento y de evaluación, el concepto de sobreajuste e infraajuste y el uso de Random Forest.

Actividad Práctica

  1. Cree la rama feat/b02-modelo-base desde main actualizada.
  2. Implemente el script B02_Fundamentos_ML_Clasico/entrenamiento.py, ejecutable con uv run python -m B02_Fundamentos_ML_Clasico.entrenamiento. El script se estructura en funciones con responsabilidad única (carga, partición, preprocesado, entrenamiento y evaluación) y un punto de entrada main() bajo if __name__ == "__main__":. Estas funciones se reutilizarán en el Bloque 3.
  3. Cargue data/processed/dataset_limpio.parquet y defina la matriz de variables predictoras X y el vector objetivo y, excluyendo los identificadores y las variables candidatas a fuga identificadas en el Bloque 1.
  4. Determine el tipo de problema: clasificación si la variable objetivo es categórica, regresión si es continua. Esta decisión condiciona el modelo, las métricas y el Bloque 3.
  5. Particione los datos con train_test_split (test_size=0.2, random_state=42 y, en clasificación, stratify=y). La partición es la primera operación tras definir X e y.
  6. Preprocese los datos manualmente:
    • Imputación: calcule los estadísticos definidos en el Bloque 1 (mediana, moda, etc.) exclusivamente sobre X_train y aplíquelos con fillna a X_train y a X_test.
    • Codificación: codifique las variables categóricas con OrdinalEncoder(handle_unknown="use_encoded_value", unknown_value=-1), ajustado exclusivamente sobre X_train.
  7. Entrene un modelo de referencia: DummyClassifier(strategy="most_frequent") en clasificación o DummyRegressor(strategy="median") en regresión.
  8. Entrene un RandomForestClassifier o RandomForestRegressor con random_state=42 e hiperparámetros por defecto.
  9. Calcule la métrica base sobre los conjuntos de entrenamiento y de prueba para ambos modelos: exactitud (accuracy) en clasificación o error absoluto medio (MAE) en regresión. La exactitud se utiliza aquí de forma provisional; el Bloque 3 analiza sus limitaciones.
  10. Muestre los resultados en una tabla por salida estándar.

Contenido Obligatorio del Pull Request

Criterios de Aceptación

Transición al Bloque 3

Una métrica agregada no indica qué tipo de errores comete el modelo ni cuánto cuesta cada uno. El Bloque 3 reutiliza las funciones de este script para evaluar el modelo en función de las consecuencias de sus errores en el problema de negocio.