Tema 07 - Selección y Regularización

Técnicas para ‘Big Data’ en Economía - Curso 2023/24
Universidad de Alicante

Pedro Albarrán

Dpto. de Fundamentos del Análisis Económico. Universidad de Alicante

Introducción

  • MCO puede estimar modelos con muchos regresores (ej., polinomios e interacciones para relaciones no lineales), pero ¿qué variables incluimos?

  • Cuando crece el número de parámetros \(\small k\) relativo al de observaciones \(\small n\):

    • menor precisión (+ varianza) \(\Rightarrow\) no solución única de MCO con \(\small k>n\)
    • modelo complejo y menos interpretable\(\Rightarrow\) selección de variables
  1. Selección de variables: excluir variables irrelevantes y ajustar ese modelo reducido por mínimos cuadrados ordinarios

  2. Restricción de los coeficientes estimados puede reducir la varianza, a costa de un aumento insignificante del sesgo (Regresión Regularizada/Penalizada)

  3. Reducción de la dimensionalidad: usar \(\small M<k\) combinaciones lineales (proyecciones) y estimar por mínimos cuadrados (PCR, PLS)

Ajustes mediante penalización

  • Los métodos de ajuste ofrecen una *estimación indirecta del error de prueba, en la muestra de entrenamiento mediante supuestos (erróneos?)

  • El \(\small SCR\) de entrenamiento siempre se reduce si el modelo es más flexible \(\Rightarrow\) añadir una penalización por número de parámetros

    • Criterio de Información de Akaike: \(\small AIC = \frac{1}{n}\left( SCR + 2 k \widehat{\sigma}^2 \right)\)

      • \(\small \widehat{\sigma}^2\) un estimación de la varianza del error
    • Criterio de Información Bayesiano: \(\small BIC = \frac{1}{n}\left( SCR + log(n) k \widehat{\sigma}^2 \right)\)

    • \(\small R^2-ajustado = 1- \frac{SCR/(n-k-1)}{SCT/(n-1)}\)

  • Validación cruzada ofrece una estimación más directa pero es más costosa (computacionalmente, menor tamaño muestral para estimar)

Métodos de regularización

  • En MCO: \(\small \min_{\beta} SCR={\sum_{i=1}^{n}\left(y-\widehat{y}\right)^2}\)

  • En Regresión Penalizada o Regularizada, se añade una restricción que limite (reduzca) los coeficientes estimados \[\small \min_{\beta} SCR \text { sujeto a }R(\beta) \leq t\]

    • donde \(R(\cdot)\) es una medida del tamaño de los coeficientes

    • NO se penaliza a la constante (media de \(\small Y\)), solo el impacto de \(\small X\)

  • La restricción limita la importancia de las \(\small X\) para explicar \(\small Y\): empeora el ajuste (sesgo), pero reduce la varianza \(\Rightarrow\) previene “overfitting”

  • Permite ajustar un modelo que contenga todos los regresores

Métodos de regularización (cont.)

  • Reescribiendo el problema (Lagrangiano): \(\small \min_{\beta} SCR+\lambda R(\beta)\)

  • \(\lambda \geq 0\) es un parámetro de ajuste (“tuning parameter”)

Método Penalización por tamaño = \(R(\boldsymbol{\beta})\) Norma
MCO 0
LASSO \(\lVert\boldsymbol{\beta}\rVert_1=\sum_{j=1}^{k}|\beta_j|\) \(\ell_1\): \(||\boldsymbol{\beta}||_1=\sum_{j=1}^{k}|\beta_j|\)
Ridge Regression \(\lVert\boldsymbol{\beta}\rVert_2^2 =\sum_{j=1}^{k}\beta_j^2\) \(\ell_2\): \(||\boldsymbol{\beta}||_2=\sqrt{\sum_{j=1}^{k}\beta_j^2}\)
Red Elásica \(\alpha\lVert\boldsymbol{\beta}\rVert_1 + (1-\alpha)\lVert\boldsymbol{\beta}\rVert_2^2\)

Penalización de contracción

  • Para un \(\small \lambda\) dado:

