Skip to content
Statistical RethinkingStatistical Rethinking

6.3 Regularización

La regularización previene el sobreajuste encogiendo las estimaciones de los parámetros hacia valores más simples. En un marco bayesiano, las distribuciones a priori juegan el papel de la regularización: distribuciones a priori más fuertes atraen las estimaciones hacia la media a priori y reducen la sensibilidad al ruido.

6.3.1 Distribuciones a priori como regularización

En estadística bayesiana, la distribución a posteriori es:

p(θ∣D)∝p(D∣θ)⋅p(θ)p(\theta \mid D) \propto p(D \mid \theta) \cdot p(\theta)

La distribución a priori p(θ)p(\theta) actúa como un regularizador: atrae la distribución a posteriori hacia la media a priori. Cuanto más fuerte sea la distribución a priori, mayor será la regularización. Con una distribución a priori plana, no hay regularización (equivalente a MCO).

θ^Bayes=arg⁡max⁡θ{log⁡p(D∣θ)+log⁡p(θ)}\hat{\theta}_{\text{Bayes}} = \arg\max_\theta \left\{ \log p(D \mid \theta) + \log p(\theta) \right\}

# Demonstrate regularization with different priors
set.seed(42)
n <- 20
x <- runif(n, 0, 10)
y <- 1 + 2 * x + rnorm(n, sd = 3)

# No regularization (flat prior = OLS)

fit_ols <- lm(y ~ x)

# Weak regularization (wide prior)

# Simulate posterior with prior: beta ~ Normal(0, 10)

# This barely shrinks the estimate

library(MASS)
post_ols <- mvrnorm(1e4, mu = coef(fit_ols), Sigma = vcov(fit_ols))

# Strong regularization (narrow prior)

# Simulate posterior with prior: beta ~ Normal(0, 0.5)

# This shrinks the slope toward 0

# Approximate: posterior mean = (X'X)^{-1} (X'y + prior_precision * prior_mean)

X <- cbind(1, x)
prior*precision <- diag(c(1/10^2, 1/0.5^2)) # precision = 1/variance
prior_mean <- c(0, 0)
post_mean_strong <- solve(t(X) %*% X + prior*precision) %*% (t(X) %_% y + prior_precision %_% prior*mean)
post_cov_strong <- solve(t(X) %*% X + prior*precision) * summary(fit_ols)$sigma^2

cat("OLS (flat prior):\n")
cat(" intercept:", round(coef(fit_ols)[1], 3), "\n")
cat(" slope:", round(coef(fit_ols)[2], 3), "\n")

cat("\nStrong prior (Normal(0, 0.5) on slope):\n")
cat(" intercept:", round(post_mean_strong[1], 3), "\n")
cat(" slope:", round(post_mean_strong[2], 3), "\n")

cat("\nThe strong prior shrinks the slope toward 0.\n")
cat("This reduces overfitting at the cost of some bias.\n")
Click Run to execute this code in your browser with WebR

6.3.2 Elegir la fuerza de regularización

La fuerza de la regularización depende de la desviación estándar de la distribución a priori:

  • Distribución a priori amplia (σprior=10\sigma_\text{prior} = 10): Regularización débil, deja que los datos dominen.
  • Distribución a priori moderada (σprior=1\sigma_\text{prior} = 1): Regularización moderada, equilibra datos y distribución a priori.
  • Distribución a priori estrecha (σprior=0.1\sigma_\text{prior} = 0.1): Regularización fuerte, la distribución a priori domina.
# Compare regularization strength
set.seed(42)
n <- 20
x <- runif(n, 0, 10)
y <- 1 + 2 * x + rnorm(n, sd = 3)

X <- cbind(1, x)
sigma2 <- summary(lm(y ~ x))$sigma^2

# Different prior widths for the slope

prior_sds <- c(Inf, 10, 1, 0.5, 0.1)
labels <- c("Flat", "Wide (10)", "Moderate (1)", "Narrow (0.5)", "Very narrow (0.1)")

cat("Slope estimates with different regularization:\n")
for (i in seq*along(prior_sds)) {
if (is.infinite(prior_sds[i])) { # Flat prior = OLS
slope_est <- coef(lm(y ~ x))[2]
} else {
prior_precision <- diag(c(0, 1/prior_sds[i]^2)) # only regularize slope
post_mean <- solve(t(X) %*% X + prior*precision) %*% t(X) %*% y
slope_est <- post_mean[2]
}
cat(sprintf(" %-20s: slope = %.3f\n", labels[i], slope_est))
}

cat("\nStronger regularization shrinks the slope toward 0.\n")
Click Run to execute this code in your browser with WebR

6.3.3 Regularización y predicción

La regularización mejora la predicción fuera de muestra al reducir la varianza a costa de algo de sesgo. La fuerza óptima de regularización depende del problema — es un parámetro de ajuste que puede seleccionarse usando criterios de información.

Rethinking

La regularización no es trampa. Algunas personas piensan que las distribuciones a priori son "subjetivas" y que la regularización es "trampa". Pero la regularización es una forma principiada de incorporar lo que sabemos: que los parámetros es poco probable que sean muy grandes, que los modelos simples son preferibles, y que el ruido no debe confundirse con la señal. El golem no sabe esto — ajustará felizmente el ruido. La regularización es la forma del modelador de decirle al golem que sea cauteloso.

Overthinking

Regresión ridge y LASSO. El modelo bayesiano con una distribución a priori normal sobre los coeficientes es equivalente a la regresión ridge en la literatura frecuentista. La distribución a priori β∼Normal(0,τ2)\beta \sim \text{Normal}(0, \tau^2) corresponde a la penalización ridge λ∥β∥2\lambda \|\beta\|^2 con λ=σ2/τ2\lambda = \sigma^2 / \tau^2. Una distribución a priori de Laplace (doble exponencial) corresponde a la regresión LASSO, que puede encoger coeficientes exactamente a cero. Estas conexiones muestran que las distribuciones a priori bayesianas y las penalizaciones frecuentistas son dos caras de la misma moneda.

Resumen de la Sección 6.3

  • La regularización encoge las estimaciones de los parámetros hacia valores más simples, reduciendo el sobreajuste.
  • En modelos bayesianos, las distribuciones a priori son los regularizadores: distribuciones a priori más fuertes = más encogimiento.
  • La fuerza de regularización se controla mediante la desviación estándar de la distribución a priori.
  • La regularización mejora la predicción fuera de muestra al reducir la varianza a costa de sesgo.
  • Las distribuciones a priori normales corresponden a la regresión ridge; las de Laplace corresponden a LASSO.