20 votos

¿Por qué hay grandes coeficientes para el polinomio de orden superior

En el libro de Bishop sobre aprendizaje automático, se analiza el problema del ajuste de curvas de una función polinómica a un conjunto de puntos de datos.

Sea M el orden del polinomio ajustado. Se dice que

Vemos que, al aumentar M, la magnitud de los coeficientes suele ser mayor. En particular, para el polinomio M = 9, los coeficientes se han ajustado a los datos desarrollando grandes valores positivos y negativos, de modo que la función polinómica correspondiente correspondiente coincida exactamente con cada uno de los puntos de datos, pero entre datos (especialmente cerca de los extremos del intervalo) la función presenta grandes oscilaciones.

No entiendo por qué los valores grandes implican un mayor ajuste de los puntos de datos. Yo pensaría que los valores se volverían más precisos después del decimal en cambio para un mejor ajuste.

21voto

GeoMatt22 Puntos 1290

Este es un problema bien conocido con los polinomios de alto orden, conocidos como El fenómeno de Runge . Numéricamente se asocia con mal acondicionado de la Matriz de Vandermonde lo que hace que los coeficientes sean muy sensibles a las pequeñas variaciones de los datos y/o al redondeo en los cálculos (es decir, el modelo no es estable identificable ). Ver también esta respuesta en el SciComp SE.

Hay muchas soluciones a este problema, por ejemplo Aproximación de Chebyshev , splines de suavizado y Regularización de Tikhonov . La regularización de Tikhonov es una generalización de regresión de cresta , penalizando una norma $||\Lambda \theta]||$ del vector de coeficientes $\theta$ donde para suavizar la matriz de pesos $\Lambda$ es algún operador derivado. Para penalizar las oscilaciones, se podría utilizar $\Lambda \theta=p^{\prime\prime}[x]$ , donde $p[x]$ es el polinomio evaluado en los datos.

EDIT: La respuesta del usuario hxd1011 señala que algunos de los numérico Los problemas de mal condicionamiento pueden abordarse utilizando polinomios ortogonales, lo cual es un buen punto. Sin embargo, me gustaría señalar que los problemas de identificabilidad con los polinomios de alto orden siguen existiendo. Es decir, el mal condicionamiento numérico está asociado a la sensibilidad a las perturbaciones "infinitesimales" (por ejemplo, el redondeo), mientras que el mal condicionamiento "estadístico" se refiere a la sensibilidad a las perturbaciones "finitas" (por ejemplo, los valores atípicos; el problema inverso es mal planteado ).

Los métodos mencionados en mi segundo párrafo se refieren a esto El atípico sensibilidad. Se puede pensar en esta sensibilidad como una violación del modelo de regresión lineal estándar, que al utilizar un $L_2$ El desajuste asume implícitamente que los datos son gaussianos. Los splines y la regularización de Tikhonov abordan esta sensibilidad a los valores atípicos imponiendo una suavidad previa al ajuste. La aproximación de Chebyshev se ocupa de esto utilizando un $L_{\infty}$ inadaptada aplicada sobre el dominio continuo es decir, no sólo en los puntos de datos. Aunque los polinomios de Chebyshev son ortogonales (con respecto a un determinado producto interno ponderado), creo que si se utilizan con un $L_2$ de los datos que se les todavía tienen sensibilidad a los valores atípicos.

10voto

David Puntos 41

Lo primero que hay que comprobar es si el autor está hablando de polinomios brutos frente a polinomios ortogonales .

En el caso de los polinomios ortogonales, los coeficientes no se hacen "más grandes".

Aquí hay dos ejemplos de expansión polinómica de 2º y 15º orden. Primero mostramos el coeficiente para la expansión de 2º orden.

summary(lm(mpg~poly(wt,2),mtcars))

Call:
lm(formula = mpg ~ poly(wt, 2), data = mtcars)

Residuals:
   Min     1Q Median     3Q    Max 
-3.483 -1.998 -0.773  1.462  6.238 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept)   20.0906     0.4686  42.877  < 2e-16 ***
poly(wt, 2)1 -29.1157     2.6506 -10.985 7.52e-12 ***
poly(wt, 2)2   8.6358     2.6506   3.258  0.00286 ** 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 2.651 on 29 degrees of freedom
Multiple R-squared:  0.8191,    Adjusted R-squared:  0.8066 
F-statistic: 65.64 on 2 and 29 DF,  p-value: 1.715e-11