\(\small \widehat{\beta}^R_{\lambda} = \arg \min_\beta SCR + \lambda \sum_{j=1}^{k}\beta_j^2\)

\[ \small \widehat{\beta}^L_{\lambda} = \arg \min_\beta SCR + \lambda \sum_{j=1}^{k}|\beta_j| \]

  • Tratamos de ajustarnos a los datos minimizando SCR, PERO se recompensa a los coeficientes cercanos a cero

  • Para que todos los coeficientes estén en la misma escala (misma “cercanía a cero), debemos estandarizar los regresores: \(\small \widetilde{x}_{ij} = \frac{x_{ij}}{\sqrt{ \frac{1}{n}\sum_{i=1}^n(x_{ij}-\bar{x}_j)^2}}\)

    • Recordar: en MCO, el coeficiente \(\small \beta_j\) cambia si cambiamos las unidades de \(\small X_j\)

Regularización y “Trade-off” sesgo-varianza

  • ¿Por qué la regularización mejoraría el ajuste sobre MCO?

  • \(\small \lambda\)= importancia de la penalización (cuanto se contraen los coeficientes)

    • \(\small \lambda\) pequeño (cercano a MCO): mayor flexibilidad (\(-\) sesgo, \(+\) varianza)

    • \(\small \lambda >> 0\), todos los coeficientes a cero: menor flexibilidad (\(+\) sesgo, \(-\) varianza)

  • Regularización funciona mejor cuando MCO tiene alta varianza: intercambia un poco más de sesgo por una gran reducción de la varianza

  • “Ridge Regression” sigue incluyendo todos los regresores (ningún coeficiente exactamente cero): puede complicar la interpretación con muchos

  • LASSO (least absolute shrinkage and selection operator): también contrae hacia cero, algunos exactamente cero (selección de variables)

“Ridge Regression” y LASSO

  • “Ridge regression” domina con muchos regresores igualmente importantes

  • LASSO con pocos regresores importantes y muchos inútiles

  • LASSO es una alternativa a los contrastes de significatividad (sin formalización estadística)

  • Notad que LASSO es un método orientado a la predicción: NO se debe usar para afirmaciones de causalidad (los coeficientes están sesgados)

  • PERO se puede estimar por MCO la especificación de variables seleccionada por LASSO

Eligiendo el (hiper-)parámetro de ajuste

  1. Elegir un rango de valores para \(\small \lambda\)

  2. Calcular el error mediante validación cruzada para cada valor de \(\small \lambda\)

  3. Seleccionar el valor con menor error (probar varios rangos para encontrar forma de U)

  4. Volver a ajustar el modelo usando todas las observaciones y el valor del parámetro de ajuste seleccionado.

  • Ventaja sobre la selección de regresores: SOLO necesitamos ajustar un modelo para cada valor de \(\small \lambda\)

  • Regla de parquedad paramétrica: dado un conjunto de modelos igualmente buenos (dentro de un error estándar del menor error), elegir el más simple

glmnet para regresión lineal

library(mosaicData)
library(glmnet)

x <- model.matrix(data = RailTrail, 
          volume ~ cloudcover + weekday + precip + poly(hightemp, 6))

fit.lmreg <- glmnet(x = x, y = RailTrail$volume, 
                    family="gaussian", 
                    lambda=2, alpha=.5)

fit.lmreg$beta
  • Elegimos el parámetro de regularización mediante validación cruzada
set.seed(1)
cv.glmnet(x, RailTrail$volume) %>% plot()
cv.glmnet(x, RailTrail$volume)

glmnet para regresión logística

censo <- read_csv("data/census.csv") %>%
  mutate(across(where(is.character), ~parse_factor(.x)),
         income = if_else(income == ">50K", 1,  0))

x <- model.matrix(data = censo, 
      income ~ poly(age, 3) + log(hours_per_week)*sex +
        education_1*race + occupation*workclass)

fit.glmreg <- glmnet(x = x, y = censo$income,
                     family = "binomial", 
                     lambda=0.001, alpha=1)
fit.glmreg$beta
  • Validación cruzada para elegir parámetro de regularización
set.seed(1)  
cv.glmnet(x, censo$income)
cv.glmnet(x, censo$income) %>% plot()