Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Overfitting y underfitting, Unidad 5 — Underfitting: causas habituales, 5.2 — Feature engineering insuficiente ·

Representación inadecuada

Representación inadecuada: Un error frecuente en underfitting

Introducción

En el camino de la ciencia de datos y la inteligencia artificial, el overfitting y el underfitting son dos conceptos fundamentales que todos los desarrolladores deben entender. Mientras que el overfitting nos lleva a modelos complejos que memorizan demasiados detalles de los datos de entrenamiento, causando una mala generalización a nuevos datos, el underfitting se produce cuando nuestro modelo es demasiado simple para capturar la estructura del problema y las señales relevantes. En este artículo, exploraremos en detalle cómo la representación inadecuada puede ser un factor clave detrás de underfitting, y proporcionaremos una guía práctica para detectar y corregir estos problemas.

Explicación principal con ejemplos

La representación inadecuada se refiere a la incapacidad del modelo para capturar las características relevantes de los datos. Esto puede ocurrir por varias razones: variables poco significativas, transformaciones erróneas o incluso la falta de algunas variables críticas. Un modelo que no tiene una buena representación de los datos es incapaz de generalizar y, por lo tanto, se comporta como si no hubiera aprendido nada.

Vamos a considerar un ejemplo con un conjunto de datos de clasificación binaria donde los puntos están distribuidos en dos grupos separados por una línea recta. Si usamos un modelo lineal para entrenar estos datos sin transformaciones adicionales, el modelo podría ser inadecuado para aprender la estructura del problema:

import numpy as np
import matplotlib.pyplot as plt

# Generamos los datos
np.random.seed(0)
X = np.random.randn(100, 2)
y = (X[:, 0] + X[:, 1] > 0).astype(int)

# Graficamos la distribución de los puntos y la línea de separación ideal
plt.scatter(X[y==0][:, 0], X[y==0][:, 1], label='Clase 0')
plt.scatter(X[y==1][:, 0], X[y==1][:, 1], label='Clase 1')

# Dibujamos la línea de separación ideal
x_line = np.linspace(-3, 3)
y_line = -x_line + 2
plt.plot(x_line, y_line, 'r--', label='Línea ideal')

plt.xlabel('X1')
plt.ylabel('X2')
plt.title('Distribución de datos y línea ideal para separación binaria')
plt.legend()
plt.show()

En este ejemplo, un modelo lineal simple no puede capturar la estructura del problema porque los datos se distribuyen en una forma que excede a una simple recta. Si intentamos entrenar un modelo lineal con estos datos sin transformaciones adicionales:

from sklearn.linear_model import LogisticRegression

# Entrenamos el modelo
model = LogisticRegression()
model.fit(X, y)

# Predecimos sobre los mismos datos para visualizar cómo se comporta
y_pred = model.predict(X)
plt.scatter(X[y==0][:, 0], X[y==0][:, 1], label='Clase 0')
plt.scatter(X[y==1][:, 0], X[y==1][:, 1], label='Clase 1')

# Dibujamos la línea de separación del modelo lineal
x_line = np.linspace(-3, 3)
y_pred_line = -x_line + model.intercept_[0] / model.coef_[0][1]
plt.plot(x_line, y_pred_line, 'g--', label='Línea predicha')

plt.xlabel('X1')
plt.ylabel('X2')
plt.title('Representación inadecuada: Línea predicha del modelo lineal')
plt.legend()
plt.show()

La línea de separación generada por el modelo lineal es incapaz de seguir la estructura real de los datos, lo que resulta en un underfitting significativo.

Errores típicos / trampas

  1. Falta de variables relevantes: Un error común es omitir variables críticas que contienen información valiosa para el modelo. Esto puede ser especialmente problemático si estas variables son difíciles de identificar o no están disponibles en los datos iniciales.
  1. Transformaciones erróneas: Las transformaciones aplicadas a las variables pueden distorsionar la representación original y hacer que el modelo se vuelva inadecuado para aprender lo necesario. Por ejemplo, aplicar una transformación logarítmica a un conjunto de datos sin distribución normal puede resultar en información perdida.
  1. Seleccionar modelos incorrectos: Usar modelos con capacidad limitada como regresiones lineales o árboles de decisión simples en problemas donde las relaciones son más complejas también puede llevar a una representación inadecuada y underfitting.

Checklist accionable

  1. Identificar variables relevantes: Evalúa cuidadosamente cada variable para asegurarte de que están incluidas todas las que tienen un impacto significativo en la predicción.
  2. Realizar transformaciones adecuadas: Aplica transformaciones que muestren las relaciones correctas entre las variables y el resultado deseado, sin distorsionar la representación original.
  3. Elegir modelos adecuados: Selecciona modelos con suficiente capacidad para aprender la estructura de los datos, pero no tan complejos como para causar overfitting.
  4. Validar las transformaciones y selección del modelo: Utiliza validación cruzada y curvas de aprendizaje para asegurarte de que las transformaciones y el modelo seleccionado son efectivos.
  5. Mantener un registro detallado: Documenta todas las transformaciones aplicadas a los datos, las razones detrás de ellas, y cómo se ajustaron y validaron los modelos.

Cierre con "Siguientes pasos"

La representación inadecuada es una causa común de underfitting en modelos de machine learning. Al comprender por qué esto ocurre y cómo corregirlo, puedes mejorar significativamente la capacidad del modelo para generalizar a nuevos datos.

  • Explora transformaciones avanzadas: Considera técnicas como PCA (Análisis de Componentes Principales) o autoencoders para capturar características esenciales en datos complejos.
  • Aumenta la complejidad gradualmente: Si el modelo sigue mostrando underfitting después de aplicar transformaciones y modelos adecuados, considera incrementar gradualmente su complejidad hasta que se observe una mejora significativa en el rendimiento.
  • Investiga más sobre validación cruzada e hiperparámetros: Asegúrate de que estás utilizando validación cruzada efectiva para evaluar tu modelo y ajusta cuidadosamente los hiperparámetros para optimizar su capacidad.

Siguiendo estos pasos, podrás mejorar significativamente la representación del modelo y lograr un mejor equilibrio entre underfitting y overfitting.

Contacto

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