เหตุใดจึงมีค่าสัมประสิทธิ์จำนวนมากสำหรับพหุนามลำดับที่สูงขึ้น


13

ในหนังสือของบิชอปเกี่ยวกับการเรียนรู้ของเครื่องมันกล่าวถึงปัญหาของการปรับฟังก์ชั่นพหุนามให้เหมาะกับจุดข้อมูล

ให้ M เป็นคำสั่งของพหุนามที่พอดี มันระบุว่า

เราเห็นว่าเมื่อ M เพิ่มขึ้นขนาดของสัมประสิทธิ์มักจะใหญ่ขึ้น โดยเฉพาะอย่างยิ่งสำหรับ M = 9 พหุนามสัมประสิทธิ์ได้ถูกปรับให้เข้ากับข้อมูลอย่างละเอียดโดยการพัฒนาค่าบวกและลบขนาดใหญ่เพื่อให้ฟังก์ชั่นพหุนามที่ตรงกันจับคู่แต่ละจุดข้อมูลตรง แต่ระหว่างจุดข้อมูล (โดยเฉพาะใกล้จุดสิ้นสุดของ ช่วง) ฟังก์ชั่นการจัดแสดงการสั่นขนาดใหญ่

ฉันไม่เข้าใจว่าทำไมค่าขนาดใหญ่จึงหมายถึงการปรับจุดข้อมูลให้ละเอียดยิ่งขึ้น ฉันคิดว่าค่าจะแม่นยำมากขึ้นหลังจากจุดทศนิยมแทนเพื่อการปรับที่ดีขึ้น


หนังสือเล่มนี้ถือว่า x ที่ 10 เว้นระยะห่างเท่ากันในโดยที่คือ gaussian โดยมีค่าเฉลี่ยเป็นศูนย์และความแปรปรวน 'เล็ก' (ดังนั้นการพิจารณาความเหมาะสมกับพหุนามมิติ 9 มิติ 10 คะแนน ...[ 0 , 1 ] ϵy=sin(2πx)+ϵ[0,1]ϵ
seanv507

คำตอบ:


18

นี่เป็นปัญหาที่รู้จักกันดีที่มีหลายชื่อลำดับสูงหรือที่เรียกว่าปรากฏการณ์ Runge ของ ตัวเลขมันมีความเกี่ยวข้องกับการป่วยปรับอากาศของเมทริกซ์ Vandermondeซึ่งจะทำให้ค่าสัมประสิทธิ์ความสำคัญมากต่อการเปลี่ยนแปลงเล็ก ๆ ในข้อมูลและ / หรือ roundoff ในการคำนวณ (เช่นรูปแบบที่ไม่เสถียรระบุตัวตน ) ดูคำตอบนี้ใน SciComp SE

มีโซลูชั่นหลายปัญหานี้เช่นมีประมาณ Chebyshev , เส้นโค้งเรียบและTikhonov regularization การทำให้เป็นระเบียบ Tikhonov เป็นลักษณะทั่วไปของการถดถอยสันเขา , การลงโทษบรรทัดฐานของสัมประสิทธิ์เวกเตอร์ที่ทำให้เมทริกซ์น้ำหนักเป็นไปอย่างราบรื่น หากต้องการลงโทษการแกว่งคุณอาจใช้โดยที่คือพหุนามที่ประเมินที่ข้อมูลθ Λ Λ θ = P ' ' [ x ] พี[ x ]||Λθ]||θΛΛθ=p[x]p[x]

