Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Overfitting y underfitting, Unidad 12 — Mini-proyecto de diagnóstico, 12.1 — Proyecto guiado ·

Conclusiones razonadas

Conclusiones razonadas

Introducción

Después de haber entrenado varios modelos y analizado sus errores a lo largo de la unidad, es crucial reflexionar sobre los resultados obtenidos. El objetivo es no solo identificar problemas en nuestros modelos sino también entender por qué ocurren esos problemas para evitarlos en el futuro. Este artículo guía a través del proceso de análisis detallado y la derivación razonada de conclusiones.

Explicación principal con ejemplos

Durante el proyecto guiado, entrenamos varios modelos utilizando diferentes técnicas para combatir overfitting y underfitting. Tomemos como ejemplo un modelo de árbol de decisión simple en un conjunto de datos de clasificación binaria:

from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
model = DecisionTreeClassifier(max_depth=5)
model.fit(X_train, y_train)

# Evaluación del modelo
from sklearn.metrics import accuracy_score

y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f'Precisión del modelo: {accuracy}')

En este ejemplo, ajustamos un árbol de decisión con una profundidad máxima de 5. La precisión obtenida en el conjunto de prueba parece alta, pero es importante analizar si esto es debido a una buena generalización o simplemente a overfitting.

Errores típicos / trampas

  1. Ajustar al test: Un error común es optimizar directamente en el conjunto de test, lo que resulta en modelos engañosamente buenos pero ineficaces en nuevas observaciones no vistas.
  1. Sobreinterpretación del overfitting: A menudo se confunde el overfitting con un modelo complejo que memoriza los datos de entrenamiento perfectamente. Sin embargo, es posible que una modelización más simple también sobreajuste si no tiene suficiente capacidad para capturar la señal.
  1. Desatención de la validación cruzada: Ignorar o mal aplicar técnicas como la validación cruzada puede dar resultados erróneos y confiables. Los errores de validación pueden ser mucho más bajos que los del test, lo cual sugiere una mala evaluación.

Checklist accionable

  1. Separar correctamente los datos: Verifica que el conjunto de entrenamiento, validación y prueba estén bien separados para evitar engaños en la medición.
  1. Validación cruzada: Implementa validación cruzada para obtener una estimación más precisa del rendimiento del modelo.
  1. Interpretar los errores: Analiza detalladamente por qué el modelo falla y si esos fallos son consistentes con las predicciones en diferentes conjuntos de datos.
  1. Comparar modelos: Haz un análisis de comparación entre varios modelos para identificar el que mejor se adapta a la generalización deseada sin sobreajuste ni subajuste.
  1. Regularización y simplificación: Aplica técnicas de regularización como L1, L2 o early stopping si hay signos de overfitting.
  1. Aumentar datos o mejora de características: Busca formas de aumentar el tamaño del conjunto de entrenamiento o mejorar las características utilizadas para reducir la posibilidad de underfitting.

Cierre

Siguientes pasos

  1. Evaluación y validación avanzada: Avanzar a la unidad 10 — Evaluación correcta para evitar engaños, donde aprenderás técnicas más sofisticadas de validación.
  1. Feature engineering más profundo: Progresar al tema de feature engineering en la unidad 7 — Underfitting: causas habituales, donde mejorarás el diseño y selección de características para modelos más precisos.
  1. Modelos avanzados: Explorar unidades posteriores como Unidad 8 y Unidad 9 para modelar casos con modelos lineales y redes neuronales.

Siguiendo estos pasos, podrás construir una comprensión sólida sobre cómo identificar y corregir overfitting y underfitting en tus modelos de machine learning.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).