उच्च-क्रम बहुपद के लिए बड़े गुणांक क्यों हैं


13

मशीन लर्निंग पर बिशप की किताब में, यह डेटा बिंदुओं के एक सेट में एक बहुपद समारोह की वक्र-फिटिंग की समस्या पर चर्चा करता है।

बता दें कि M बहुपद का गुणनखंड है। यह बताता है कि

हम देखते हैं कि, जैसा कि एम बढ़ता है, गुणांक का परिमाण आमतौर पर बड़ा हो जाता है। M = 9 बहुपद के लिए विशेष रूप से, गुणांक बड़े सकारात्मक और नकारात्मक मानों को विकसित करके डेटा के लिए बारीक हो गए हैं ताकि संबंधित बहुपद समारोह प्रत्येक डेटा बिंदुओं से बिल्कुल मेल खाते हों, लेकिन डेटा बिंदुओं के बीच (विशेषकर के सिरों के बीच) रेंज) फ़ंक्शन बड़े दोलनों को प्रदर्शित करता है।

मुझे समझ में नहीं आता है कि बड़े मान डेटा बिंदुओं को अधिक बारीकी से फिटिंग क्यों करते हैं। मुझे लगता है कि बेहतर फिटिंग के बजाय दशमलव के बाद मान अधिक सटीक हो जाएंगे।


पुस्तक x को 10 समान बिंदुओं पर जहां शून्य माध्य और 'लघु' विचरण के साथ गौसियन है (इसलिए फिटिंग के साथ 9 आयामी बहुपद पर विचार करें) 10 अंक ...[ 0 , 1 ] εy=sin(2πx)+ϵ[0,1]ϵ
seanv507

जवाबों:


18

यह उच्च-क्रम के बहुपदों के साथ एक प्रसिद्ध मुद्दा है, जिसे रूज की घटना के रूप में जाना जाता है । संख्यात्मक रूप से यह वैंडरमोंड मैट्रिक्स के बीमार कंडीशनिंग के साथ जुड़ा हुआ है , जो गुणांक डेटा में छोटे बदलावों और / या संगणना में राउंडऑफ के प्रति संवेदनशील बनाता है (यानी मॉडल stably पहचानने योग्य नहीं है )। इस जवाब को SciComp SE पर भी देखें ।

इस समस्या के कई समाधान हैं, उदाहरण के लिए चेबीशेव सन्निकटन , चौरसाई विभाजन , और तिखोनोव नियमितीकरण । Tikhonov नियमितीकरण रिज प्रतिगमन का एक सामान्यीकरण है , एक आदर्श को दंडित करता हैगुणांक वेक्टर , जहां वजन मैट्रिक्स को लिए व्युत्पन्न कुछ व्युत्पन्न ऑपरेटर है। दोलनों को दंडित करने के लिए, आप उपयोग कर सकते हैं , जहां बहुपद डेटा पर मूल्यांकन किया जाता है।θ Λ Λ θ = पी ' ' [ एक्स ] पी [ x ]||Λθ]||θΛΛθ=p[x]p[x]

EDIT: उपयोगकर्ता hxd1011 द्वारा दिए गए उत्तर में कहा गया है कि संख्यात्मक अशुभ समस्याओं में से कुछ को ऑर्थोगोनल पॉलीओनियम्स का उपयोग करके संबोधित किया जा सकता है, जो एक अच्छा बिंदु है। हालांकि मैं ध्यान दूंगा कि उच्च-क्रम के बहुपद के साथ पहचान की समस्या अभी भी बनी हुई है। यही है, संख्यात्मक बीमार कंडीशनिंग "इन्फिनिटिसिमल" पर्टर्बेशन्स (उदाहरण के लिए राउंडऑफ़) की संवेदनशीलता के साथ जुड़ा हुआ है, जबकि "सांख्यिकीय" बीमार कंडीशनिंग "संवेदनशीलता" परिमितताओं (जैसे आउटलेर;) के लिए संवेदनशीलता को आमंत्रित करता है; इनवॉइस समस्या अशुभ है )।

