Bajo Ajuste

El bajo ajuste ocurre cuando un modelo de IA es demasiado simple para capturar la complejidad de los datos subyacentes.

En otras palabras, el modelo no se ajusta lo suficiente a los datos de entrenamiento y no puede capturar los patrones necesarios para hacer predicciones precisas en nuevos datos. Esto puede suceder por varias razones, como usar un modelo demasiado simple o no entrenarlo lo suficiente.

Características del bajo ajuste:

  1. Error alto en datos de entrenamiento: El modelo no logra ajustarse bien incluso a los datos utilizados para entrenarlo, lo que resulta en un error alto.

  2. Error alto en datos de prueba: Además del error alto en datos de entrenamiento, el modelo también tiene un rendimiento deficiente en datos que no ha visto durante el entrenamiento, es decir, en datos de prueba.

  3. Falta de capacidad para generalizar: El modelo no puede generalizar adecuadamente a nuevos datos debido a su simplicidad y falta de capacidad para capturar patrones más complejos en los datos.

El bajo ajuste indica que el modelo es demasiado simple y no puede capturar los patrones necesarios.

Ejemplo

En esteejemplo, utilizamos un modelo de regresión lineal simple para predecir el progreso de la diabetes basado en un solo atributo del conjunto de datos, lo que nos permite ilustrar cómo un modelo demasiado simple puede no capturar adecuadamente las relaciones en los datos.

Importamos los módulos necesarios

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_diabetes
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error

Cargamos el conjunto de datos

# Cargar el conjunto de datos de diabetes
diabetes = load_diabetes()
print(diabetes['DESCR'])

Selecionamos los valores X e Y

# Usar el la columna numero 3 (bmi)
X = diabetes.data[:, np.newaxis, 2]  
y = diabetes.target

Dividir los datos en conjunto de entrenamiento y prueba

X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42
)

Entrenar un modelo de regresión lineal simple

model_underfit = LinearRegression()
model_underfit.fit(X_train, y_train)

Calcular predicciones en datos de entrenamiento y prueba

y_pred_train_underfit = model_underfit.predict(X_train)
y_pred_test_underfit = model_underfit.predict(X_test)

Calcular el error cuadrático medio en datos de entrenamiento y prueba

mse_train_underfit = mean_squared_error(y_train, y_pred_train_underfit)
mse_test_underfit = mean_squared_error(y_test, y_pred_test_underfit)

Imprimir el error cuadrático medio para el bajo ajuste

print(f"Error cuadrático medio en datos de entrenamiento (bajo ajuste): {mse_train_underfit}")
print(f"Error cuadrático medio en datos de prueba (bajo ajuste): {mse_test_underfit}")

Visualizamos la predicción de los datos de entrenamiento

plt.figure(figsize=(10, 5))

plt.scatter(X_train, y_train, color='blue', label='Datos de entrenamiento')
plt.plot(X_train, y_pred_train_underfit, color='red', label='Predicciones de entrenamiento')

plt.xlabel('Característica')
plt.ylabel('Valor de salida')
plt.legend()
plt.show()

Visualizamos la predicción de los datos de test

plt.figure(figsize=(10, 5))

plt.scatter(X_test, y_test, color='green', label='Datos de prueba')
plt.plot(X_test, y_pred_test_underfit, color='orange', label='Predicciones de prueba')

plt.xlabel('Característica')
plt.ylabel('Valor de salida')
plt.legend()
plt.show()

Last updated