(¿Por qué) los modelos sobreajustados tienden a tener coeficientes grandes?

33

Me imagino que cuanto mayor es el coeficiente de una variable, más capacidad tiene el modelo para "oscilar" en esa dimensión, lo que brinda una mayor oportunidad de ajustar el ruido. Aunque creo que tengo un sentido razonable de la relación entre la varianza en el modelo y los coeficientes grandes, no tengo un buen sentido de por qué ocurren en los modelos sobreajustados. ¿Es incorrecto decir que son un síntoma de sobreajuste y la reducción del coeficiente es más una técnica para reducir la varianza en el modelo? La regularización a través de la reducción del coeficiente parece funcionar según el principio de que los coeficientes grandes son el resultado de un modelo sobreajustado, pero tal vez estoy malinterpretando la motivación detrás de la técnica.

Mi intuición de que los coeficientes grandes son generalmente un síntoma de sobreajuste proviene del siguiente ejemplo:

Digamos que queríamos ajustar puntos que todos se sientan en el eje x. Podemos construir fácilmente un polinomio cuyas soluciones son estos puntos: f ( x ) = ( x - x 1 ) ( x - x 2 ) . . . . ( x - x n - 1 ) ( x - x n ) . Digamos que nuestros puntos están en x = 1 , 2 , 3 , 4nf(x)=(xx1)(xx2)....(xxn1)(xxn)x=1,2,3,4. Esta técnica proporciona todos los coeficientes> = 10 (excepto un coeficiente). A medida que agreguemos más puntos (y así aumentemos el grado del polinomio), la magnitud de estos coeficientes aumentará rápidamente.

Este ejemplo es cómo actualmente estoy conectando el tamaño de los coeficientes del modelo con la "complejidad" de los modelos generados, pero me preocupa que este caso sea estéril para ser realmente indicativo del comportamiento del mundo real. Deliberadamente construí un modelo sobreajustado (un ajuste OLS polinomial de décimo grado en los datos generados a partir de un modelo de muestreo cuadrático) y me sorprendió ver coeficientes en su mayoría pequeños en mi modelo:

set.seed(123)
xv = seq(-5,15,length.out=1e4)
x=sample(xv,20)
gen=function(v){v^2 + 7*rnorm(length(v))}
y=gen(x)
df = data.frame(x,y)

model = lm(y~poly(x,10,raw=T), data=df)
summary(abs(model$coefficients))
#     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
# 0.000001 0.003666 0.172400 1.469000 1.776000 5.957000


data.frame(sort(abs(model$coefficients)))
#                                   model.coefficients
# poly(x, 10, raw = T)10                  7.118668e-07
# poly(x, 10, raw = T)9                   3.816941e-05
# poly(x, 10, raw = T)8                   7.675023e-04
# poly(x, 10, raw = T)7                   6.565424e-03
# poly(x, 10, raw = T)6                   1.070573e-02
# poly(x, 10, raw = T)5                   1.723969e-01
# poly(x, 10, raw = T)3                   6.341401e-01
# poly(x, 10, raw = T)4                   8.007111e-01
# poly(x, 10, raw = T)1                   2.751109e+00
# poly(x, 10, raw = T)2                   5.830923e+00
# (Intercept)                             5.956870e+00

Quizás la conclusión de este ejemplo es que dos tercios de los coeficientes son menores que 1, y en relación con los otros coeficientes , hay tres coeficientes que son inusualmente grandes (y las variables asociadas con estos coeficientes también son las más cercanas relacionado con el verdadero modelo de muestreo).

¿Es la regularización (L2) solo un mecanismo para disminuir la varianza en un modelo y, por lo tanto, "suavizar" la curva para que se ajuste mejor a los datos futuros, o se está aprovechando de una heurística derivada de la observación de que los modelos sobreajustados tienden a exhibir coeficientes grandes? ¿Es una afirmación precisa de que los modelos sobreajustados tienden a exhibir coeficientes grandes? Si es así, ¿alguien puede explicar un poco el mecanismo detrás del fenómeno y / o dirigirme a alguna literatura?

