Regresión lineal múltiple

En el artículo anterior, exploramos la regresión lineal simple, que nos ayudó a entender cómo una característica (variable independiente) afecta a un objetivo (variable dependiente). Sin embargo, los problemas del mundo real suelen ser más complejos. Por ejemplo, al predecir el precio de una vivienda, no podemos fijarnos solo en el área de la casa; también debemos considerar varios factores como el número de dormitorios, la ubicación geográfica, la antigüedad, etc. En este caso, necesitamosregresión lineal múltiple。

En términos simples, la regresión lineal múltiple es una extensión natural de la regresión lineal simple; nos permite analizar simultáneamentemúltiples variables independientessobre una variable dependiente. Este artículo te llevará desde cero a comprender completamente los conceptos clave, los principios matemáticos, los métodos de implementación y las aplicaciones prácticas de la regresión lineal múltiple.


1. ¿Qué es la regresión lineal múltiple?

1.1 Conceptos clave

La regresión lineal múltiple es un método estadístico utilizado para establecermúltiples variables independientes(también llamadas características, variables explicativas) conuna variable dependiente continua(también llamada objetivo, variable de respuesta) una relación lineal.

Una analogía ilustrativa:Imagina que eres un chef y estás ajustando el sabor de una sopa (el objetivo). La regresión lineal simple es como ajustar el nivel de sal solo con la cantidad de sal. La regresión lineal múltiple, en cambio, es como controlar simultáneamente las cantidades de sal, azúcar, chile, salsa de soja y otros condimentos (características) para determinar el sabor final de la sopa. La regresión múltiple te permite analizar la contribución específica de cada condimento al sabor.

1.2 Fórmula del modelo

La expresión matemática del modelo de regresión lineal múltiple es la siguiente:

y = β₀ + β₁x₁ + β₂x₂ + ... + βₙxₙ + ε

Desglosemos cada parte de esta fórmula:

Símbolo Nombre Significado
y Variable dependiente El valor objetivo que queremos predecir (por ejemplo, el precio de la vivienda).
x₁, x₂, ..., xₙ Variable independiente Utilizadas para predecirylas características (por ejemplo, área, número de dormitorios, antigüedad).
β₀ Término de intercepto Cuando todas las variables independientes son 0,yel valor de referencia de la predicción de Y.
β₁, β₂, ..., βₙ Coeficiente de regresión Cada variable independientexᵢsu peso. Indica que:manteniendo las demás características constantes,xᵢpor cada aumento de 1 unidad en X_j,ycambia en promedioβᵢβ_j unidades.Este es el núcleo del análisis de regresión múltiple.
ε Término de error Fluctuación aleatoria que el modelo no puede explicar (por ejemplo, error de medición, factores desconocidos).

Ejemplo de interpretación de la fórmula:Supongamos que predecimos el precio de la vivienda (y) el modelo es:房价 = 50000 + 3000 * 面积 + 10000 * 卧室数 - 2000 * 房龄

  • β₀ = 50000β₀: En teoría, el precio base de una «casa» con área 0, dormitorios 0 y antigüedad 0.
  • β₁ = 3000β₁: manteniendo constantes el número de dormitorios y la antigüedad, por cada metro cuadrado adicional de área, el precio de la vivienda aumenta en promedio 3000 yuanes.
  • β₂ = 10000β₂: manteniendo constantes el área y la antigüedad, por cada dormitorio adicional, el precio de la vivienda aumenta en promedio 10000 yuanes.
  • β₃ = -2000β₃: manteniendo constantes el área y el número de dormitorios, por cada año adicional de antigüedad, el precio de la vivienda disminuye en promedio 2000 yuanes.

2. ¿Cómo "entrenar" un modelo de regresión lineal múltiple?

"Entrenar" el modelo consiste, en esencia, en encontrar un conjunto óptimo de coeficientes de regresión a partir de los datos que tenemos.(β₀, β₁, ..., βₙ), de modo que las predicciones del modelo se acerquen lo más posible a los valores reales. Este proceso se realiza normalmente medianteel método de mínimos cuadrados.

2.1 Objetivo: minimizar la función de pérdida

Usamosla suma de cuadrados de los residuoscomo función de pérdida para medir el error de predicción del modelo.RSS = Σ(yᵢ - ŷᵢ)²Donde,yᵢes elii-ésimo valor real,ŷᵢes la predicción del modelo para elii-ésima muestra.

El objetivo del entrenamiento es encontrar un conjunto de coeficientes que minimice el valor de RSS.

2.2 Proceso de resolución (forma matricial)

