Skip to content
Statistical RethinkingStatistical Rethinking

6.1 El problema de los parámetros

Un modelo con más parámetros ajusta mejor los datos muestrales pero puede predecir peor los datos futuros. El sobreajuste es el problema central del modelado estadístico, y surge porque optimizamos el modelo para los datos que tenemos en lugar de los datos que veremos.

6.1.1 Sobreajuste

El sobreajuste ocurre cuando un modelo aprende el ruido de la muestra en lugar de la señal. Un modelo con suficientes parámetros puede ajustar cualquier conjunto de datos perfectamente, pero generalizará pobremente a datos nuevos.

Devianza de entrenamiento<Devianza de prueba(sobreajuste)\text{Devianza de entrenamiento} < \text{Devianza de prueba} \quad \text{(sobreajuste)}

# Demonstrate overfitting
# More parameters always improve training fit but may hurt test fit

set.seed(42)
n <- 20

# Generate simple data: y = 1 + 2x + noise

x <- runif(n, 0, 10)
y <- 1 + 2 * x + rnorm(n, sd = 2)

# Split into training and test

train_idx <- 1:15
test_idx <- 16:20

x_train <- x[train_idx]
y_train <- y[train_idx]
x_test <- x[test_idx]
y_test <- y[test_idx]

# Fit models of increasing complexity

degrees <- 1:6
train_error <- numeric(length(degrees))
test_error <- numeric(length(degrees))

for (i in seq_along(degrees)) {
fit <- lm(y_train ~ poly(x_train, degrees[i], raw = TRUE))
train_error[i] <- mean((y_train - predict(fit))^2)
test_error[i] <- mean((y_test - predict(fit, data.frame(x_train = x_test)))^2)
}

# Plot

plot(degrees, train_error, type = "b", pch = 16, col = "steelblue", lwd = 2,
xlab = "Polynomial degree", ylab = "Mean squared error",
main = "Overfitting: training vs test error", ylim = c(0, max(test_error) * 1.1))
lines(degrees, test_error, type = "b", pch = 17, col = "firebrick", lwd = 2)
legend("topleft", legend = c("Training error", "Test error"),
col = c("steelblue", "firebrick"), pch = c(16, 17), lwd = 2)

cat("Training error decreases with complexity\n")
cat("Test error decreases then increases (overfitting)\n")
Click Run to execute this code in your browser with WebR

6.1.2 Subajuste

El subajuste es el problema opuesto: el modelo es demasiado simple para capturar la señal. Un modelo subajustado tiene alto sesgo pero baja varianza. El objetivo es encontrar el punto óptimo — un modelo que capture la señal sin aprender el ruido.

# Underfitting vs overfitting
set.seed(42)
n <- 50
x <- runif(n, 0, 10)
# True relationship: quadratic
y <- 1 + 2 * x - 0.1 * x^2 + rnorm(n, sd = 1)

# Underfit: linear model

m1 <- lm(y ~ x)

# Just right: quadratic model

m2 <- lm(y ~ x + I(x^2))

# Overfit: degree 10

m10 <- lm(y ~ poly(x, 10, raw = TRUE))

cat("Underfit (linear): R² =", round(summary(m1)$r.squared, 4), "\n")
cat("Just right (quadratic): R² =", round(summary(m2)$r.squared, 4), "\n")
cat("Overfit (degree 10): R² =", round(summary(m10)$r.squared, 4), "\n")

# Plot

x_seq <- seq(0, 10, length.out = 200)
par(mfrow = c(1, 3))
for (model_name in c("m1", "m2", "m10")) {
fit <- get(model_name)
plot(x, y, pch = 16, col = "steelblue",
main = model_name, xlab = "x", ylab = "y", ylim = range(y))
lines(x_seq, predict(fit, data.frame(x = x_seq)), lwd = 2, col = "firebrick")
}
par(mfrow = c(1, 1))
Click Run to execute this code in your browser with WebR

6.1.3 El balance sesgo-varianza

Todo modelo enfrenta un balance sesgo-varianza:

  • Sesgo: Error por supuestos incorrectos (subajuste). Los modelos simples tienen alto sesgo.
  • Varianza: Error por sensibilidad al ruido (sobreajuste). Los modelos complejos tienen alta varianza.
  • Error total = Sesgo² + Varianza + Error irreducible

El objetivo es minimizar el error total, no solo el sesgo o la varianza.

Rethinking

El objetivo es predicción, no ajuste. El error más común en el modelado estadístico es optimizar el ajuste en lugar de la predicción. Un modelo que ajusta la muestra perfectamente no es un buen modelo — es un modelo sobreajustado. El objetivo es predecir datos nuevos, y para eso necesitamos modelos que capturen la señal sin el ruido. Por esto los criterios de información (Sección 6.4) estiman el rendimiento fuera de muestra, no el ajuste dentro de muestra.

Overthinking

La descomposición sesgo-varianza. Para un modelo f^(x)\hat{f}(x) que predice y=f(x)+ϵy = f(x) + \epsilon con E[ϵ]=0E[\epsilon] = 0 y Var(ϵ)=σ2\text{Var}(\epsilon) = \sigma^2:

E[(y−f^(x))2]=(E[f^(x)]−f(x))2⏟Sesgo2+Var(f^(x))⏟Varianza+σ2⏟IrreducibleE[(y - \hat{f}(x))^2] = \underbrace{(E[\hat{f}(x)] - f(x))^2}_{\text{Sesgo}^2} + \underbrace{\text{Var}(\hat{f}(x))}_{\text{Varianza}} + \underbrace{\sigma^2}_{\text{Irreducible}}

A medida que aumenta la complejidad del modelo, el sesgo disminuye (el modelo puede representar la verdadera ff) pero la varianza aumenta (el modelo es más sensible a la muestra particular). La complejidad óptima minimiza la suma del sesgo² y la varianza.

Resumen de la Sección 6.1

  • Sobreajuste: Más parámetros mejoran el ajuste de entrenamiento pero perjudican la predicción de prueba.
  • Subajuste: Muy pocos parámetros pierden la señal.
  • El balance sesgo-varianza gobierna la complejidad del modelo: el sesgo disminuye pero la varianza aumenta con la complejidad.
  • El objetivo es predicción, no ajuste — optimizar para rendimiento fuera de muestra.