Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Modelos de regresión, Unidad 12 — Mini-proyecto de regresión, 12.1 — Proyecto guiado completo ·

Evaluación comparativa

Evaluación comparativa: Entrenando y evaluando varios modelos de regresión

Introducción

La evaluación comparativa de diferentes modelos de regresión es crucial para asegurar que tu modelo seleccionado no solo se ajusta bien a los datos de entrenamiento, sino que también generaliza correctamente a nuevas observaciones. Este proceso permite identificar el modelo más adecuado y robusto para resolver problemas de predicción numérica en un conjunto dado de datos.

Explicación principal con ejemplos

Para realizar una evaluación comparativa efectiva, es necesario entrenar varios modelos de regresión y utilizar diversas métricas para medir su rendimiento. Aquí te presentamos un ejemplo práctico utilizando el conjunto de datos "precio de viviendas" para predecir el precio en función del tamaño de la vivienda.

Paso 1: Importación de librerías

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression, Ridge, Lasso
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score

Paso 2: Carga y preparación de datos

# Cargar los datos
df = pd.read_csv('data/housing_prices.csv')

# Seleccionar características y etiquetas
X = df[['size']]
y = df['price']

# Dividir en conjuntos de entrenamiento y prueba
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

Paso 3: Entrenamiento de modelos

# Crear los modelos
models = {
    'Linear Regression': LinearRegression(),
    'Ridge Regression': Ridge(alpha=1),
    'Lasso Regression': Lasso(alpha=0.1),
    'Random Forest Regressor': RandomForestRegressor(n_estimators=100, random_state=42)
}

# Entrenar los modelos
for name, model in models.items():
    model.fit(X_train, y_train)

Paso 4: Evaluación de modelos

def evaluate_model(model, X_test, y_test):
    predictions = model.predict(X_test)
    mae = mean_absolute_error(y_test, predictions)
    mse = mean_squared_error(y_test, predictions)
    rmse = np.sqrt(mse)
    r2 = r2_score(y_test, predictions)

    print(f"Modelo: {name}")
    print(f"MAE: {mae:.2f}")
    print(f"MSE: {mse:.2f}")
    print(f"RMSE: {rmse:.2f}")
    print(f"R²: {r2:.2f}\n")

# Evaluar cada modelo
for name, model in models.items():
    evaluate_model(model, X_test, y_test)

Errores típicos / trampas

  1. Omitted Variable Bias: Olvidar variables importantes puede llevar a sesgos en los coeficientes estimados.
  2. Multicolinearity: Variables explicativas altamente correlacionadas pueden causar problemas con la varianza de los coeficientes y dificultar la interpretación.
  3. Overfitting vs Underfitting: Es fácil ajustarse demasiado al conjunto de entrenamiento o no ajustarse lo suficiente, lo que resulta en mala generalización a datos nuevos.

Checklist accionable

  1. Revisar el conjunto de datos: Asegúrate de tener todos los variables relevantes.
  2. Explorar correlaciones: Identifica si hay multicolinealidad entre las características.
  3. Regularizar: Utiliza regularización para prevenir overfitting, especialmente con modelos como Ridge o Lasso.
  4. Ajuste del modelo: Ajusta hiperparámetros utilizando validación cruzada.
  5. Validar el modelo: Evalúa el rendimiento en un conjunto de prueba independiente.

Cierre: Siguientes pasos

  • Documentar los resultados: Anota todos los parámetros utilizados y resultados obtenidos para futuras referencias.
  • Aplicar modelos más avanzados: Si la regresión lineal no es suficiente, considera modelos como gradient boosting o redes neuronales.
  • Iterar y mejorar: Basado en el rendimiento obtenido, ajusta tus modelos iterativamente hasta obtener un buen equilibrio entre sesgo y variabilidad.

Siguiendo estos pasos, podrás llevar a cabo una evaluación comparativa detallada de varios modelos de regresión, asegurando que el modelo elegido es no solo robusto sino también eficaz para tus necesidades específicas.

Contacto

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