Actividad 03 · Comparación OLS vs. Gradiente Descendente

16/10/2025

Completada

Descripción de la Actividad

Análisis comparativo de rapidez entre los métodos de Mínimos Cuadrados Ordinarios (OLS) y Gradiente Descendente.

Desarrollo de la Actividad

Comparación de Métodos: Mínimos Cuadrados Ordinarios (OLS) vs. Gradiente Descendente (GD)

Este trabajo presenta una comparación numérica y computacional entre dos métodos para estimar una regresión lineal simple:

  • Mínimos Cuadrados Ordinarios (OLS): método analítico directo.
  • Gradiente Descendente (GD): método iterativo de optimización.

1. Definición de los Métodos

1.1. Mínimos Cuadrados Ordinarios (OLS)

OLS busca los coeficientes que minimizan el error cuadrático medio (MSE) resolviendo la ecuación matricial:

$$\beta = (X'X)^{-1}X'Y$$

Es un método directo y exacto (en aritmética real), ideal para bases de datos de tamaño pequeño o moderado.

1.2. Gradiente Descendente (GD)

GD es un método iterativo que actualiza los parámetros en la dirección opuesta al gradiente del error:

$$\beta_j \leftarrow \beta_j - \alpha \frac{\partial J}{\partial \beta_j}$$

donde $\alpha$ es la tasa de aprendizaje. Con suficientes iteraciones, GD converge a una solución cercana a OLS.


2. Implementación en R

Se generaron 1000 observaciones simuladas con la relación verdadera: peso = 2.5 × talla + error.

2.1. Código OLS (Solución Analítica)

set.seed(123)
talla <- rnorm(1000, 15, 1.5)
peso  <- 2.5 * talla + rnorm(1000, 0, 2)
datos <- data.frame(talla, peso)

tiempo_ols <- system.time({
  modelo_ols <- lm(peso ~ talla, data = datos)
})

coef(modelo_ols)   # Intercepto: -1.6789
                   # Pendiente: 2.6174
tiempo_ols["elapsed"]  # 0.003 s

Resultados OLS:

  • Intercepto: −1.6789
  • Pendiente: 2.6174
  • Tiempo: 0.003 s

2.2. Código Gradiente Descendente (Iterativo)

set.seed(123)
talla <- rnorm(1000, 15, 1.5)
peso  <- 2.5 * talla + rnorm(1000, 0, 2)
n <- length(talla)

beta0 <- 0; beta1 <- 0
alpha <- 0.001; iteraciones <- 5000

for (i in 1:iteraciones) {
  y_pred <- beta0 + beta1 * talla
  error <- peso - y_pred
  grad_b0 <- (-2/n) * sum(error)
  grad_b1 <- (-2/n) * sum(talla * error)
  beta0 <- beta0 - alpha * grad_b0
  beta1 <- beta1 - alpha * grad_b1
}

beta0; beta1;  # -0.0052 ; 2.5071

Resultados GD:

  • Intercepto: −0.0052
  • Pendiente: 2.5071
  • Tiempo: 0.165 s
  • Iteraciones: 5000 (α = 0.001)

3. Comparación y Análisis

Método Tipo Ventajas Desventajas Tiempo (s) Pendiente Estimada
OLS Directo / Analítico Rápido, exacto, estable numéricamente No escala bien con millones de datos 0.003 2.6174
GD Iterativo / Aproximado Escalable a grandes datasets o modelos complejos Depende de α y número de iteraciones; más lento 0.165 2.5071

Conclusión de la comparación:

  • OLS fue aproximadamente 55 veces más rápido que GD en este experimento.
  • Ambos métodos estimaron una pendiente cercana al valor real (2.5).
  • OLS es preferible para problemas pequeños o de tamaño moderado.
  • GD es más útil en grandes volúmenes de datos o modelos sin solución analítica.

4. Conclusiones Generales

  • El método OLS obtuvo resultados más precisos en menor tiempo.
  • El Gradiente Descendente logró aproximarse, pero requirió más recursos computacionales.
  • Ambos métodos son fundamentales en Programación Numérica y Aprendizaje Automático.
  • La elección del método depende del tamaño de los datos y del tipo de problema.

5. Referencias

  1. Burden, R. & Faires, J. (2011). Numerical Analysis. Brooks/Cole.
  2. Nocedal, J. & Wright, S. (2006). Numerical Optimization. Springer.
  3. James, G., Witten, D., Hastie, T., & Tibshirani, R. (2013). An Introduction to Statistical Learning. Springer.
  4. R Core Team (2024). R: A Language and Environment for Statistical Computing. R Foundation, Vienna.