Actividad 03 · Comparación OLS vs. Gradiente Descendente
16/10/2025
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:
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:
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
- Burden, R. & Faires, J. (2011). Numerical Analysis. Brooks/Cole.
- Nocedal, J. & Wright, S. (2006). Numerical Optimization. Springer.
- James, G., Witten, D., Hastie, T., & Tibshirani, R. (2013). An Introduction to Statistical Learning. Springer.
- R Core Team (2024). R: A Language and Environment for Statistical Computing. R Foundation, Vienna.