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.
# 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")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))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.
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 que predice con y :
A medida que aumenta la complejidad del modelo, el sesgo disminuye (el modelo puede representar la verdadera ) 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.