A continuación, mostramos la 15ª orden.

summary(lm(mpg~poly(wt,15),mtcars))

Call:
lm(formula = mpg ~ poly(wt, 15), data = mtcars)

Residuals:
    Min      1Q  Median      3Q     Max 
-5.3233 -0.4641  0.0072  0.6401  4.0394 

Coefficients:
               Estimate Std. Error t value Pr(>|t|)    
(Intercept)     20.0906     0.4551  44.147  < 2e-16 ***
poly(wt, 15)1  -29.1157     2.5743 -11.310 4.83e-09 ***
poly(wt, 15)2    8.6358     2.5743   3.355  0.00403 ** 
poly(wt, 15)3    0.2749     2.5743   0.107  0.91629    
poly(wt, 15)4   -1.7891     2.5743  -0.695  0.49705    
poly(wt, 15)5    1.8797     2.5743   0.730  0.47584    
poly(wt, 15)6   -2.8354     2.5743  -1.101  0.28702    
poly(wt, 15)7    2.5613     2.5743   0.995  0.33459    
poly(wt, 15)8    1.5772     2.5743   0.613  0.54872    
poly(wt, 15)9   -5.2412     2.5743  -2.036  0.05866 .  
poly(wt, 15)10  -2.4959     2.5743  -0.970  0.34672    
poly(wt, 15)11   2.5007     2.5743   0.971  0.34580    
poly(wt, 15)12   2.4263     2.5743   0.942  0.35996    
poly(wt, 15)13  -2.0134     2.5743  -0.782  0.44559    
poly(wt, 15)14   3.3994     2.5743   1.320  0.20525    
poly(wt, 15)15  -3.5161     2.5743  -1.366  0.19089    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 2.574 on 16 degrees of freedom
Multiple R-squared:  0.9058,    Adjusted R-squared:  0.8176 
F-statistic: 10.26 on 15 and 16 DF,  p-value: 1.558e-05

Tenga en cuenta que, estamos utilizando polinomios ortogonales por lo que el coeficiente de orden inferior es exactamente igual a los términos correspondientes en los resultados de orden superior. Por ejemplo, el intercepto y el coeficiente de primer orden son 20,09 y -29,11 para ambos modelos.

En cambio, si utilizamos la expansión en bruto, esto no ocurrirá. ¡Y tendremos coeficientes grandes y sensibles! En el siguiente ejemplo, podemos ver que los coeficientes están alrededor de $10^6$ nivel.

> summary(lm(mpg~poly(wt,15, raw=T),mtcars))

Call:
lm(formula = mpg ~ poly(wt, 15, raw = T), data = mtcars)

Residuals:
    Min      1Q  Median      3Q     Max 
-5.6217 -0.7544  0.0306  1.1678  5.4308 

Coefficients: (3 not defined because of singularities)
                          Estimate Std. Error t value Pr(>|t|)
(Intercept)              6.287e+05  9.991e+05   0.629    0.537
poly(wt, 15, raw = T)1  -2.713e+06  4.195e+06  -0.647    0.526
poly(wt, 15, raw = T)2   5.246e+06  7.893e+06   0.665    0.514
poly(wt, 15, raw = T)3  -6.001e+06  8.784e+06  -0.683    0.503
poly(wt, 15, raw = T)4   4.512e+06  6.427e+06   0.702    0.491
poly(wt, 15, raw = T)5  -2.340e+06  3.246e+06  -0.721    0.480
poly(wt, 15, raw = T)6   8.537e+05  1.154e+06   0.740    0.468
poly(wt, 15, raw = T)7  -2.184e+05  2.880e+05  -0.758    0.458
poly(wt, 15, raw = T)8   3.809e+04  4.910e+04   0.776    0.447
poly(wt, 15, raw = T)9  -4.212e+03  5.314e+03  -0.793    0.438
poly(wt, 15, raw = T)10  2.382e+02  2.947e+02   0.809    0.429
poly(wt, 15, raw = T)11         NA         NA      NA       NA
poly(wt, 15, raw = T)12 -5.642e-01  6.742e-01  -0.837    0.413
poly(wt, 15, raw = T)13         NA         NA      NA       NA
poly(wt, 15, raw = T)14         NA         NA      NA       NA
poly(wt, 15, raw = T)15  1.259e-04  1.447e-04   0.870    0.395