David Marx
fuente
44
¿Qué quiere decir exactamente con un coeficiente "grande"? Después de todo, si simplemente cambiamos las unidades en las que expresamos la variable dependiente (como de parsecs a femtómetros) podemos hacer que los coeficientes sean arbitrariamente grandes o pequeños en valor.
whuber
1
No tengo una buena respuesta para eso. Comprendí que atacar los coeficientes "grandes" era una heurística motivadora detrás de la regularización de L2. Pero aumentar sintéticamente la magnitud de los coeficientes requeriría también cambiar la constante de regularización para compensar la diferente magnitud en el modelo ahora, ¿no? No creo que la noción de "grande" aquí sea tan ambigua como parece, incluso si no puedo caracterizarla muy bien.
David Marx
@DavidMarx: No creo que la regularización L2 vaya después de coeficientes "grandes", ¿verdad? Por el contrario, tiende a empujar coeficientes que probablemente no fueron comparativamente grandes a cero, en cierto sentido obligándote a elegir en lugar de encontrar un compromiso entre los dos.
Wayne
@wayne ah, creo que lo tenía al revés. Pensé que reducía los coeficientes más grandes o reducía todos los coeficientes proporcionalmente. Eso tendría más sentido si la regularización L2 expulsara del modelo las variables con coeficientes más pequeños.
David Marx
1
Después de 8 ediciones, creo que tengo mi respuesta abajo. Sheesh
Hong Ooi

Respuestas:

15

En el contexto de regularización, un coeficiente "grande" significa que la magnitud de la estimación es mayor de lo que hubiera sido, si se hubiera utilizado una especificación de modelo fija . Es el impacto de obtener no solo las estimaciones, sino también la especificación del modelo, a partir de los datos.

Considere qué hará un procedimiento como la regresión por pasos para una variable dada. Si la estimación de su coeficiente es pequeña en relación con el error estándar, se eliminará del modelo. Esto podría deberse a que el valor verdadero es realmente pequeño, o simplemente debido a un error aleatorio (o una combinación de ambos). Si se cae, ya no le prestamos atención. Por otro lado, si la estimación es grande en relación con su error estándar, se mantendrá. Observe el desequilibrio: nuestro modelo final rechazará una variable cuando el coeficiente estimado sea pequeño, pero lo mantendremos cuando el estimado sea grande. Por lo tanto, es probable que sobreestimemos su valor.

Dicho de otra manera, lo que significa sobreajustar es exagerar el impacto de un conjunto determinado de predictores en la respuesta. Pero la única forma en que puede exagerar el impacto es si los coeficientes estimados son demasiado grandes (y, por el contrario, las estimaciones para sus predictores excluidos son demasiado pequeñas).

stepβ3β10

Aquí hay un ejemplo de lo que estoy hablando.

repeat.exp <- function(M)
{
    x <- seq(-2, 2, len=25)
    px <- poly(x, 10)
    colnames(px) <- paste0("x", 1:10)
    out <- setNames(rep(NA, 11), c("(Intercept)", colnames(px)))
    sapply(1:M, function(...) {
        y <- x^2 + rnorm(N, s=2)
        d <- data.frame(px, y)
        b <- coef(step(lm(y ~ x1, data=d), y ~ x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10, trace=0))
        out[names(b)] <- b
        out
    })
}

set.seed(53520)
z <- repeat.exp(M=1000)

# some time later...
rowMeans(abs(z), na.rm=TRUE)

(Intercept)          x1          x2          x3          x4          x5          x6          x7          x8          x9         x10 
   1.453553    3.162100    6.533642    3.108974    3.204341    3.131208    3.118276    3.217231    3.293691    3.149520    3.073062 

β3β10

repeat.exp.base <- function(M)
{
    x <- seq(-2, 2, len=25)
    px <- poly(x, 10)
    colnames(px) <- paste0("x", 1:10)
    out <- setNames(rep(NA, 11), c("(Intercept)", colnames(px)))
    sapply(1:M, function(...) {
        y <- x^2 + rnorm(N, s=2)
        d <- data.frame(px, y)
        b <- coef(lm(y ~ ., data=d))
        out[names(b)] <- b
        out
    })
}

set.seed(53520)
z2 <- repeat.exp.base(M=1000)

rowMeans(abs(z2))
(Intercept)          x1          x2          x3          x4          x5          x6          x7          x8          x9         x10 
   1.453553    1.676066    6.400629    1.589061    1.648441    1.584861    1.611819    1.607720    1.656267    1.583362    1.556168 

β1β2