मेरे दूसरे पैराग्राफ में बताए गए तरीके इस बाहरी संवेदनशीलता से चिंतित हैं। आप इस संवेदनशीलता को मानक रेखीय प्रतिगमन मॉडल के उल्लंघन के रूप में सोच सकते हैं, जो कि एक मिसफिट का उपयोग करके स्पष्ट रूप से मानता है कि डेटा गाऊसी है। स्प्लिन्स और तिखोनोव नियमितीकरण फिट पर पहले से चिकनाई लगाकर इस बाह्य संवेदनशीलता से निपटते हैं। Chebyshev सन्निकटन से संबंधित एक का उपयोग करके निरंतर डोमेन पर लागू होता है , न कि केवल डेटा बिंदुओं पर। हालांकि चेबीशेव ऑर्थोगोनल हैं (एक निश्चित भार वाले आंतरिक उत्पाद), मेरा मानना ​​है कि अगर डेटा पर मिसफिट के साथ उपयोग किया जाता है, तो वे अभी भी संवेदनशीलता होगी।एल एल 2L2LL2


@ hxd1011 जो सच है, और मैंने Chebyshev बहुपद का उदाहरण दिया। क्या ऑर्थोगोनल पॉलीओनियल्स हमेशा अभ्यास में समस्या का समाधान करेंगे, अगर हैं और डेटा-मिसफिट अभी भी ? मुझे लगता है कि रंज घटना अभी भी इस मामले में गुणांक में विश्वसनीयता के मुद्दों का कारण L2
बनेगी

1
+1। टिप्पणी पर अच्छा लगा । किसी के लिए यह सोचकर कि यह कहां से आता है, यह अध्ययन करना कि चौरसाई का काम कितना आसान है। p
मैथ्यू पारा

1
मैं इस "वैंडमॉन्डे मैट्रिक्स के बीमार कंडीशनिंग" के बारे में और अधिक कैसे सीख सकता हूं?
मैथ्यू ड्र्यू

@ मैथ्यू ड्यूर्री I आमतौर पर hxd1011 द्वारा सुझाए गए अनुभवजन्य दृष्टिकोण को भी करता है। हालाँकि, आपकी क्वेरी के बाद एक त्वरित Google ने हाल ही में एक पेपर का खुलासा किया है जो ब्याज का भी हो सकता है: वैंडर्मांडो मैट्रिस कितने बुरे हैं? (वीवाई पैन, 2015) । (उदाहरण के लिए वह संबोधित करता है कि क्यों डीएफटी
मैट्रिस वैंडर्मोंड

धन्यवाद @ जियोमैट 22। मेरे लिए आपको Google बनाने के लिए क्षमा करें, मैंने पूछा कि मुझे लगा कि आपके पास कुछ व्यक्तिगत पसंदीदा स्रोत हो सकते हैं।
मैथ्यू ड्र्यू

8

पहली चीज जिसे आप जांचना चाहते हैं, वह यह है कि क्या लेखक कच्चे पॉलीओनियम्स बनाम ऑर्थोगोनल पॉलिनॉमिअल्स के बारे में बात कर रहा है ।

रूढ़िवादी बहुपद के लिए। गुणांक "बड़ा" नहीं हो रहा है।

यहां 2 वें और 15 वें क्रम बहुपद विस्तार के दो उदाहरण दिए गए हैं। पहले हम दूसरे क्रम विस्तार के लिए गुणांक दिखाते हैं।

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

ध्यान दें, हम ऑर्थोगोनल पॉलीओनियम्स का उपयोग कर रहे हैं , इसलिए निचले क्रम का गुणांक ठीक उसी प्रकार है जैसे उच्च क्रम के परिणामों में संबंधित शब्द। उदाहरण के लिए, पहले मॉडल के लिए अवरोधन और गुणांक दोनों मॉडल के लिए 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

मुझे यकीन नहीं है कि वाक्यविन्यास सही है, लेकिन आप ऑर्थोगोनल वी कच्चे के परिणामों के विपरीत क्यों नहीं करते हैं, कुछ की तर्ज पर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))
एंटनी परेलाडा

@AntoniParellada अच्छा सुझाव, मैं संशोधित करूंगा। BTW, हम आसान विस्तार से कर सकते हैंpoly(x,2,raw=T)
Haitao Du

अच्छी चाल ... मुझे लगता है, फिर, आप 15 से चिपक सकते हैं, और कर सकते हैं summary(lm(mpg~poly(wt,15, raw=T),mtcars))। गुणांक में बड़े पैमाने पर प्रभाव!
एंटोनी परेलाडा

