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
- Omitted Variable Bias: Olvidar variables importantes puede llevar a sesgos en los coeficientes estimados.
- Multicolinearity: Variables explicativas altamente correlacionadas pueden causar problemas con la varianza de los coeficientes y dificultar la interpretación.
- 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
- Revisar el conjunto de datos: Asegúrate de tener todos los variables relevantes.
- Explorar correlaciones: Identifica si hay multicolinealidad entre las características.
- Regularizar: Utiliza regularización para prevenir overfitting, especialmente con modelos como Ridge o Lasso.
- Ajuste del modelo: Ajusta hiperparámetros utilizando validación cruzada.
- 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.