Ir al contenido

Modelo, costo y ecuaciones normales

En simple: lee esto primero

Regresión lineal = trazar la recta (o plano) que pasa lo más cerca posible de todos los puntos, para predecir un número.

Imagínalo así

Imagina estimar el precio de una casa por su tamaño: pones los datos en un gráfico y tiras una regla encima buscando que quede lo más pegada posible a todos los puntos.

Lo que tienes que llevarte
  • El error de cada punto es la distancia vertical entre el valor real y la recta.
  • Elevamos cada error al cuadrado y los sumamos: castiga más los errores grandes y da una única mejor recta.
  • Hay una fórmula directa (ecuaciones normales) que te da esa mejor recta sin tener que probar.
Palabras raras de esta página
peso / coeficiente (w)
cuánto influye cada dato en la predicción. «Por cada m² más, el precio sube w».
sesgo / intercepto (b)
el valor de partida cuando todo lo demás es cero.
residuo
real menos predicho: lo que la recta no logró explicar.
ecuaciones normales
la fórmula que da los mejores pesos de una sola vez.
proyección
la «sombra» de un vector sobre otro: lo más cerca que se puede llegar.

Más abajo viene la versión completa, con fórmulas. Si una palabra aparece subrayada con puntos, pasa el mouse (o tócala) para ver qué significa.

La regresión lineal es el esqueleto de todo el curso: un modelo con perillas, una pérdida que medir, y dos maneras de encontrar las mejores perillas (fórmula cerrada o descenso de gradiente). Todo lo que viene después cambia una de esas piezas.

TérminoSignificado
Featurevariable de entrada que describe un ejemplo
Target (label)el número que predecimos
Peso wjw_j / sesgo bbcuánto cuenta la feature jj / nivel base
Predicción y^\hat yla salida del modelo
Residual ri=yi−y^ir_i = y_i-\hat y_ireal menos predicho, un ejemplo
MSE / RMSEmedia de residuales² / su raíz (en unidades del target)
R2R^2fracción de la variación explicada (1 = perfecto, 0 = como la media)

Con una feature el modelo es una recta y^=wx+b\hat y = wx + b; con dos, un plano y^=w1x1+w2x2+b\hat y = w_1x_1 + w_2x_2 + b; con dd, un hiperplano. Cada peso wjw_j es la pendiente a lo largo de la feature jj.

Apilamos los ejemplos como filas y agregamos una columna de unos para absorber el sesgo (w0=bw_0=b):

[1x11⋯x1,d−11x21⋯x2,d−1⋮⋮1xn1⋯xn,d−1]⏟X∈Rn×d[w0w1⋮wd−1]⏟w∈Rd=[y^1y^2⋮y^n]⏟y^∈Rn⟺y^=Xw\underbrace{\begin{bmatrix}1 & x_{11} & \cdots & x_{1,d-1}\\ 1 & x_{21} & \cdots & x_{2,d-1}\\ \vdots & & & \vdots\\ 1 & x_{n1} & \cdots & x_{n,d-1}\end{bmatrix}}_{\mathbf{X}\in\mathbb{R}^{n\times d}} \underbrace{\begin{bmatrix}w_0\\ w_1\\ \vdots\\ w_{d-1}\end{bmatrix}}_{\mathbf{w}\in\mathbb{R}^{d}} =\underbrace{\begin{bmatrix}\hat y_1\\ \hat y_2\\ \vdots\\ \hat y_n\end{bmatrix}}_{\hat{\mathbf{y}}\in\mathbb{R}^{n}} \qquad\Longleftrightarrow\qquad \hat{\mathbf{y}} = \mathbf{X}\mathbf{w}

Cada predicción es el producto punto de una fila con w\mathbf{w}: y^i=xi⊤w\hat y_i = \mathbf{x}_i^\top\mathbf{w}. Las nn predicciones salen de una multiplicación de matrices.

¿Qué significa «cerca»? Residuales al cuadrado

Sección titulada «¿Qué significa «cerca»? Residuales al cuadrado»

El residual ri=yi−y^ir_i = y_i-\hat y_i es la brecha vertical entre el punto y la recta. Sumamos sus cuadrados por tres razones:

  1. Los signos no se cancelan. Residuales crudos pueden sumar ≈ 0 incluso con una recta mala.
  2. Los errores grandes pesan más. r2r^2 crece rápido: el ajuste se esfuerza en evitar errores grandes (y por eso es sensible a outliers).
  3. Es conveniente. Una suma de cuadrados es suave y cuadrática ⇒ da una solución cerrada.
J(w)=∑i=1n(yi−y^i)2=∥y−Xw∥22,w⋆=arg⁡min⁡wJ(w)J(\mathbf{w}) = \sum_{i=1}^n (y_i-\hat y_i)^2 = \|\mathbf{y}-\mathbf{X}\mathbf{w}\|_2^2,\qquad \mathbf{w}^\star = \arg\min_\mathbf{w} J(\mathbf{w})

Mínimos cuadrados con tus manos

Mueve la pendiente w y el intercepto b hasta que el área total de los cuadrados (los residuales al cuadrado) sea mínima. Puedes arrastrar los puntos. Luego compara con la solución exacta de las ecuaciones normales.

02468100246810feature xtarget y
tu recta ŷ = wx + bresidual rᵢ = yᵢ − ŷᵢ (y su cuadrado)
J(w,b) = Σ rᵢ²8.51
mínimo posible0.86
RMSE1.031
MAE0.887
R²0.709
w⋆=∑(xi−xˉ)(yi−yˉ)∑(xi−xˉ)2=0.823,b⋆=yˉ−w⋆xˉ=1.236w^\star = \frac{\sum (x_i-\bar x)(y_i-\bar y)}{\sum (x_i-\bar x)^2} = 0.823,\qquad b^\star = \bar y - w^\star \bar x = 1.236
Si R² < 0 tu recta es peor que predecir siempre la media ȳ = 4.94. Con 1 feature, las ecuaciones normales X⊤Xw=X⊤y\mathbf{X}^\top\mathbf{X}\mathbf{w}=\mathbf{X}^\top\mathbf{y} se reducen a la fórmula de arriba.

Expandiendo, JJ es una cuadrática en w\mathbf{w}:

J(w)=w⊤(X⊤X)w−2(X⊤y)⊤w+y⊤yJ(\mathbf{w}) = \mathbf{w}^\top(\mathbf{X}^\top\mathbf{X})\mathbf{w} - 2(\mathbf{X}^\top\mathbf{y})^\top\mathbf{w} + \mathbf{y}^\top\mathbf{y}

La matriz de curvatura X⊤X\mathbf{X}^\top\mathbf{X} es semidefinida positiva: para todo v\mathbf{v}, v⊤X⊤Xv=∥Xv∥22≥0\mathbf{v}^\top\mathbf{X}^\top\mathbf{X}\mathbf{v} = \|\mathbf{X}\mathbf{v}\|_2^2\ge 0. Así que JJ se curva hacia arriba en toda dirección: un solo bowl, sin mínimos locales peores que el global. Si además X⊤X\mathbf{X}^\top\mathbf{X} es definida positiva (features no colineales), el mínimo es único.

En el fondo del bowl todas las pendientes son 0. Derivando término a término (reglas ∇w(a⊤w)=a\nabla_\mathbf{w}(\mathbf{a}^\top\mathbf{w})=\mathbf{a} y ∇w(w⊤Mw)=2Mw\nabla_\mathbf{w}(\mathbf{w}^\top\mathbf{M}\mathbf{w}) = 2\mathbf{M}\mathbf{w} para M\mathbf{M} simétrica):

∇wJ=2X⊤Xw−2X⊤y=2X⊤(Xw−y)=−2X⊤r\nabla_\mathbf{w}J = 2\mathbf{X}^\top\mathbf{X}\mathbf{w} - 2\mathbf{X}^\top\mathbf{y} = 2\mathbf{X}^\top(\mathbf{X}\mathbf{w}-\mathbf{y}) = -2\mathbf{X}^\top\mathbf{r}

Igualando a cero:

X⊤X w=X⊤y⟹w⋆=(X⊤X)−1X⊤y\boxed{\mathbf{X}^\top\mathbf{X}\,\mathbf{w} = \mathbf{X}^\top\mathbf{y}}\qquad\Longrightarrow\qquad \mathbf{w}^\star = (\mathbf{X}^\top\mathbf{X})^{-1}\mathbf{X}^\top\mathbf{y}
Derivar las ecuaciones normales, línea por línea
  1. Escribe el costo como producto interno: J(w)=(y−Xw)⊤(y−Xw)J(\mathbf{w}) = (\mathbf{y}-\mathbf{X}\mathbf{w})^\top(\mathbf{y}-\mathbf{X}\mathbf{w}).
  2. Distribuye: J=y⊤y−y⊤Xw−w⊤X⊤y+w⊤X⊤XwJ = \mathbf{y}^\top\mathbf{y} - \mathbf{y}^\top\mathbf{X}\mathbf{w} - \mathbf{w}^\top\mathbf{X}^\top\mathbf{y} + \mathbf{w}^\top\mathbf{X}^\top\mathbf{X}\mathbf{w}.
  3. Los dos términos del medio son el mismo escalar (un escalar es igual a su transpuesta): J=y⊤y−2(X⊤y)⊤w+w⊤(X⊤X)wJ = \mathbf{y}^\top\mathbf{y} - 2(\mathbf{X}^\top\mathbf{y})^\top\mathbf{w} + \mathbf{w}^\top(\mathbf{X}^\top\mathbf{X})\mathbf{w}.
  4. Deriva con las dos reglas: ∇w(a⊤w)=a\nabla_\mathbf{w}(\mathbf{a}^\top\mathbf{w}) = \mathbf{a} y ∇w(w⊤Mw)=2Mw\nabla_\mathbf{w}(\mathbf{w}^\top\mathbf{M}\mathbf{w}) = 2\mathbf{M}\mathbf{w} (M\mathbf{M} simétrica). Queda ∇J=−2X⊤y+2X⊤Xw\nabla J = -2\mathbf{X}^\top\mathbf{y} + 2\mathbf{X}^\top\mathbf{X}\mathbf{w}.
  5. Iguala a cero y divide entre 2: X⊤Xw=X⊤y\mathbf{X}^\top\mathbf{X}\mathbf{w} = \mathbf{X}^\top\mathbf{y} (ecuaciones normales).
  6. Si X⊤X\mathbf{X}^\top\mathbf{X} es invertible (columnas linealmente independientes): w⋆=(X⊤X)−1X⊤y\mathbf{w}^\star = (\mathbf{X}^\top\mathbf{X})^{-1}\mathbf{X}^\top\mathbf{y}. Como JJ es convexa, este punto crítico es el mínimo global.

La misma respuesta, vista como proyección (ruta geométrica)

Sección titulada «La misma respuesta, vista como proyección (ruta geométrica)»

Lee X\mathbf{X} por columnas: Xw=w1a1+⋯+wdad\mathbf{X}\mathbf{w} = w_1\mathbf{a}_1 + \dots + w_d\mathbf{a}_d. Cualquier predicción es una combinación de las columnas: vive en el espacio columna. El target y\mathbf{y} normalmente sobresale de ese plano; lo mejor que podemos hacer es el punto del plano más cercano a y\mathbf{y}: su proyección ortogonal.

espacio columna de X(todas las Xw posibles)a₁a₂y (target)ŷ = Xw* = Hyr = y − ŷXᵀr = 0 ⇔ XᵀXw = Xᵀyel residual es perpendicular a cada columna aⱼ de X
La predicción está atrapada en el plano de las columnas. El mejor ŷ es el punto del plano más cercano a y: su proyección ortogonal. La matriz sombrero H = X(XᵀX)⁻¹Xᵀ «le pone el gorro» a y y cumple H² = H.

Si y^\hat{\mathbf{y}} es el punto más cercano, el residual es perpendicular a cada columna: X⊤r=0\mathbf{X}^\top\mathbf{r} = \mathbf{0}, que son exactamente las ecuaciones normales. Dos derivaciones muy distintas (minimizar un bowl / bajar una perpendicular) llegan a lo mismo: por eso los mínimos cuadrados son tan centrales.

Sustituyendo w⋆\mathbf{w}^\star: y^=X(X⊤X)−1X⊤⏟Hy\hat{\mathbf{y}} = \underbrace{\mathbf{X}(\mathbf{X}^\top\mathbf{X})^{-1}\mathbf{X}^\top}_{\mathbf{H}}\mathbf{y}. H\mathbf{H} «pone el gorro» a y\mathbf{y}. Es un proyector: H2=H\mathbf{H}^2 = \mathbf{H} (proyectar dos veces = proyectar una), es simétrica, y I−H\mathbf{I}-\mathbf{H} proyecta sobre lo que sobra: r=(I−H)y\mathbf{r} = (\mathbf{I}-\mathbf{H})\mathbf{y}. Sus diagonales HiiH_{ii} son los leverages.

¿Por qué cuadrados? Máxima verosimilitud con ruido gaussiano

Sección titulada «¿Por qué cuadrados? Máxima verosimilitud con ruido gaussiano»

Modela cada target como recta + error aleatorio: yi=xi⊤w+εiy_i = \mathbf{x}_i^\top\mathbf{w} + \varepsilon_i, con εi∼iidN(0,σ2)\varepsilon_i \overset{iid}{\sim}\mathcal N(0,\sigma^2). Cada yiy_i es una muestra de una campana centrada en la recta. La verosimilitud es qué tan probables son los datos observados si la recta fuera w\mathbf{w}:

L(w)=∏i=1n12πσ2exp⁡ ⁣(−(yi−xi⊤w)22σ2)⟹log⁡L(w)=−12σ2∑i=1n(yi−xi⊤w)2+cte.L(\mathbf{w}) = \prod_{i=1}^n \frac{1}{\sqrt{2\pi\sigma^2}}\exp\!\left(-\frac{(y_i-\mathbf{x}_i^\top\mathbf{w})^2}{2\sigma^2}\right) \quad\Longrightarrow\quad \log L(\mathbf{w}) = -\frac{1}{2\sigma^2}\sum_{i=1}^n (y_i-\mathbf{x}_i^\top\mathbf{w})^2 + \text{cte.}

El log es monótono (no mueve el maximizador) y convierte el producto en suma; la constante no depende de w\mathbf{w}. Lo único que depende de w\mathbf{w} es −∑ri2-\sum r_i^2: maximizar la verosimilitud = minimizar la suma de cuadrados. Los mínimos cuadrados son lo que implica el ruido gaussiano, no una elección arbitraria. (Con ruido de Laplace saldría el error absoluto, más robusto a outliers.)

Cada punto es una muestra de una campana centrada en la recta

Suponemos yᵢ = w·xᵢ + b + εᵢ con ε ∼ 𝒩(0, σ²). Junto a cada punto se dibuja su campana; el segmento grueso es la altura de la campana en yᵢ (su verosimilitud). La verosimilitud total es el producto de esas alturas. Mueve la recta: cuando las alturas son grandes, los cuadrados son chicos.

024680246810xy00.511.52pendiente w (b fijo)valor normalizado
log-verosimilitud log L(w)suma de cuadrados SSE(w)máximo de log L = mínimo de SSE
SSE = Σ rᵢ²6.680
log L-10.752
óptimo (w, b)(0.90, 1.34)
log L = −n·log(σ√2π) − SSE/(2σ²). El primer término no depende de la recta, así que maximizar log L ⇔ minimizar SSE, para cualquier σ (mueve σ: las curvas cambian de altura pero el óptimo en w no se mueve). Por eso los mínimos cuadrados son «lo que implica» el ruido gaussiano.

Tres puntos: (0,1),(1,2),(2,2)(0,1), (1,2), (2,2). Ajusta y^=w0+w1x\hat y = w_0 + w_1 x con las ecuaciones normales.

Solución paso a paso

X=[101112]\mathbf{X} = \begin{bmatrix}1&0\\1&1\\1&2\end{bmatrix}, y=(1,2,2)⊤\mathbf{y} = (1,2,2)^\top.

X⊤X=[3335]\mathbf{X}^\top\mathbf{X} = \begin{bmatrix}3&3\\3&5\end{bmatrix}, X⊤y=[56]\mathbf{X}^\top\mathbf{y} = \begin{bmatrix}5\\6\end{bmatrix}.

Resolviendo [3335]w=[56]\begin{bmatrix}3&3\\3&5\end{bmatrix}\mathbf{w} = \begin{bmatrix}5\\6\end{bmatrix}: de la resta de ecuaciones, 2w1=1⇒w1=0.52w_1 = 1 \Rightarrow w_1 = 0.5; luego 3w0+1.5=5⇒w0=7/6≈1.1673w_0 + 1.5 = 5 \Rightarrow w_0 = 7/6 \approx 1.167.

Residuales: r=(1−1.167, 2−1.667, 2−2.167)=(−0.167, 0.333, −0.167)r = (1-1.167,\ 2-1.667,\ 2-2.167) = (-0.167,\ 0.333,\ -0.167). Verifica X⊤r=(0, 0.333−0.333)=0\mathbf{X}^\top\mathbf{r} = (0,\ 0.333-0.333) = \mathbf{0} ✔ (ortogonalidad).

Calculadora: ecuaciones normales a mano

Edita los puntos (o agrega/quita). Cada matriz intermedia se recalcula: así puedes verificar tus ejercicios de examen. Con λ > 0 ves cómo ridge suma λ a la diagonal (sin penalizar el sesgo).

x1y1x2y2x3y3
X=[101112]y=[122]\mathbf{X} = \begin{bmatrix}1 & 0 \\ 1 & 1 \\ 1 & 2\end{bmatrix}\qquad \mathbf{y} = \begin{bmatrix}1 \\ 2 \\ 2\end{bmatrix}
X⊤X=[n∑xi∑xi∑xi2]=[3335]X⊤y=[∑yi∑xiyi]=[56]\mathbf{X}^\top\mathbf{X} = \begin{bmatrix} n & \sum x_i\\ \sum x_i & \sum x_i^2\end{bmatrix} = \begin{bmatrix}3 & 3 \\ 3 & 5\end{bmatrix}\qquad \mathbf{X}^\top\mathbf{y} = \begin{bmatrix}\sum y_i\\ \sum x_iy_i\end{bmatrix} = \begin{bmatrix}5 \\ 6\end{bmatrix}
det⁡=3⋅5−32=6(⋅)−1=16[5−3−33]\det = 3\cdot5 - 3^2 = 6\qquad (\cdot)^{-1} = \frac{1}{6}\begin{bmatrix}5 & -3\\ -3 & 3\end{bmatrix}
w⋆=(⋅)−1X⊤y=[1.1670.500]⇒y^=1.167+0.500 x\mathbf{w}^\star = (\cdot)^{-1}\mathbf{X}^\top\mathbf{y} = \begin{bmatrix}1.167 \\ 0.500\end{bmatrix}\quad\Rightarrow\quad \hat y = 1.167 + 0.500\,x
r=y−Xw⋆=[−0.1670.333−0.167]X⊤r=[00]\mathbf{r} = \mathbf{y}-\mathbf{X}\mathbf{w}^\star = \begin{bmatrix}-0.167 \\ 0.333 \\ -0.167\end{bmatrix}\qquad \mathbf{X}^\top\mathbf{r} = \begin{bmatrix}0 \\ 0\end{bmatrix}
w₀ (intercepto)1.167
w₁ (pendiente)0.500
SSE0.167
Fíjate en Xᵀr = 0: el residual es perpendicular a las dos columnas de X (la de unos y la de x). Eso es exactamente lo que dicen las ecuaciones normales; la primera componente también implica que los residuales suman 0.

Autoevaluación

0/5 correctas · 0 respondidas
1. El residual del punto ii es…
2. ¿Por qué X⊤X\mathbf{X}^\top\mathbf{X} garantiza un costo convexo?
3. Geométricamente, y^=Xw⋆\hat{\mathbf{y}} = \mathbf{X}\mathbf{w}^\star es…
4. La matriz sombrero cumple…
5. Minimizar la suma de cuadrados equivale a máxima verosimilitud si el ruido es…
import numpy as np
from sklearn.linear_model import LinearRegression
X1 = np.c_[np.ones(len(X)), X] # columna de unos = sesgo
w = np.linalg.solve(X1.T @ X1, X1.T @ y) # ecuaciones normales (mejor que inv)
w_lstsq, *_ = np.linalg.lstsq(X1, y, rcond=None) # robusto si XᵀX es casi singular
model = LinearRegression().fit(X, y) # lo mismo con scikit-learn
print(model.intercept_, model.coef_) # = w[0], w[1:]
H = X1 @ np.linalg.inv(X1.T @ X1) @ X1.T # matriz sombrero (solo para n pequeño)
assert np.allclose(H @ H, H) # proyector: H² = H

Fuente ·ML_Course_Linear_Regression.pdf (Lecture 02, slides 1–21) · ML_Course/session-02a-model-and-cost.ipynb · ML_Course/session-02b-normal-equations.ipynb