Cuando el número de características es grande, el uso de operaciones matriciales permite representar y resolver de manera más eficiente. El modelo puede escribirse como:Y = Xβ + εDonde:

  • Yes el vector columna que contiene todos los valores objetivo.
  • Xes la matriz de diseño; la primera columna suele ser todo 1 (correspondiente al término de intersecciónβ₀), y cada columna posterior corresponde a una característica.
  • βes el vector columna que contiene todos los coeficientes de regresión.
  • εes el vector de términos de error.

Mediante la derivación por mínimos cuadrados, se puede obtener el coeficienteβla solución óptima (solución cerrada) para β es:β = (XᵀX)⁻¹XᵀYEsta fórmula es teóricamente perfecta, pero en la programación práctica normalmente usamos bibliotecas de optimización numérica (comoscikit-learn) para calcular de manera eficiente y estable; estas se encargan automáticamente de operaciones complejas como la inversión de matrices.


3. Implementación de regresión lineal múltiple en Python

Veamos un ejemplo completo usando la popular biblioteca de aprendizaje automáticoscikit-learnpara construir un modelo de regresión lineal múltiple.

3.1 Preparación del entorno y carga de datos

Primero, asegúrate de tener instaladas las bibliotecas necesarias y carga un conjunto de datos de ejemplo.

Ejemplo

# Importar las bibliotecas necesarias
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
from sklearn.datasets import fetch_california_housing # Un conjunto de datos multivariable clásico

# Cargar el conjunto de datos de precios de viviendas de California
california = fetch_california_housing()
df = pd.DataFrame(california.data, columns=california.feature_names)
df['MedHouseVal'] = california.target # Añadir la columna objetivo: precio mediano de la vivienda