Residual standard error: 2.659 on 19 degrees of freedom
Multiple R-squared:  0.8807,    Adjusted R-squared:  0.8053 
F-statistic: 11.68 on 12 and 19 DF,  p-value: 2.362e-06

4voto

JanithaR Puntos 141

Abhishek, tienes razón en que mejorar la precisión de los coeficientes mejorará la exactitud.

Vemos que, a medida que aumenta M, la magnitud de los coeficientes suele ser mayor. En particular, para el polinomio M = 9, los coeficientes se han ajustado a los datos desarrollando grandes valores positivos y negativos, de modo que la función polinómica correspondiente coincide exactamente con cada uno de los puntos de datos, pero entre los puntos de datos (especialmente cerca de los extremos del rango) la función presenta grandes oscilaciones.

Creo que la cuestión de la magnitud es bastante irrelevante para el argumento general de Bishop: que el uso de un modelo complicado con datos limitados conduce a un "sobreajuste". En su ejemplo se utilizan 10 puntos de datos para estimar un polinomio de 9 dimensiones (es decir, 10 variables y 10 incógnitas).

Si ajustamos una onda sinusoidal (sin ruido), el ajuste funciona perfectamente, ya que las ondas sinusoidales [en un intervalo fijo] pueden aproximarse con una precisión arbitraria utilizando polinomios. Sin embargo, en el ejemplo de Bishop tenemos una cierta cantidad de "ruido" que no debemos ajustar. La forma de hacerlo es manteniendo un número elevado de puntos de datos en relación con el número de variables del modelo (coeficientes polinómicos) o utilizando la regularización. 9th order Polynomial fit to 10 dat points on (0,1)

La regularización impone restricciones "blandas" al modelo (por ejemplo, en la regresión en cresta) y la función de coste que se intenta minimizar es una combinación del "error de ajuste" y la complejidad del modelo: por ejemplo, en la regresión en cresta, la complejidad se mide por la suma de los coeficientes al cuadrado; en efecto, esto impone un coste a la reducción del error: sólo se permite aumentar los coeficientes si la reducción del error de ajuste es lo suficientemente grande [la magnitud se especifica mediante un multiplicador en el término de complejidad del modelo]. Por lo tanto, se espera que al elegir el multiplicador adecuado no se ajuste a un término de ruido pequeño adicional, ya que la mejora del ajuste no justifica el aumento de los coeficientes.

Has preguntado por qué los coeficientes grandes mejoran la calidad del ajuste. Básicamente, la razón es que la función estimada (sen + ruido) no es un polinomio, y los grandes cambios de curvatura necesarios para aproximar el efecto del ruido con polinomios requieren coeficientes grandes.

Tenga en cuenta que el uso de polinomios ortogonales no tiene ningún efecto (he añadido un desplazamiento de 0,1 sólo para que los polinomios ortogonales y los crudos no se superpongan)

require (penalized)
poly_order<-9
x_long<-seq(0,1, length.out = 100)
nx<-10
x<-seq(0,1, length.out = nx)
noise<- rnorm(nx, 0, 1)
noise_scale<-0.2
y<-sin(2*pi*x)+noise_scale*noise

training_data<-data.frame(x=x,y=y)
y_long<-sin(2*pi*x_long)

plot(x,y, col ='blue',ylim=c(-1.5,1.5))
lines(x_long,y_long,col='green')

polyfit_raw<-lm(y~poly(x,poly_order,raw=TRUE),data=training_data)
summary(polyfit_raw)

polyfit_raw_ridge1<-penalized(y,~poly(x,poly_order,raw=TRUE), model='linear', data=training_data, lambda2=0.0001, maxiter=10000, standardize=TRUE)

polyfit_orthog<-lm(y~poly(x,poly_order),data=training_data)
summary(polyfit_orthog)

pred_raw<-predict(polyfit_raw,data.frame(x=x_long))
pred_ortho<-predict(polyfit_orthog,data.frame(x=x_long))
pred_raw_ridge<-predict(polyfit_raw_ridge1,data=data.frame(x=x_long))[,'mu']
lines(x_long,pred_raw,col='red')
# add 0.1 offset to make visible
lines(x_long,pred_ortho+0.1,col='black')
lines(x_long,pred_raw_ridge,col='purple')
legend("bottomleft",legend=c('data sin(2 pi x) + noise','sin(2 pi x)', 
                             'raw poly','orthog poly +0.1 offset','raw poly + ridge regression'),
       fill=c('blue','green','red','black','purple'))

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