13.4 Categorías continuas y el proceso Gaussiano
Los procesos Gaussianos modelan categorías continuas — como ubicaciones espaciales o puntos en el tiempo — como una distribución normal multivariada. Capturan correlaciones que decaen suavemente con la distancia.
13.4.1 El proceso Gaussiano
Un proceso Gaussiano es una distribución sobre funciones. En lugar de modelar cada observación independientemente, el PG las modela conjuntamente como normal multivariada con una función de covarianza:
Este es el kernel exponencial cuadrado. La escala de longitud controla qué tan rápido decae la correlación con la distancia. La amplitud controla la magnitud de la variación.
# Gaussian process: squared exponential kernel
set.seed(42)
# Generate x values
x <- seq(0, 10, length.out = 50)
# Squared exponential kernel function
se*kernel <- function(x1, x2, sigma = 1, ell = 1) {
sigma^2 * exp(-outer(x1, x2, "-")^2 / (2 _ ell^2))
}
# Compute covariance matrices for different length scales
K_ell1 <- se_kernel(x, x, sigma = 1, ell = 1)
K_ell2 <- se_kernel(x, x, sigma = 1, ell = 2)
K_ell5 <- se_kernel(x, x, sigma = 1, ell = 5)
# Draw samples from the GP prior
library(MASS)
n_samples <- 5
cat("Gaussian process prior samples:\n")
cat(" Length scale controls smoothness:\n")
cat(" ell = 1: wiggly functions\n")
cat(" ell = 2: moderate smoothness\n")
cat(" ell = 5: very smooth functions\n")
# Plot
par(mfrow = c(1, 3))
for (ell_val in c(1, 2, 5)) {
K <- se_kernel(x, x, sigma = 1, ell = ell_val)
samples <- mvrnorm(n_samples, rep(0, length(x)), K)
plot(x, samples[1, ], type = "l", ylim = range(samples),
main = paste("ell =", ell_val), xlab = "x", ylab = "f(x)")
for (s in 2:n_samples) lines(x, samples[s, ], col = s)
}
par(mfrow = c(1, 1))13.4.2 Ajustando un proceso Gaussiano
# Gaussian process regression: simulate and fit
set.seed(42)
# True function: a smooth curve
x <- seq(0, 10, length.out = 30)
f*true <- 3 * sin(x) + 0.5 _ x
y <- f_true + rnorm(length(x), 0, 0.5)
# GP regression using a simple approach
# Compute the covariance matrix
ell <- 1.5
sigma_f <- 2
sigma_n <- 0.5 # noise
K <- sigma*f^2 * exp(-outer(x, x, "-")^2 / (2 _ ell^2))
K_noise <- K + sigma_n^2 * diag(length(x))
# GP posterior mean at training points
# f_post = K^T (K + sigma_n^2 I)^{-1} y
L <- chol(K_noise)
alpha <- backsolve(L, forwardsolve(t(L), y))
f_post <- K %*% alpha
cat("Gaussian process regression:\n")
cat(" Length scale (ell):", ell, "\n")
cat(" Amplitude (sigma_f):", sigma_f, "\n")
cat(" Noise (sigma_n):", sigma_n, "\n")
cat(" Posterior mean RMSE:", round(sqrt(mean((f_post - f_true)^2)), 3), "\n")
# Predict at new points
x*new <- seq(0, 10, length.out = 100)
K_star <- sigma_f^2 * exp(-outer(x*new, x, "-")^2 / (2 * ell^2))
f_pred <- K_star %*% alpha
# Plot
plot(x, y, pch = 16, col = "steelblue",
main = "Gaussian process regression",
xlab = "x", ylab = "y")
lines(x*new, f_pred, lwd = 2, col = "firebrick")
curve(3 * sin(x) + 0.5 _ x, add = TRUE, lty = 2, col = "darkgreen", lwd = 2)
legend("topleft", legend = c("Data", "GP posterior mean", "True function"),
col = c("steelblue", "firebrick", "darkgreen"),
pch = c(16, NA, NA), lty = c(NA, 1, 2), lwd = c(NA, 2, 2))Los procesos Gaussianos son interceptos variables para categorías continuas. Un PG es un modelo multinivel donde los "grupos" son puntos a lo largo de una dimensión continua (espacio, tiempo, edad). En lugar de que cada grupo tenga un intercepto independiente, los interceptos están correlacionados — los puntos cercanos son más similares. La función de covarianza determina cómo decae la similitud con la distancia. Esto hace a los PG increíblemente flexibles: pueden modelar variación espacial, tendencias temporales y cualquier covariable continua donde los valores cercanos deban ser similares. La escala de longitud es el parámetro clave — le dice al modelo hasta dónde se extiende la influencia "local".
Overthinking
El truco del kernel. El proceso Gaussiano funciona porque la matriz de covarianza codifica similitud. El kernel exponencial cuadrado es solo una elección. Otras incluyen:
- Matérn: Más rugoso que el exponencial cuadrado, más realista para procesos físicos.
- Periódico: — captura estacionalidad.
- Cuadrático racional: Una mezcla de escalas de exponenciales cuadrados — maneja múltiples escalas de longitud.
La elección del kernel es una decisión de modelado — codifica supuestos sobre cómo se comporta la función.
Resumen de la Sección 13.4
- Los procesos Gaussianos modelan categorías continuas como efectos aleatorios correlacionados.
- El kernel exponencial cuadrado: .
- La escala de longitud controla la suavidad — mayor = funciones más suaves.
- Los PG son interceptos variables para dimensiones continuas (espacio, tiempo).
- La elección del kernel codifica supuestos sobre el comportamiento de la función.