print("Forma del conjunto de datos:", df.shape)
print("\n"Primeras 5 filas de datos:")
print(df.head())
print("\n"Descripción de las características:")
print(california.DESCR[:500]) # Imprimir parte de la descripción

3.2 Exploración y preprocesamiento de datos

Antes de modelar, es fundamental comprender la situación básica de los datos.

Ejemplo

# 1. Ver la información básica de los datos
print(df.info())
print("\n"Descripción estadística básica:")
print(df.describe())

# 2. Separar características (X) y objetivo (y)
X = df.drop('MedHouseVal', axis=1) # Matriz de características: contiene todas las columnas excepto el precio de la vivienda
y = df['MedHouseVal'] # Vector objetivo: precio de la vivienda

# 3. Dividir en conjunto de entrenamiento y prueba (70% entrenamiento, 30% prueba)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
print(f"\n"Número de muestras de entrenamiento: {X_train.shape)

3.3 Crear, entrenar y evaluar el modelo

Ahora, creamos el modelo de regresión lineal, lo "ajustamos" con los datos de entrenamiento y evaluamos su rendimiento en el conjunto de prueba.

Ejemplo

# 1. Crear una instancia del modelo
model = LinearRegression()

# 2. Entrenar el modelo (ajustar los datos)
model.fit(X_train, y_train)

# 3. Realizar predicciones con el modelo entrenado
y_train_pred = model.predict(X_train)
y_test_pred = model.predict(X_test)

# 4. Evaluar el rendimiento del modelo
# Error cuadrático medio (MSE) - cuanto menor, mejor
train_mse = mean_squared_error(y_train, y_train_pred)
test_mse = mean_squared_error(y_test, y_test_pred)

# Coeficiente de determinación (R²) - cuanto más cerca de 1, mejor, indica un mayor poder explicativo del modelo
train_r2 = r2_score(y_train, y_train_pred)
test_r2 = r2_score(y_test, y_test_pred)

print("=== Evaluación del rendimiento del modelo ===")
print(f"MSE en entrenamiento: {train_mse:.4f}, R²: {train_r2:.4f}")
print(f"MSE en prueba: {test_mse:.4f}, R²: {test_r2:.4f}")

# 5. Ver los parámetros aprendidos del modelo
print("\n"=== Parámetros del modelo ===")
print(f"Intercepto (β₀): {model.intercept_:.4f}")
print("Coeficientes de regresión (β₁, β₂, ...):")
for feature, coef in zip(X.columns, model.coef_):
    print(f"  {feature}: {coef:.4f}")

3.4 Interpretación de resultados y visualización

Comprender el significado de los coeficientes y las métricas de evaluación.

Ejemplo

# Visualización: valores reales vs. predicciones (conjunto de prueba)
plt.figure(figsize=(8, 6))
plt.scatter(y_test, y_test_pred, alpha=0.5)
plt.plot([y.min(), y.max()], [y.min(), y.max()], 'r--', lw=2) # Dibujar la diagonal ideal
plt.xlabel('Precio real de la vivienda')
plt.ylabel('Precio predicho de la vivienda')
plt.title('Regresión lineal múltiple: valores reales vs. predicciones (conjunto de prueba)')
plt.grid(True, linestyle='--', alpha=0.7)
plt.show()

# Visualización: importancia de las características (aproximada mediante el valor absoluto de los coeficientes)
features = X.columns
coefs = model.coef_
plt.figure(figsize=(10, 6))
bars = plt.barh(features, np.abs(coefs)) # Usar el valor absoluto para comparar la magnitud de la influencia
plt.xlabel('Valor absoluto de los coeficientes de regresión')
plt.title('Magnitud de la influencia de las características sobre el precio de la vivienda (basada en el valor absoluto de los coeficientes)')
# Añadir etiquetas de valores a un gráfico de barras
for bar, coef in zip(bars, coefs):
    width = bar.get_width()
    plt.text(width + 0.01, bar.get_y() + bar.get_height()/2, f'{coef:.4f}', va='center')
plt.grid(True, axis='x', linestyle='--', alpha=0.7)
plt.tight_layout()
plt.show()

4. Consideraciones y desafíos de la regresión lineal múltiple

4.1 Supuestos clave

La validez del modelo de regresión lineal se basa en varios supuestos estadísticos:

  1. Relación lineal: Existe una relación lineal entre la variable independiente y la variable dependiente.
  2. Independencia: Las observaciones son independientes entre sí.
  3. Homocedasticidad: La varianza del término de error permanece constante en todas las observaciones.
  4. Normalidad: Los términos de error siguen una distribución normal.
  5. Sin multicolinealidad: No debe haber una alta correlación entre las variables independientes.

4.2 Desafíos comunes y cómo abordarlos

Desafío Descripción Posibles consecuencias Métodos de respuesta
Multicolinealidad Las características están altamente correlacionadas entre sí. Las estimaciones de los coeficientes son inestables y es difícil interpretar el impacto de una característica individual. 1. Utilizar una matriz de correlación para verificar y eliminar características altamente correlacionadas.
2. Utilizar el análisis de componentes principales (PCA) para reducir la dimensionalidad.
3. Utilizar métodos de regularización (como la regresión ridge).
Sobreajuste El modelo es demasiado complejo, ajusta perfectamente el ruido de los datos de entrenamiento y tiene un rendimiento deficiente en el conjunto de prueba. El error del conjunto de prueba es mucho mayor que el error del conjunto de entrenamiento. 1. Recopilar más datos.
2. Utilizar menos características (selección de características).
3. Utilizar regularización.
Relación no lineal La relación en los datos es inherentemente no lineal. El modelo tiene una capacidad de predicción deficiente y un valor de R² bajo. 1. Transformar las características (como características polinómicas, transformación logarítmica).
2. Utilizar modelos no lineales (como árboles de decisión, redes neuronales).

5. Práctica: consolida tu comprensión

¡Ahora te toca ponerlo en práctica! Completa los siguientes ejercicios en orden para consolidar tu comprensión de la regresión lineal múltiple.

Ejercicio 1: Interpretación del modelo

Utiliza los coeficientes del modelo obtenidos con el código anterior para responder las siguientes preguntas:

  1. ¿Qué característica tiene el mayorimpacto positivosobre el precio de la vivienda en California? (Según el valor del coeficiente)
  2. ¿Qué característica tiene unimpacto negativo?
  3. ¿Cómo se interpretaAveRoomsel coeficiente de (número promedio de habitaciones)? Describe con una oración completa.

Ejercicio 2: Diagnosticar la multicolinealidad

  1. Calcula laXmatriz de correlación de las características (df.corr())。
  2. Encuentra los pares de características cuyo valor absoluto de correlación sea mayor que 0.7. Pueden tener multicolinealidad.
  3. (Opcional) Intenta eliminar una de las características altamente correlacionadas del modelo, vuelve a entrenar y observa cómo cambian los coeficientes y la puntuación R².

Ejercicio 3: Prueba con un nuevo conjunto de datos

  1. desdesklearn.datasetsCarga otro conjunto de datos de regresión, comoload_diabetes(el conjunto de datos de diabetes).
  2. Repite los pasos de modelado de este artículo: exploración de datos, división, entrenamiento, evaluación y visualización.
  3. Compara el rendimiento de los modelos en los dos conjuntos de datos y reflexiona sobre las posibles razones.
Otras extensiones