Skip to content

oswaldoaqm/ML-FinalExam

Repository files navigation

Examen Final — Machine Learning (UTEC, 2026-1)

validate-notebooks Python Keras scikit--learn License: MIT

Análisis y modelado de dos datasets del anexo del curso: California Housing (regresión) y Fashion-MNIST (clasificación multiclase de imágenes). Cada notebook recorre el pipeline completo — EDA estadístico, feature engineering, progresión de modelos justificada, evaluación en test, interpretabilidad y alternativas — usando los propios hallazgos del EDA para motivar cada decisión de modelado.

Notebook Problema Ejecutar
01_california_housing Regresión (valor mediano de vivienda) Open In Colab
02_fashion_mnist Clasificación (10 clases de prendas) Open In Colab

Resultados (test set, una sola pasada)

California Housing — regresión

Modelo RMSE MAE
Baseline (media) $115,301 $90,590 -0.000
Regresión lineal $67,379 $49,135 0.659
Ridge / Lasso (mejor α por CV) $67,367 $49,092 0.659
MLP 3×64 (final) $54,153 $35,672 0.779

Toda la familia lineal se estanca en ~$67k — el cuello de botella es la no linealidad geográfica, no la varianza. La red la captura y recorta el error en 20%:

Precio por ubicación

Fashion-MNIST — clasificación 10 clases

Modelo Accuracy F1 macro
k-NN k=9 (PCA-50, 10k train) 0.8237 0.8222
Regresión logística softmax 0.8454 0.8443
SVM-RBF (PCA-50, 10k train) 0.8628 0.8619
Random Forest (200 árboles) 0.8739 0.8724
MLP + dropout + batch norm (final) 0.8833 0.8830

La progresión instancias → lineal → kernel → ensamble → red gana en cada salto de familia. El grueso del error vive en el triángulo shirt–pullover–coat, tal como lo anticipó la matriz de similitud del EDA antes de entrenar ningún modelo:

Matriz de confusión

Estructura

├── Examen_Final.ipynb                  # Anexo original del curso
├── notebooks/
│   ├── 01_california_housing.ipynb    # Regresión: EDA → FE → GD a mano → modelos → MLP
│   └── 02_fashion_mnist.ipynb         # Clasificación: EDA → PCA/t-SNE → modelos → MLP
├── aportes_maricielo/
│   └── Examen_Final_ML.ipynb          # Solución independiente: CNN+augmentation (MNIST)
│                                       #   y MLP sin FE (California Housing)
├── reports/
│   ├── figures/                        # Figuras exportadas por los notebooks
│   └── resultados_*.txt                # Salidas de texto de la ejecución verificada
├── informe/                            # Informe final (PDF)
├── tools/                              # Scripts de mantenimiento de los notebooks
└── .github/workflows/validate.yml      # CI: valida formato y ejecución de los notebooks

Trabajo grupal

aportes_maricielo/ contiene la solución independiente de Maricielo Valverde: una CNN con data augmentation sobre MNIST (98.91% en test) y un MLP sobre California Housing con las 8 features crudas (RMSE $65,416 / MAE $45,793). Como ambas soluciones de California Housing usan el mismo split oficial de Keras, son comparables sobre el mismo test set — y esa comparación (sin FE vs. con FE: −22% de MAE con una arquitectura más simple) es el eje de la discusión grupal del informe: la representación de los datos vale más que la profundidad de la red.

Reproducibilidad

pip install -r requirements.txt
jupyter nbconvert --to notebook --execute --inplace notebooks/01_california_housing.ipynb
jupyter nbconvert --to notebook --execute --inplace notebooks/02_fashion_mnist.ipynb

Semillas fijadas (seed=42; split de Keras con su semilla por defecto 113). Los datasets se descargan automáticamente vía keras.datasets en la primera ejecución. En Windows, los notebooks desactivan oneDNN (TF_ENABLE_ONEDNN_OPTS=0) para estabilidad de TensorFlow.

Aspectos destacados

  • GD, SGD y mini-batch implementados desde cero (NumPy), con la divergencia por colas pesadas documentada y resuelta vía gradient clipping + learning-rate decay.
  • Hallazgos del EDA que cambian el modelado: censura del target en $500,001 (4.6% del train), multicolinealidad con VIF ≈ 38, matriz de "confusiones esperadas" entre clases.
  • Ablaciones honestas: escaladores, arquitecturas de red, dropout+batchnorm vs early stopping — con lecturas de los resultados reales, incluso cuando rompen el libreto.
  • Interpretabilidad: permutation importance implementada a mano, pesos de la logística como plantillas visuales, análisis de errores con ejemplos.
  • Nota ética (algorithmic bias): por qué no usamos Boston Housing y por qué la ubicación es un proxy demográfico en modelos de vivienda.

About

Examen final ML (UTEC): regresión en California Housing y clasificación en Fashion-MNIST — EDA estadístico, GD desde cero, modelos clásicos vs MLP, interpretabilidad

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors