Why this matters for ML
La regresión por mínimos cuadrados es literalmente una projection: proyectas el vector de observaciones sobre el column space de tus features, y el "error" es lo perpendicular. Las bases ortonormales hacen los cálculos estables y baratos (aparecen en QR, PCA, SVD). Este módulo es el puente directo a LA-10.
Concepts covered
- Ortogonalidad y conjuntos ortonormales
- Orthogonal projection sobre una recta y sobre un subspace
- Least squares como projection (intuición)
- Gram–Schmidt (construir bases ortonormales)
- Orthogonal matrices y la idea de QR
Intuition first
🎬 3Blue1Brown E.o.L.A. cap. 9 ("Dot products and duality"). Complementa con Strang 18.06 L15 (projections). Idea: la proyección es "la sombra" de un vector sobre un subespacio.
Theory & key results
Ortogonalidad: . Un conjunto es orthonormal si todos son ortogonales entre sí y de norma 1.
Projection sobre una recta (dirección ): la sombra de sobre es El residuo es .
Projection sobre el column space de : la matriz de proyección es es el punto del column space más cercano a . Propiedades: y .
Least squares (por qué): cuando no tiene solución exacta (más ecuaciones que incógnitas, datos ruidosos), buscas que minimiza . La solución cumple las normal equations: Geométricamente: el error óptimo es perpendicular al column space (proyección). Esto es la regresión lineal (LA-10).
Gram–Schmidt: convierte una base cualquiera en una ortonormal restando a cada vector sus proyecciones sobre los anteriores y normalizando. Produce la QR decomposition ( ortonormal, triangular superior).
Orthogonal matrix : columnas ortonormales, , así que (¡barato!). Preserva longitudes y ángulos (rota/refleja sin distorsionar). Con QR, las normal equations se resuelven de forma estable: .
Worked example
Proyecta sobre : . Residuo . ✓ (la sombra sobre el eje x es la componente x).
Notebook exercises (by hand)
- Proyecta sobre la recta dirección ; da la proyección y el residuo, y verifica que el residuo es perpendicular.
- Aplica Gram–Schmidt a para obtener dos vectores ortonormales.
- Verifica que si tiene columnas ortonormales entonces .
- Deriva las normal equations imponiendo que el residuo sea a las columnas de .
- Comprueba para con un de columnas.
- Explica en una frase por qué least squares "no resuelve" el sistema, sino que encuentra lo más cercano.
Python lab
import numpy as np
def proj(u, v):
return (u @ v) / (u @ u) * u
u = np.array([1.,1.]); v = np.array([3.,4.])
p = proj(u, v); r = v - p
print("proj:", p, " residuo:", r, " perp?", np.isclose(u @ r, 0))
# least squares vía normal equations vs. np.linalg.lstsq
A = np.array([[1.,1.],[1.,2.],[1.,3.]]); b = np.array([1.,2.,2.])
x_normal = np.linalg.solve(A.T @ A, A.T @ b)
x_lstsq, *_ = np.linalg.lstsq(A, b, rcond=None)
print("normal:", x_normal, " lstsq:", x_lstsq) # coinciden
# QR
Q, R = np.linalg.qr(A)
print("Q^T Q ~ I:\n", np.round(Q.T @ Q, 6))
Reto: implementa Gram–Schmidt a mano y compara tu con np.linalg.qr.
Examen final 📝
Intenta cada nivel antes de abrir las soluciones.
🟡 Medio
- Proyecta sobre la dirección ; da proyección y residuo, y confirma perpendicularidad.
- Verifica que y son ambas bases ortonormales de .
🟠 Medio-difícil
- Aplica Gram–Schmidt a para obtener dos vectores ortonormales.
- Demuestra que la matriz de proyección cumple y , e interpreta ambas propiedades.
🔴 Difícil
- Deriva las normal equations de dos formas: (a) imponiendo que el residuo sea ⊥ a , y (b) minimizando con cálculo (Calc-09). Confirma que dan lo mismo.
- Explica por qué resolver least squares vía QR () es numéricamente más estable que formar y resolver (pista: condition number, ).
✅ Soluciones
- . Residuo , y . ✓
- En cada par: normas 1 y dot product 0. (Segundo: ; normas .)
- . : ; residuo , normalizado .
- (proyectar dos veces = una vez). ya que es simétrica (proyección ortogonal).
- (a) . (b) mismo sistema. ✓
- Formar eleva al cuadrado el condition number (), amplificando errores de redondeo y perdiendo precisión cuando está mal condicionada. QR trabaja directamente sobre con ortogonal (que no amplifica errores, ), preservando .