@ Seanv507 द्वारा मेरे जवाब पर एक टिप्पणी ने मुझे निम्नलिखित के बारे में उत्सुक किया। यदि आप ऑर्थोगोनल पॉलीओनियम्स का उपयोग करते हैं, और आउटलेर्स के प्रति संवेदनशीलता कम करना चाहते हैं, तो क्या मानक रिज प्रतिगमन पर्याप्त होगा? या उच्च क्रम, अधिक दोलन बहुपद अभी भी भार ~ आदेश की आवश्यकता होगी? (मुझे लगता है कि बाद में, जैसे कि एक डीएफटी मैट्रिक्स ऑर्थोगोनल है, लेकिन उच्च आवृत्तियों का वजन अभी भी कम होगा। मुझे इस विशेष मामले के साथ (अप्रिय) अनुभव हुआ है!)
जियोमैट 22

3

अभिषेक, आप सही हैं कि गुणांक की सटीकता में सुधार से सटीकता में सुधार होगा।

हम देखते हैं कि, जैसा कि एम बढ़ता है, गुणांक का परिमाण आमतौर पर बड़ा हो जाता है। M = 9 बहुपद के लिए विशेष रूप से, गुणांक बड़े सकारात्मक और नकारात्मक मानों को विकसित करके डेटा के लिए बारीक हो गए हैं ताकि संबंधित बहुपद समारोह प्रत्येक डेटा बिंदुओं से बिल्कुल मेल खाते हों, लेकिन डेटा बिंदुओं के बीच (विशेषकर के सिरों के बीच) रेंज) फ़ंक्शन बड़े दोलनों को प्रदर्शित करता है।

मुझे लगता है कि परिमाण मुद्दा बिशप के समग्र बिंदु के बजाय अप्रासंगिक है - कि सीमित डेटा पर एक जटिल मॉडल का उपयोग करने से 'ओवरफिटिंग' होता है। उनके उदाहरण में एक 9 आयामी बहुपद (यानी 10 चर और 10 अज्ञात) का अनुमान लगाने के लिए 10 डेटा पॉइंट का उपयोग किया जाता है।

यदि हम साइन लहर (कोई शोर नहीं) फिट करते हैं, तो फिट पूरी तरह से काम करता है, क्योंकि साइन तरंगों [एक निश्चित अंतराल पर] को बहुपद का उपयोग करके मनमानी सटीकता के साथ अनुमानित किया जा सकता है। हालांकि, बिशप के उदाहरण में हमारे पास एक निश्चित मात्रा में 'शोर' है जिसे हमें फिट नहीं होना चाहिए। जिस तरह से हम करते हैं, वह डेटा पॉइंट्स की संख्या को मॉडल वेरिएबल्स की संख्या (बहुपद गुणांक) को बड़े या नियमितीकरण का उपयोग करके रखता है। 9 वां आदेश बहुपद पर 10 डेट अंक (0,1) पर फिट

नियमितीकरण मॉडल पर 'नरम' बाधाओं को लगाता है (जैसे रिज रिग्रेशन में) आप जिस लागत फ़ंक्शन को कम करने की कोशिश करते हैं वह 'फिटिंग एरर' और मॉडल कॉम्प्लेक्सिटी का एक संयोजन है: जैसे रिज रिग्रेशन में जटिलता को वर्ग गुणांक के योग से मापा जाता है- यह प्रभाव त्रुटि को कम करने पर एक लागत लगाता है - गुणांक को बढ़ाने की अनुमति केवल तभी दी जाएगी जब इसमें फिटिंग की त्रुटि में बड़ी कमी हो [कितना बड़ा पर्याप्त है यह मॉडल जटिलता अवधि पर गुणक द्वारा निर्दिष्ट किया गया है]। इसलिए उम्मीद यह है कि उपयुक्त गुणक का चयन करके हम अतिरिक्त छोटे शोर शब्द के लिए फिट नहीं होंगे, क्योंकि फिट में सुधार गुणांक में वृद्धि को उचित नहीं ठहराता है।

आपने पूछा कि बड़े गुणांक फिट की गुणवत्ता में सुधार क्यों करते हैं। अनिवार्य रूप से, इसका कारण यह है कि कार्य का अनुमान (पाप + शोर) एक बहुपद नहीं है, और बहुपद के साथ शोर प्रभाव को अनुमानित करने के लिए आवश्यक वक्रता में बड़े बदलाव के लिए बड़े गुणांक की आवश्यकता होती है।

ध्यान दें कि ऑर्थोगोनल पॉलीओनियम्स का उपयोग करने का कोई प्रभाव नहीं है (मैंने केवल 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'))
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.