Hong Ooi
fuente
Estoy un poco confundido por su ejemplo modificado. Usted dice que "Debería encontrar que todas las estimaciones de los coeficientes β3 a β10 son sistemáticamente demasiado grandes, en comparación con no usar la selección de variables", pero parece que obtuvo valores más grandes en su primer experimento (con step) que en su segundo experimento (valores de ajuste "a ciegas"). ¿No es esto contrario a lo que sugerías que debería suceder?
David Marx
Además, usted y otros aquí han sugerido que debería estandarizar las variables en mi ejemplo. Veo el razonamiento, pero no sé de una buena manera de hacerlo. ¿Debo mejorar mis datos de muestra para incluir columnas para cada potencia de X y estandarizar esos valores? ¿O hay alguna manera de estandarizar las variables directamente en la fórmula de mi modelo donde llamo poly(supongo que no)?
David Marx
? Obtiene desviaciones absolutas más grandes cuando se usa por pasos, en comparación con no usar por pasos. No estoy seguro de lo que estás preguntando. En cuanto a la estandarización: es innecesario si lo hace como lo publiqué, es decir, haciendo una comparación entre el enfoque gradual y el no gradual. Cada variable se compara de un tratamiento a otro, en lugar de a las otras variables.
Hong Ooi
6

Una respuesta muy simple sin analizar sus detalles: cuando está sobreajustando, los estimadores de parámetros tienden a obtener grandes variaciones, y con grandes variaciones, ¡los valores grandes son justo lo que debe esperar!

kjetil b halvorsen
fuente
Si lo entiendo correctamente, esto explicaría por qué el modelo predeciría valores "grandes", no por qué el modelo estaría compuesto por coeficientes "grandes".
David Marx
No, eso está mal! Al menos algunos de los estimadores de coeficientes individuales tendrán grandes variaciones, por lo que los valores estimados de esos coeficientes tenderán a ser grandes. (Por supuesto, incluso cuando se sobreajusta, algunos coeficientes pueden ser estables, pero no todos). Además, para mantener la propiedad de imparcialidad de la predicción, habrá grandes covarianzas negativas entre estimadores de coeficientes independientes.
kjetil b halvorsen
1
Sin embargo, esto no responde completamente la pregunta. Si se tratara solo de grandes variaciones, obtendría estimaciones pequeñas con la misma frecuencia que las grandes (de manera informal). El problema es cuando asumimos que las estimaciones pequeñas (en relación con sus errores estándar) son "sin importancia" y eliminamos esas variables del modelo. Como resultado, las únicas estimaciones restantes serán las grandes.
Hong Ooi
0

David Creo que el problema con su ejemplo es que no ha normalizado sus datos (es decir, X ^ 10 >> X.

Entonces, David tiene razón, ya que reduce más los coeficientes más grandes (por lo que puede terminar con muchos coeficientes pequeños, mientras que la regularización L1 podría darle uno grande y el resto cero)

así que básicamente es encapsular que los pequeños cambios deberían tener pequeños efectos (y, por supuesto, volvemos a la cuestión de cuán pequeño es pequeño: normalizar sus datos, etc.). Pero la clave está en las dimensiones más altas, donde la correlación entra en juego: imagine que tiene dos variables x, y que están altamente correlacionadas (ambas normalizadas a la varianza 1), entonces su diferencia será pequeña = "ruido" - penalizar grandes pesos por lo tanto evite que se ajuste a este ruido (y obtenga coeficientes de cancelación casi muy grandes para y y x).

El ejemplo aún se cumple para cualquier relación lineal (y = mx)

buscar regresión de cresta

seanv507
fuente
1
David, ¿por qué no rehaces el ejemplo normalizando todas las variables x, x ^ 2, ..., x ^ n a cero, media y desviación estándar 1, y luego ves los resultados que obtienes ... no es muy sorprendente que tu los coeficientes son pequeños cuando las variables de entrada son grandes
seanv507
0

demostración sobreajustada

Esta imagen es de mi nota del curso DL de Andrew Ng, por favor avíseme si tiene alguna pregunta

Pradi KL
fuente
1
¿Podría explicar por qué cree que esta nota sobre la regularización de la red neuronal responde a la pregunta sobre los tamaños de los coeficientes y el sobreajuste?
whuber
los 3 están vinculados, el sobreajuste es justo lo que la regularización trata de prevenir e intenta penalizando un alto coeficiente debido a la razón anterior
Pradi KL