26 votos

¿Por qué se desaconseja el uso de polinomios de alto orden para la regresión?

He leído muchas veces en este sitio que polinomios de alto orden (generalmente más de un tercio) no deberían utilizarse en la regresión lineal, a menos que exista una justificación sustancial para hacerlo.

Entiendo los problemas sobre extrapolación (y predicción en los límites).

Como la extrapolación no es importante para mí...

  1. ¿Son los polinomios de alto orden también una mala forma de aproximar la función subyacente dentro del intervalo de los puntos de datos ? (es decir, interpolación)
  2. En caso afirmativo, ¿qué problemas se plantean?

No me importa que me redirijan a un buen libro o artículo sobre esto. Gracias.

46voto

dan90266 Puntos 609

En el capítulo 2 de RMS . En resumen, además de los problemas de extrapolación, los polinomios ordinarios tienen estos problemas:

  1. La forma del ajuste en una región de los datos se ve influida por puntos lejanos
  2. Los polinomios no pueden ajustarse a los efectos de umbral, por ejemplo, una curva casi plana que de repente se acelera.
  3. Los polinomios no pueden ajustarse a relaciones de aspecto logarítmico, por ejemplo, las que se hacen progresivamente más planas en un intervalo largo.
  4. Los polinomios no pueden tener un giro muy rápido

Estas son las razones por las que los splines de regresión son tan populares, es decir, los polinomios segmentados tienden a funcionar mejor que los polinomios no segmentados. También puede relajar un supuesto de continuidad para un spline si desea tener un punto de cambio discontinuo en el ajuste.

36voto

icelava Puntos 548

Sí, los polinomios también son problemáticos en la interpolación, debido al sobreajuste y a la alta variabilidad.

He aquí un ejemplo. Supongamos que su variable dependiente $y$ se distribuye uniformemente en el intervalo $[0,1]$ . También tienes una variable "predictora" $x$ también uniformemente distribuido en el intervalo $[0,1]$ . Sin embargo, existe no relación entre ambos. Así pues, cualquier regresión de $y$ en cualquier poder de $x$ será un ajuste excesivo.

Ahora, supongamos que extraemos 20 puntos de datos de este proceso de generación de datos y ajustamos $y\sim x^n$ para $n=1, 2, 3, 5$ . Aquí están los ajustes:

sims 1

Como se ve, el ajuste se vuelve más "ondulante" para valores más altos. $n$ .

Sin embargo, un problema clave es que (por supuesto) el ajuste dependerá de los datos que hayamos muestreado aleatoriamente en nuestro proceso de generación de datos. Al fin y al cabo, podríamos haber extraído 20 pares bastante diferentes $(x,y)$ . Repitamos el ejercicio otras tres veces, con nuevas muestras aleatorias cada vez. A continuación, la fila superior es la misma que la del gráfico anterior, y las otras tres filas son sólo los ajustes basados en nuevas muestras:

sims 2

El principal problema se aprecia al comparar la columna de la izquierda (ajustes lineales) y la de la derecha ( $x^5$ fits): el ajuste para un polinomio de orden inferior es mucho menos variable y dependiente de la aleatoriedad en nuestro muestreo de datos que el ajuste para el polinomio de orden superior. Si queremos interpolar $y$ para algunos $x$ incluso en algún punto intermedio del intervalo, el uso de un polinomio de orden superior producirá un ajuste mucho más inestable que el de un polinomio de orden inferior.

Código R:

nn <- 20
xx <- seq(0,1,by=.01)

png("sims_1.png",width=800,height=200)
    opar <- par(mfrow=c(1,4),mai=c(.3,.3,.3,.1),las=1)
    set.seed(1)
    obs <- data.frame(x=runif(nn),y=runif(nn))
    for ( exponent in c(1,2,3,5) ) {
        model <- lm(y~poly(x,exponent),obs)
        plot(obs$x,obs$y,pch=19,xlab="",ylab="",main=paste("Exponent:",exponent),xlim=c(0,1),ylim=c(0,1))
        lines(xx,predict(model,newdata=data.frame(x=xx)),col="red",lwd=2)
    }
dev.off()

png("sims_2.png",width=800,height=800)
    opar <- par(mfrow=c(4,4),mai=c(.3,.3,.3,.1),las=1)
    for ( jj in 1:4 ) {
        set.seed(jj)
        obs <- data.frame(x=runif(nn),y=runif(nn))
        for ( exponent in c(1,2,3,5) ) {
            model <- lm(y~poly(x,exponent),obs)
            plot(obs$x,obs$y,pch=19,xlab="",ylab="",main=paste("Exponent:",exponent),xlim=c(0,1),ylim=c(0,1))
            lines(xx,predict(model,newdata=data.frame(x=xx)),col="red",lwd=2)
        }
    }
    par(opar)
dev.off()

16voto

avid Puntos 161

Fenómeno de Runge puede llevar a que los polinomios de alto grado sean mucho más ondulados que la variación que sugieren realmente los datos. Uno de los atractivos de los splines como sustitutos de los polinomios de alto grado, en particular los splines naturales, es que permiten la no monotonicidad y la variación de las pendientes sin variar demasiado. Me resultaría difícil encontrar un ejemplo de datos reales para los que un polinomio de cuarto grado o superior parezca una opción más razonable que un spline.

15voto

Adam Kells Puntos 66

Si su objetivo es la interpolación, normalmente querrá la función más sencilla que describa sus observaciones y evitar el sobreajuste.

Dado que no es habitual ver leyes y relaciones físicas que contengan potencias superiores a 3, utilizar polinomios de orden superior cuando no existe una justificación intuitiva se considera un signo de sobreajuste.

Véase también pregunta .

12voto

John Madden Puntos 320

Como opositor empedernido, siento la necesidad de enmendar la premisa de que los polinomios de alto orden no deberían utilizarse para interpolar. Yo diría que la afirmación correcta es "los polinomios de alto orden no son buenos interpolantes a menos que se regularicen adecuadamente".

De hecho, es bastante popular (al menos en círculos académicos) realizar interpolaciones con polinomios de grado infinito que se denomina Kriging cuando se utiliza un regularizador particular (la llamada regularización del Espacio de Hilbert del Núcleo Reproductor, que intuitivamente penaliza tanto la función de $L_2$ y su tendencia a oscilar). Y, por supuesto, por grado infinito, queremos decir que es posible construir una secuencia de polinomios de grado arbitrariamente alto que converjan a este interpolante razonable.

Además, un trabajo reciente ha demostrado que aumentando el grado a 2 o 3 veces el tamaño de los datos (pero manteniéndolo finito), junto con una regularización adecuada, puede seguir funcionando bien. No puedo encontrarlo en este momento, pero este trabajo se basó en un descubrimiento similar en el contexto de las redes neuronales .

En general, la regularización evita muchos de los problemas planteados por otras respuestas.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X