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
- Bloque 1 integrado en
main. data/processed/dataset_limpio.parquetgenerado localmente con el script del Bloque 1.
Material de Referencia
- 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
- Cree la rama
feat/b02-modelo-basedesdemainactualizada. - Implemente el script
B02_Fundamentos_ML_Clasico/entrenamiento.py, ejecutable conuv 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 entradamain()bajoif __name__ == "__main__":. Estas funciones se reutilizarán en el Bloque 3. - Cargue
data/processed/dataset_limpio.parquety defina la matriz de variables predictorasXy el vector objetivoy, excluyendo los identificadores y las variables candidatas a fuga identificadas en el Bloque 1. - 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.
- Particione los datos con
train_test_split(test_size=0.2,random_state=42y, en clasificación,stratify=y). La partición es la primera operación tras definirXey. - Preprocese los datos manualmente:
- Imputación: calcule los estadísticos definidos en el Bloque 1 (mediana, moda, etc.) exclusivamente sobre
X_trainy aplíquelos confillnaaX_trainy aX_test. - Codificación: codifique las variables categóricas con
OrdinalEncoder(handle_unknown="use_encoded_value", unknown_value=-1), ajustado exclusivamente sobreX_train.
- Imputación: calcule los estadísticos definidos en el Bloque 1 (mediana, moda, etc.) exclusivamente sobre
- Entrene un modelo de referencia:
DummyClassifier(strategy="most_frequent")en clasificación oDummyRegressor(strategy="median")en regresión. - Entrene un
RandomForestClassifieroRandomForestRegressorconrandom_state=42e hiperparámetros por defecto. - 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.
- Muestre los resultados en una tabla por salida estándar.
Contenido Obligatorio del Pull Request
- Tipo de problema y justificación.
- Tabla con las columnas: modelo, métrica en entrenamiento y métrica en prueba (modelo de referencia y Random Forest).
- Interpretación del diferencial entre entrenamiento y prueba (diagnóstico de sobreajuste) y de la mejora frente al modelo de referencia.
Criterios de Aceptación
- La partición precede a cualquier cálculo de estadísticos sobre los datos.
- Ningún parámetro de preprocesado se calcula con datos de
X_test. - La ejecución del script produce resultados idénticos en ejecuciones sucesivas.
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.