แก้ไข: คำตอบโดยผู้ใช้ hxd1011 ตั้งข้อสังเกตว่าบางส่วนของปัญหาการปรับอากาศเชิงตัวเลขสามารถแก้ไขได้โดยใช้ชื่อพหุนามแบบมุมฉากซึ่งเป็นจุดที่ดี ฉันจะทราบว่าปัญหาการระบุตัวตนที่มีชื่อพหุนามสูงยังคงอยู่ นั่นคือตัวเลขเชิงปริมาณสัมพันธ์กับความไวต่อการก่อกวน "น้อย" (เช่น roundoff) ในขณะที่ "สถิติ" การปรับสภาพไม่ดีเกี่ยวข้องกับความไวต่อการรบกวน "จำกัด " (เช่นค่าผิดปกติปัญหาผกผันไม่ดี )

วิธีการที่กล่าวถึงในวรรคสองของฉันเกี่ยวข้องกับความอ่อนไหวนอก คุณสามารถนึกถึงความอ่อนไหวนี้ว่าเป็นการละเมิดโมเดลการถดถอยเชิงเส้นแบบมาตรฐานซึ่งการใช้ไม่เหมาะจะถือว่าข้อมูลเป็น Gaussian โดยปริยาย Splines และ Tikhonov normalization จะจัดการกับความไวที่เหนือกว่านี้ได้โดยการจัดวางให้เรียบเนียนก่อนที่จะสวมใส่ การประมาณ Chebyshev เกี่ยวข้องกับสิ่งนี้โดยใช้ misfit ที่นำไปใช้กับโดเมนต่อเนื่องนั่นไม่ใช่แค่ที่จุดข้อมูล แม้ว่าชื่อพหุนาม Chebyshev เป็น orthogonal (wrt ผลิตภัณฑ์ภายในถ่วงน้ำหนักบางอย่าง), ฉันเชื่อว่าถ้าใช้กับไม่เหมาะสมมากกว่าข้อมูลที่พวกเขาจะยังคงมีความไวเกินL L 2L2LL2


