Formulación matricial de la regresión lineal
Introducción
La regresión lineal es una técnica fundamental en machine learning y deep learning, utilizada para predecir valores continuos. Cuando se aplican conceptos de álgebra lineal a la regresión lineal, se puede obtener una formulación matricial que facilita su implementación y optimización computacional. En esta unidad del curso, exploraremos cómo representar y resolver problemas de regresión lineal en términos de matrices.
Explicación principal con ejemplos
En la regresión lineal, buscamos modelar una relación lineal entre una variable dependiente \(y\) y una o varias variables independientes \(x\). La ecuación general es:
\[ y = X \beta + \epsilon \]
donde:
- \(y\) es un vector de salidas reales.
- \(X\) es la matriz de características, donde cada fila representa un ejemplo y cada columna una característica.
- \(\beta\) son los coeficientes del modelo que queremos estimar.
- \(\epsilon\) es el error aleatorio.
La formulación matricial simplifica este proceso. Para obtener los coeficientes \(\beta\), se puede resolver la ecuación normal:
\[ X^T X \beta = X^T y \]
donde:
- \(X^T\) denota la transpuesta de \(X\).
Ejemplo
Supongamos que tenemos un conjunto de datos con dos características (\(x_1, x_2\)) y una variable dependiente \(y\):
| \(x_1\) | \(x_2\) | \(y\) | |---------|---------|-------| | 1 | 3 | 4 | | 2 | 5 | 7 | | 3 | 6 | 9 |
Representamos estos datos en matrices:
\[ X = \begin{bmatrix} 1 & 3 \\ 2 & 5 \\ 3 & 6 \end{bmatrix}, \quad y = \begin{bmatrix} 4 \\ 7 \\ 9 \end{bmatrix} \]
Aplicando la fórmula, obtenemos:
\[ X^T X = \begin{bmatrix} 1 & 2 & 3 \\ 3 & 5 & 6 \end{bmatrix} \begin{bmatrix} 1 & 3 \\ 2 & 5 \\ 3 & 6 \end{bmatrix} = \begin{bmatrix} 14 & 30 \\ 30 & 70 \end{bmatrix} \]
\[ X^T y = \begin{bmatrix} 1 & 2 & 3 \\ 3 & 5 & 6 \end{bmatrix} \begin{bmatrix} 4 \\ 7 \\ 9 \end{bmatrix} = \begin{bmatrix} 40 \\ 98 \end{bmatrix} \]
Entonces, la ecuación normal se convierte en:
\[ \beta = (X^T X)^{-1} X^T y \]
Calculando \( (X^T X)^{-1} \) y multiplicándolo por \(X^T y\), obtenemos los coeficientes \(\beta\).
Bloque de código
import numpy as np
# Datos
X = np.array([[1, 3], [2, 5], [3, 6]])
y = np.array([4, 7, 9])
# Formulación matricial
XT_X = np.dot(X.T, X)
beta = np.linalg.solve(XT_X, np.dot(X.T, y))
print("Coeficientes beta:", beta)
Errores típicos / trampas
- Condiciones mal condicionadas: Si \(X^T X\) es mal condicionado (tiene valores de autovalor muy grandes), el problema puede ser instable y los coeficientes estimados pueden tener errores significativos.
- Errores en la transpuesta: Es fácil cometer errores al trabajar con las matrices transpuestas, especialmente si se trabaja con código no vectorizado o mixto.
- Dimensión incorrecta de \(X\): La matriz \(X\) debe ser compatible en términos de dimensiones para realizar operaciones como la multiplicación y la transposición correctamente.
Checklist accionable
- Verifica que todas las características estén normalizadas.
- Asegúrate de que \(X^T X\) es invertible antes de resolver la ecuación.
- Usa librerías optimizadas para calcular inversas y productos matriciales.
- Verifica que los datos están correctamente transpuestos en cada paso.
- Comprueba las dimensiones de las matrices resultantes después de cada operación.
Siguientes pasos
- Implementa la regresión lineal matricial con tu propio conjunto de datos.
- Prueba el modelo con datos sintéticos para validar su funcionamiento.
- Experimenta con diferentes normalizaciones y técnicas para mejorar la condición del sistema.