@ hxd1011 ที่เป็นจริงและฉันให้ตัวอย่างของชื่อพหุนาม Chebyshev ชื่อพหุนามมุมฉากจะแก้ปัญหาในทางปฏิบัติเสมอหรือไม่หากมีค่าผิดปกติและ data-misfit ยังคงเป็นหรือไม่? ฉันคิดว่าปรากฏการณ์ Runge ยังคงทำให้เกิดปัญหาความน่าเชื่อถือในค่าสัมประสิทธิ์ในกรณีนี้ (เช่นสำหรับการรบกวนที่ จำกัด / มากในข้อมูลเปรียบเทียบกับการL2
ปัดเศษที่น้อย

1
+1 ดีที่ความคิดเห็นสำหรับทุกคนที่สงสัยว่ามาจากไหนเรียนรู้ว่าการทำงานของเส้นโค้งที่ราบเรียบคือการเปิดหูเปิดตา p
Matthew Drury

1
ฉันจะเรียนรู้เพิ่มเติมเกี่ยวกับธุรกิจ "เงื่อนไขที่ไม่ดีของ vandermonde matrix" นี้ได้ที่ไหน
Matthew Drury

@ MatthewDrury ฉันมักจะทำตามวิธีเชิงประจักษ์ที่แนะนำโดย hxd1011 อย่างไรก็ตามหลังจากการสอบถามของคุณ Google ฉบับย่อเปิดเผยบทความล่าสุดที่อาจเป็นที่สนใจ: Vandermonde Matrices เลวร้ายเพียงใด? (VY แพน 2015) (ตัวอย่างเช่นเขากล่าวถึงสาเหตุที่การฝึกอบรม DFT เป็น Vandermonde แต่ไม่มีเงื่อนไขที่ไม่ดี)
GeoMatt22

ขอบคุณ @ GeoMatt22 ขออภัยที่ทำให้คุณเป็น google สำหรับฉันฉันถามเพราะฉันคิดว่าคุณอาจมีแหล่งที่ชื่นชอบส่วนตัว
Matthew Drury

8

สิ่งแรกที่คุณต้องการตรวจสอบคือถ้าผู้เขียนมีการพูดคุยเกี่ยวกับพหุนามดิบกับ polynomials

สำหรับพหุนามฉากมุมฉาก สัมประสิทธิ์ไม่ได้รับ "ใหญ่"

ต่อไปนี้เป็นสองตัวอย่างของการขยายพหุนามลำดับที่ 2 และ 15 ก่อนอื่นเราจะแสดงค่าสัมประสิทธิ์สำหรับการขยายคำสั่งที่ 2

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

จากนั้นเราแสดงลำดับที่ 15

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

โปรดทราบว่าเราใช้พหุนาม orthogonalดังนั้นค่าสัมประสิทธิ์การลดลงของคำสั่งนั้นจึงเหมือนกับคำที่ตรงกันในผลลัพธ์ของคำสั่งที่สูงขึ้น ตัวอย่างเช่นค่าตัดและค่าสัมประสิทธิ์สำหรับการสั่งซื้อครั้งแรกคือ 20.09 และ -29.11 สำหรับทั้งสองรุ่น

ในทางตรงกันข้ามถ้าเราใช้การขยายตัวดิบสิ่งนั้นจะไม่เกิดขึ้น และเราจะมีสัมประสิทธิ์ขนาดใหญ่และละเอียดอ่อน! ในตัวอย่างต่อไปนี้เราสามารถเห็นค่าสัมประสิทธิ์อยู่ในระดับ106

> 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

ฉันไม่แน่ใจว่าไวยากรณ์นั้นถูกต้อง แต่ทำไมคุณไม่เปรียบเทียบผลลัพธ์ของ orthogonal v raw กับบางสิ่งตามแนวของsummary(lm(mpg~poly(wt,2),mtcars)); summary(lm(mpg~poly(wt,5),mtcars)); summary(lm(mpg~ wt + I(wt^2),mtcars)); summary(lm(mpg~ wt + I(wt^2) + I(wt^3) + I(wt^4) + I(wt^5),mtcars))
Antoni Parellada

@ AntoniParellada คำแนะนำที่ดีฉันจะแก้ไข BTW เราสามารถทำได้ง่ายการขยายตัวโดยดิบpoly(x,2,raw=T)
ไฮเทาดู

เคล็ดลับดี ... ผมคิดว่าแล้วคุณสามารถติดถึง 15 summary(lm(mpg~poly(wt,15, raw=T),mtcars))และทำ ผลกระทบมากในค่าสัมประสิทธิ์!
Antoni Parellada

ความคิดเห็นเกี่ยวกับคำตอบของฉันโดย @ seanv507 ทำให้ฉันอยากรู้เกี่ยวกับสิ่งต่อไปนี้ ถ้าคุณใช้พหุนามแบบมุมฉากและต้องการลดความไวต่อค่าผิดปกติการถดถอยของสันเขามาตรฐานจะเพียงพอหรือไม่ หรือพหุนามที่มีออเดอร์มากขึ้นและยังต้องใช้น้ำหนักสั่งมากขึ้น (ฉันคิดว่าอันหลังอย่างเช่นเมทริกซ์ DFT นั้นเป็นแบบมุมฉาก แต่ก็ยังจำเป็นต้องใช้ความถี่สูงที่มีน้ำหนักลดฉันยังมีประสบการณ์ (ไม่พึงประสงค์) กับกรณีนี้!)
GeoMatt22

3

อืม, คุณพูดถูกที่การปรับปรุงความแม่นยำของสัมประสิทธิ์จะปรับปรุงความแม่นยำ

เราเห็นว่าเมื่อ M เพิ่มขึ้นขนาดของสัมประสิทธิ์มักจะใหญ่ขึ้น โดยเฉพาะอย่างยิ่งสำหรับ M = 9 พหุนามสัมประสิทธิ์ได้รับการปรับอย่างละเอียดไปยังข้อมูลโดยการพัฒนาค่าบวกและลบขนาดใหญ่เพื่อให้ฟังก์ชั่นพหุนามที่สอดคล้องกันตรงกับแต่ละจุดข้อมูลที่แน่นอน แต่ระหว่างจุดข้อมูล (โดยเฉพาะใกล้กับจุดสิ้นสุดของ ช่วง) ฟังก์ชั่นการจัดแสดงการสั่นขนาดใหญ่

ฉันคิดว่าปัญหาเรื่องขนาดค่อนข้างไม่เกี่ยวข้องกับประเด็นโดยรวมของบิชอป - การใช้แบบจำลองที่ซับซ้อนในข้อมูลที่ จำกัด นำไปสู่ ​​'การล้นเกิน' ในตัวอย่างของเขา 10 datapoints ถูกใช้เพื่อประเมินพหุนามมิติ 9 (เช่น 10 ตัวแปรและ 10 unknowns)

ถ้าเราพอดีกับคลื่นไซน์ (ไม่มีเสียงรบกวน) สัญญาณก็จะทำงานได้อย่างสมบูรณ์แบบเนื่องจากคลื่นไซน์ [ในช่วงเวลาคงที่] สามารถประมาณค่าได้อย่างแม่นยำโดยใช้พหุนาม อย่างไรก็ตามในตัวอย่างของบิชอปเรามี 'เสียง' จำนวนหนึ่งที่เราไม่ควรทำ วิธีที่เราทำคือการรักษาจำนวนดาต้าพอยน์ให้เป็นจำนวนของตัวแปรโมเดล (สัมประสิทธิ์พหุนาม) ที่มีขนาดใหญ่หรือโดยใช้การทำให้เป็นมาตรฐาน พหุนามลำดับที่ 9 พอดีกับ 10 จุดข้อมูลบน (0,1)

การทำให้เป็นมาตรฐานมีข้อ จำกัด 'อ่อน' ในแบบจำลอง (เช่นในการถดถอยสัน) ฟังก์ชันต้นทุนที่คุณพยายามลดให้น้อยที่สุดคือการรวมกันของ 'ข้อผิดพลาดที่เหมาะสม' และความซับซ้อนของโมเดล: เช่นในการถดถอยสันความซับซ้อนจะวัดโดยผลรวม สิ่งนี้ทำให้เกิดค่าใช้จ่ายในการลดข้อผิดพลาด - การเพิ่มสัมประสิทธิ์จะได้รับอนุญาตเฉพาะเมื่อมีการลดข้อผิดพลาดในการปรับขนาดใหญ่พอ [ขนาดใหญ่ใหญ่พอที่จะถูกระบุโดยตัวคูณในคำที่ซับซ้อนของแบบจำลอง] ดังนั้นความหวังก็คือการเลือกตัวทวีคูณที่เหมาะสมเราจะไม่เหมาะสมกับเสียงรบกวนเพิ่มเติมเนื่องจากการปรับปรุงแบบพอดีไม่ได้แสดงให้เห็นถึงการเพิ่มขึ้นของค่าสัมประสิทธิ์

คุณถามว่าเพราะเหตุใดสัมประสิทธิ์ขนาดใหญ่จึงปรับปรุงคุณภาพความพอดี โดยพื้นฐานแล้วเหตุผลก็คือฟังก์ชั่นที่ประมาณไว้ (sin + noise) ไม่ใช่พหุนามและการเปลี่ยนแปลงขนาดใหญ่ของความโค้งที่จำเป็นในการประมาณค่าเอฟเฟกต์เสียงกับพหุนามมีค่าสัมประสิทธิ์จำนวนมาก

โปรดทราบว่าการใช้ชื่อโพลิโนเมียลแบบมุมฉากไม่มีผลกระทบ (ฉันได้เพิ่มออฟเซตของ 0.1 เพียงเพื่อให้ชื่อโพลิโนเมียลแบบมุมฉากและดิบไม่อยู่ด้านบนของกันและกัน)

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'))
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.