उच्च आयाम ( ) में रिज रिग्रेशन बेकार है ? ओएलएस ओवरफिट करने में कैसे विफल हो सकता है?


50

भविष्यवक्ताओं और नमूना आकार साथ एक अच्छी पुरानी प्रतिगमन समस्या पर विचार करें । सामान्य ज्ञान यह है कि ओएलएस आकलनकर्ता ओवरफिट करेगा और आम तौर पर रिज रिग्रेशन अनुमानक द्वारा बेहतर प्रदर्शन करेगा:यह एक इष्टतम नियमितीकरण पैरामीटर खोजने के लिए क्रॉस-मान्यता का उपयोग करने के लिए मानक है । यहां मैं 10-गुना सीवी का उपयोग करता हूं। स्पष्टीकरण अद्यतन: जब , "OLS आकलनकर्ता" द्वारा मैं समझता हूं कि " द्वारा दिया गया "न्यूनतम-मानक OLS आकलनकर्ता"pβ = ( एक्स एक्स + λ मैं ) - 1 एक्स y λn

β^=(XX+λI)1Xy.
λβ OLS = ( एक्स एक्स ) + एक्स y = एक्स + y n<p
β^OLS=(XX)+Xy=X+y.

मेरे पास और p> 1000 के साथ एक डेटासेट है । सभी भविष्यवाणियों को मानकीकृत किया जाता है, और काफी कुछ हैं जो (अकेले) y की भविष्यवाणी करने में एक अच्छा काम कर सकते हैं । यदि मैं यादृच्छिक रूप से एक छोटा-ईश का चयन करता हूं, तो p = 50 <n , भविष्यवक्ताओं की संख्या, मुझे एक उचित CV कर्व मिलता है: \ lambda की बड़ी वैल्यू जीरो आर-स्क्वेर, \ _ लैम्ब्डा के छोटे वैल्यू निगेटिव आर-स्क्वैयर (क्योंकि ओवरफिटिंग) और बीच में कुछ अधिकतम है। के लिए पी = 100> n वक्र समान दिखता है। हालाँकि, पी की तुलना में बहुत बड़ा है, उदाहरण के लिए पी = 1000 , मुझे कोई अधिकतम नहीं मिलता है: वक्र पठार, जिसका अर्थ है कि ओएलएसn=80p>1000yλ λ p = 100 > n p p = 1000 λ 0p=50<nλλp=100>npp=1000λ0 प्रदर्शन इष्टतम के साथ रिज प्रतिगमन के रूप में अच्छा λ

यहाँ छवि विवरण दर्ज करें

यह कैसे संभव है और यह मेरे डेटासेट के बारे में क्या कहता है? क्या मुझे कुछ स्पष्ट याद आ रहा है या यह वास्तव में काउंटर-सहज है? p=100 और p = 1000 के बीच कोई गुणात्मक अंतर कैसे हो सकता है, p=1000यह देखते हुए कि दोनों n से बड़े हैं n?

किन परिस्थितियों में n <p के लिए न्यूनतम-मानक OLS समाधान ओवरफिट n<p नहीं है ?


अद्यतन: टिप्पणियों में कुछ अविश्वास था, इसलिए यहां एक प्रतिलिपि प्रस्तुत करने योग्य उदाहरण का उपयोग किया गया है glmnet। मैं पायथन का उपयोग करता हूं लेकिन आर उपयोगकर्ता आसानी से कोड को अनुकूलित करेंगे।

%matplotlib notebook

import numpy as np
import pylab as plt
import seaborn as sns; sns.set()

import glmnet_python    # from https://web.stanford.edu/~hastie/glmnet_python/
from cvglmnet import cvglmnet; from cvglmnetPlot import cvglmnetPlot

# 80x1112 data table; first column is y, rest is X. All variables are standardized
mydata = np.loadtxt('../q328630.txt')   # file is here https://pastebin.com/raw/p1cCCYBR
y = mydata[:,:1]
X = mydata[:,1:]

# select p here (try 1000 and 100)
p = 1000

# randomly selecting p variables out of 1111
np.random.seed(42)
X = X[:, np.random.permutation(X.shape[1])[:p]]

fit = cvglmnet(x = X.copy(), y = y.copy(), alpha = 0, standardize = False, intr = False, 
               lambdau=np.array([.0001, .001, .01, .1, 1, 10, 100, 1000, 10000, 100000]))
cvglmnetPlot(fit)
plt.gcf().set_size_inches(6,3)
plt.tight_layout()

यहाँ छवि विवरण दर्ज करें यहाँ छवि विवरण दर्ज करें


2
@DJohnson कोई मजाक नहीं है। सामान्य 10-गुना CV, जिसका अर्थ है कि प्रत्येक प्रशिक्षण सेट में n = 72 है और प्रत्येक परीक्षण सेट में n = 8 है।
अमीबा का कहना है कि मोनिका

2
यह एक सामान्य सीवी से बहुत दूर है । यह देखते हुए कि एक खोज परिणाम की तरह कोई भी कैसे उम्मीद कर सकता है?
माइक हंटर

3
@DJohnson मुझे समझ नहीं आता कि आप यह क्यों कह रहे हैं कि यह सामान्य से बहुत दूर है। यह वही है जो 10 गुना सीवी है।
अमीबा का कहना है कि मोनिका

2
@ seanv507 मैं देख रहा हूं। खैर, मैं सुझाव देता हूं कि "लैम्ब्डा = 0 के साथ समाधान" को "लैम्ब्डा = 0 के साथ न्यूनतम-मानक समाधान" के रूप में परिभाषित करें। मुझे लगता है कि मेरा प्रश्न निम्नानुसार सुधार किया जा सकता है: किन परिस्थितियों में n- पी ओवरफ़िट बनाम नॉटफ़िट के साथ न्यूनतम-मानक ओएलएस समाधान होगा?
अमीबा का कहना है कि मोनिका

3
@amoeba: इस प्रश्न के लिए धन्यवाद। यह अब तक बेहद शिक्षाप्रद और दिलचस्प रहा है।
us --r11852

जवाबों:


23

के सैद्धांतिक पीसीए में कई छोटे घटकों की उपस्थिति के कारण एक प्राकृतिक नियमितीकरण होता है । इन छोटे घटकों को स्पष्ट रूप से छोटे गुणांक का उपयोग करके शोर को फिट करने के लिए उपयोग किया जाता है। न्यूनतम मानक OLS का उपयोग करते समय, आप कई छोटे स्वतंत्र घटकों के साथ शोर को फिट करते हैं और इसमें रिज नियमितिकरण के बराबर एक नियमित प्रभाव होता है। यह नियमितीकरण अक्सर बहुत मजबूत होता है, और इसे "एंटी-रेगुलराइजेशन" के रूप में जाना जाता है, इसे नकारात्मक रिज के रूप में उपयोग करके क्षतिपूर्ति करना संभव है । उस स्थिति में, आप देखेंगे कि MSE वक्र का न्यूनतम ऋणात्मक मान लिए प्रकट होता है λxλ

सैद्धांतिक पीसीए द्वारा, मेरा मतलब है:

मान लें कि एक बहुभिन्नरूपी सामान्य वितरण है। एक रैखिक आइसोमेट्री जैसे कि जहां विकर्ण है: के घटक स्वतंत्र हैं। बस तिरछे द्वारा प्राप्त किया जाता है ।यू = ( एक्स ) ~ एन ( 0 , डी ) डी यू डी ΣxN(0,Σ)fu=f(x)N(0,D)DuDΣ

अब मॉडल लिखा जा सकता है (एक रैखिक सममितीय डॉट उत्पाद को संरक्षित करता है)। यदि आप लिखते हैं , तो मॉडल को लिखा जा सकता है । इसके अलावारिज या न्यूनतम आदर्श OLS की तरह इसलिए फिटिंग तरीकों को पूरी तरह से isomorphic हैं: की आकलनकर्ता द्वारा छवि है की आकलनकर्ता की ।y=β.x+ϵy=f(β).f(x)+ϵγ=f(β)y=γ.u+ϵβ=γy=γ.u+ϵfy=β.x+ϵ

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

आइए देखें कि क्या होता है जब हम एक मॉडल में कई छोटे भिन्न स्वतंत्र भविष्यवक्ताओं को जोड़ते हैं:

प्रमेय

गुणांक साथ रिज नियमितिकरण समतुल्य है (जब ):λp

  • नकली स्वतंत्र भविष्यवाणियों को जोड़ना (प्रत्येक के लिए केंद्रित और समान रूप से वितरित) प्रसरणpλp
  • न्यूनतम आदर्श OLS आकलनकर्ता के साथ समृद्ध मॉडल फिटिंग
  • सच्चे भविष्यवक्ताओं के लिए केवल पैरामीटर रखना

(स्केच) प्रमाण

हम यह साबित करने जा रहे हैं कि लागत कार्य समान रूप से समान हैं। आइए मॉडल को वास्तविक और नकली भविष्यवाणियों में विभाजित करें: । रिज की लागत कार्य (सच्चे भविष्यवक्ताओं के लिए) लिखा जा सकता है:y=βx+βx+ϵ

costλ=β2+1λyXβ2

न्यूनतम मानदंड OLS का उपयोग करते समय, प्रतिक्रिया पूरी तरह से फिट होती है: त्रुटि शब्द 0. है। लागत फ़ंक्शन केवल मापदंडों के मानदंड के बारे में है। इसे असली मापदंडों और नकली लोगों में विभाजित किया जा सकता है:

costλ,p=β2+inf{β2Xβ=yXβ}

सही अभिव्यक्ति में, न्यूनतम मानक समाधान निम्न द्वारा दिया जाता है:

β=X+(yXβ)

अब लिए SVD का उपयोग करना :X

X=UΣV

X+=VΣ+U

हम देखते हैं कि के आदर्श अनिवार्य रूप से की विलक्षण मूल्यों पर निर्भर करता है इस बात का विलक्षण मूल्यों के reciprocals हैं । का सामान्यीकृत संस्करण । मैंने साहित्य को देखा है और बड़े यादृच्छिक मेट्रिक्स के विलक्षण मूल्यों को अच्छी तरह से जाना जाता है। के लिए और इतना बड़ा, कम से कम और अधिकतम विलक्षण मूल्यों करके लगाया जाता है (देखें प्रमेय 1.1 ):βX+XXp/λXpnsminsmax

smin(p/λX)p(1n/p)
smax(p/λX)p(1+n/p)

चूंकि, बड़े , 0 की ओर जाता है, हम बस यह कह सकते हैं कि सभी एकवचन मान द्वारा अनुमानित हैं । इस प्रकार:pn/pp

β1λyXβ

आखिरकार:

costλ,pβ2+1λyXβ2=costλ

नोट : इससे कोई फर्क नहीं पड़ता कि आप अपने मॉडल में नकली भविष्यवक्ताओं के गुणांक रखते हैं। विचरण द्वारा शुरू की है । इस प्रकार आप अपने MSE को एक कारक बढ़ाते हैं, जो वैसे भी 1 की ओर जाता है। किसी भी तरह आपको असली की तुलना में नकली भविष्यवाणियों का इलाज करने की आवश्यकता नहीं है।βxλpβ21pyXβ2npMSE(β)1+n/p

अब, @ अमीबा के डेटा पर वापस जाएं। सैद्धांतिक पीसीए को (सामान्य माना जाता है) को लागू करने के बाद , रैखिक रेखागणित द्वारा एक चर में परिवर्तित हो जाता है , जिसके घटक स्वतंत्र होते हैं और कम होते क्रम में क्रमबद्ध होते हैं । समस्या रूपांतरित समस्या बराबर है ।xxuy=βx+ϵy=γu+ϵ

अब कल्पना करें कि घटकों का विचरण कैसा दिखता है:

यहाँ छवि विवरण दर्ज करें

अंतिम घटकों के कई पर विचार करें, उनके विचरण का योग कहें । उनमें से प्रत्येक के पास एक भिन्नता है जो अनुमानित रूप से बराबर है और स्वतंत्र है। वे प्रमेय में नकली भविष्यवक्ताओं की भूमिका निभाते हैं।pλλ/p

यह तथ्य @ जॉनी के मॉडल में स्पष्ट है: केवल सैद्धांतिक पीसीए का पहला घटक से जुड़ा हुआ है (यह आनुपातिक ) है और इसमें भारी भिन्नता है। अन्य सभी घटक ( समानुपाती ) में तुलनात्मक रूप से बहुत छोटे विचरण होते हैं (सहसंयोजक मैट्रिक्स लिखें और इसे देखने के लिए इसे विकर्ण करें) और नकली भविष्यवक्ताओं की भूमिका निभाएं। मैंने गणना की कि यहाँ नियमितीकरण पूर्ववर्ती से जबकि जबकि true । यह निश्चित रूप से अधिक सिकुड़ता है। यह इस तथ्य से दिखाई देता है कि अंतिम MSE आदर्श MSE से बहुत बड़ा है। नियमितीकरण प्रभाव बहुत मजबूत है।yx¯xix¯N(0,1p2)γ1γ12=1p

रिज द्वारा इस प्राकृतिक नियमितीकरण में सुधार करना कभी-कभी संभव है। सबसे पहले आपको कभी-कभी राइम में बड़े (1000, 10000 ...) प्रमेय में आवश्यकता होती है ताकि रिज को गंभीरता से लिया जा सके और की बारीकियों को एक अपव्यय की तरह है। लेकिन यह यह भी दर्शाता है कि रिज एक स्वाभाविक रूप से मौजूदा अंतर्निहित नियमितीकरण पर एक अतिरिक्त नियमितीकरण है और इस प्रकार केवल एक बहुत छोटा प्रभाव हो सकता है। कभी-कभी यह प्राकृतिक नियमितीकरण पहले से ही बहुत मजबूत होता है और रिज भी एक सुधार नहीं हो सकता है। इससे अधिक, यह नियमित रूप से विरोधी उपयोग करने के लिए बेहतर है: नकारात्मक गुणांक के साथ रिज। यह @ जॉनी के मॉडल ( ) के लिए MSE दिखाता है , का उपयोग करते हुए :ppp=1000λR

यहाँ छवि विवरण दर्ज करें


2
+1 बहुत अच्छा, यह लिखने के लिए धन्यवाद। मुझे लगता है कि यह स्पष्ट करना महत्वपूर्ण है कि जब आप "नियमितीकरण" कहते हैं तो आपका मतलब है (रिज) का नियमितीकरण। एक उम्मीद करेगा कि लैस्सो या इलास्टिक नेट बेहतर व्यवहार कर सकते हैं और वास्तव में वही है जो लोग स्थितियों में उपयोग कर रहे हैं । इस तरह की सेटिंग में कोई भी शुद्ध रिज का उपयोग नहीं करता है और मानक सलाह है कि नियमितता का उपयोग किया जाए; इसलिए शुद्ध रिज के व्यवहार में केवल शैक्षणिक रुचि हो सकती है। फिर भी, यह बहुत आश्चर्यजनक है कि हम इसे यहाँ खोज रहे हैं। यह सुप्रसिद्ध क्यों नहीं है ?? L2np
अमीबा का कहना है कि मोनिका

1
पूरी तरह से हार्ड कोडित लिए आनुपातिक । क्षमा करें, मेरे पास कुछ उचित समय नहीं था। मेरा मुख्य ध्यान न्यूनतम-मानक OLS का व्यवहार था, यह देखने के लिए कि यह आपके उदाहरण से अलग है और 40 फर्स्ट पर "कुछ बहुत बुरा नियमितीकरण नहीं" हिंसक रूप से बेहतर था। λσ2
बेनोइट सांचेज

3
मुझे लगता है कि मैं रहस्य समझ लिया है: गुणांक के साथ रिज नियमितीकरण मिन-आदर्श को जोड़ने OLS बराबर है नकली भविष्यवक्ताओं विचरण के साथ प्रत्येक (बड़े के लिए asymptotically )। आपके डेटा और जॉनी के मॉडल में यह पीसीए से सबसे कम विचरण घटकों के लिए कुछ भी धन्यवाद किए बिना होता है। अब मुझे यह स्पष्ट रूप से समझाने का एक तरीका खोजने के लिए समय चाहिए ...λpλ/pp
बेनोइट सांचेज़

1
मैंने एक छोटी सी बात को स्पष्ट किया: नकली भविष्यवक्ताओं के गुणांक त्रुटि को बहुत अधिक नहीं बढ़ाते हैं (प्रमाण के अंत में नोट देखें)। यह महत्वपूर्ण है क्योंकि आपके डेटा / जॉनी में वे अनिवार्य रूप से बरकरार हैं।
बेनोइट सांचेज़

3
मैंने नकारात्मक रिज की कोशिश की। मैं विश्वास नहीं कर सकता, लेकिन यह काम करता है !!! (और न केवल जॉनी के मॉडल पर ...)
बेनोइट सांचेज़

16

बढ़िया चल रही चर्चा के लिए सभी को धन्यवाद। इस मामले की जड़ यह प्रतीत होती है कि न्यूनतम-मानक ओएलएस प्रभावी रूप से संकोचन का प्रदर्शन कर रहा है जो रिज प्रतिगमन के समान है। ऐसा लगता है जब भी । विडंबना यह है कि शुद्ध शोर भविष्यवाणियों को जोड़ना भी एक बहुत ही अजीब रूप या नियमितीकरण के रूप में इस्तेमाल किया जा सकता है।pn


भाग I कृत्रिम डेटा और विश्लेषणात्मक सीवी के साथ प्रदर्शन

@ जॉनी (+1) वास्तव में सरल कृत्रिम उदाहरण के साथ आया था जिसे मैं यहां थोड़ा अनुकूल करूंगा। आकार और का ऐसे उत्पन्न होते हैं कि सभी चर इकाई विचरण के साथ गाऊसी हैं, और प्रत्येक भविष्यवक्ता और प्रतिक्रिया के बीच सहसंबंध । मैं को ठीक कर दूंगा ।Xn×pyρρ=.2

मैं लीव-वन-आउट सीवी का उपयोग करूंगा क्योंकि चुकता त्रुटि के लिए विश्लेषणात्मक अभिव्यक्ति है: इसे PRESS के रूप में जाना जाता है , "वर्गों की अनुमानित राशि"। जहां अवशिष्ट हैं और है हैट मैट्रिक्स SV के संदर्भ में । यह बिना उपयोग किए बिना @ जॉनी के परिणामों को दोहराने की अनुमति देता है और वास्तव में क्रॉस-वेलिडेशन किए बिना (मैं PR के अनुपात को के वर्गों के योग की साजिश रच रहा हूं ):

PRESS=i(ei1Hii)2,
ei
e=yy^=yHy,
H
H=X(XX+λI)1X=US2S2+λU
X=USVglmnety

यहाँ छवि विवरण दर्ज करें

यह विश्लेषणात्मक दृष्टिकोण पर सीमा की गणना करने की अनुमति देता है । बस को PRESS सूत्र में प्लग करने से काम नहीं चलता: जब और , अवशिष्ट सभी शून्य हैं और हैट मैट्रिक्स विकर्ण पर लोगों के साथ पहचान मैट्रिक्स है, जिसका अर्थ है कि प्रेस में अंश समीकरण अपरिभाषित हैं। लेकिन यदि हम पर सीमा की गणना करते हैं , तो यह साथ न्यूनतम-मानक OLS समाधान के अनुरूप होगा ।λ0λ=0n<pλ=0λ0λ=0

ट्रिक हैट मैट्रिक्स का टेलर विस्तार करना है जब : यहाँ मैंने ग्राम मैट्रिक्स ।λ0

H=U11+λ/S2UU(1λ/S2)U=IλUS2U=IλG1.
G=XX=US2U

हम लगभग पूर्ण हो चुके हैं:लैम्ब्डा बाहर रद्द हो गया, इसलिए यहां हमारे पास सीमित मूल्य है। मैंने इसे ऊपर के फिगर पर (जहां ) पैनल पर एक बड़ी ब्लैक डॉट के साथ प्लॉट किया था , और यह पूरी तरह से मेल खाता है।

PRESS=i(λ[G1y]iλGii1)2=i([G1y]iGii1)2.
p>n

अद्यतन फ़रवरी 21. उपरोक्त सूत्र सटीक है, लेकिन हम आगे के अनुमानों को करके कुछ अंतर्दृष्टि प्राप्त कर सकते हैं। ऐसा लगता है कि में विकर्ण पर लगभग समान मूल्य हैं भले ही में बहुत असमान मूल्य हैं (शायद इसलिए कि सभी स्वदेशी को बहुत अच्छी तरह से मिलाता है)। तो के लिए प्रत्येक हम है कि जहां कोणीय कोष्ठक औसत को दर्शाते हैं। इस सन्निकटन का उपयोग करते हुए, हम फिर से लिख सकते हैं:यह अनुमान लाल खुले घेरे के साथ ऊपर की आकृति पर दिखाया गया है।G1SUiGii1S2

PRESSS2S2Uy2.

यह बड़ा या की तुलना में छोटा होगा या नहीं विलक्षण मूल्यों पर निर्भर करता है । इस अनुकरण में का पहला पीसी के साथ जोड़ा जाता इसलिए बड़ी है और अन्य सभी नियम छोटे हैं। (मेरे वास्तविक आंकड़ों में, को अग्रणी पीसी द्वारा अच्छी तरह से भविष्यवाणी की गई है।) अब, मामले में, यदि के कॉलम पर्याप्त रूप से यादृच्छिक हैं, तो सभी एकवचन मान एक-दूसरे के करीब होंगे (लगभग पंक्तियाँ) ओर्थोगोनल)। "मुख्य" शब्दy2=Uy2SyXU1yypnXU1y1 से कम के गुणक से गुणा किया जाएगा। अंत की शर्तों को 1 से बड़े कारकों से गुणा किया जाएगा लेकिन बहुत बड़ा नहीं। कुल मिलाकर मानदंड कम हो जाता है। इसके विपरीत, मामले में, कुछ बहुत छोटे विलक्षण मान होंगे। उलटा होने के बाद वे बड़े कारक बन जाएंगे जो समग्र मानदंड में वृद्धि करेंगे।pn

[यह तर्क बहुत हाथ से लहराता है; मुझे उम्मीद है कि इसे और सटीक बनाया जा सकता है।]

एक पवित्रता की जाँच के रूप में, यदि मैं S = diag(flipud(diag(S)));तब तक एकवचन मानों के क्रम को स्वैप कर देता हूँ, तो पूर्वानुमानित MSE 2 वें और 3 वें फलक पर हर जगह से ऊपर है ।1

figure('Position', [100 100 1000 300])
ps = [10, 100, 1000];

for pnum = 1:length(ps)
    rng(42)
    n = 80;
    p = ps(pnum);
    rho = .2;
    y = randn(n,1);
    X = repmat(y, [1 p])*rho + randn(n,p)*sqrt(1-rho^2);

    lambdas = exp(-10:.1:20);
    press = zeros(size(lambdas));
    [U,S,V] = svd(X, 'econ');
    % S = diag(flipud(diag(S)));   % sanity check

    for i = 1:length(lambdas)
        H = U * diag(diag(S).^2./(diag(S).^2 + lambdas(i))) * U';
        e = y - H*y;
        press(i) = sum((e ./ (1-diag(H))).^2);
    end

    subplot(1, length(ps), pnum)
    plot(log(lambdas), press/sum(y.^2))
    hold on
    title(['p = ' num2str(p)])
    plot(xlim, [1 1], 'k--')

    if p > n
        Ginv = U * diag(diag(S).^-2) * U';
        press0 = sum((Ginv*y ./ diag(Ginv)).^2);
        plot(log(lambdas(1)), press0/sum(y.^2), 'ko', 'MarkerFaceColor', [0,0,0]);

        press0approx = sum((diag(diag(S).^-2/mean(diag(S).^-2)) * U' * y).^2);
        plot(log(lambdas(1)), press0approx/sum(y.^2), 'ro');
    end
end

भाग द्वितीय। नियमितीकरण के रूप में शुद्ध शोर भविष्यवक्ताओं को जोड़ना

@Jonny, @Benoit, @Paul, @Dikran, और अन्य लोगों द्वारा अच्छे तर्क दिए गए थे कि भविष्यवक्ताओं की संख्या बढ़ने से न्यूनतम-मानक OLS समाधान सिकुड़ जाएगा। दरअसल, एक बार , किसी भी नए भविष्यवक्ता केवल न्यूनतम-मानक समाधान के मानक को कम कर सकते हैं। तो भविष्यवक्ताओं को जोड़ने से मानदंड नीचे धकेल दिया जाएगा, कुछ हद तक कि कैसे रिज प्रतिगमन आदर्श को दंडित कर रहा है।p>n

तो क्या इसे नियमितीकरण की रणनीति के रूप में इस्तेमाल किया जा सकता है? हम और शुरू करते हैं और फिर नियमित प्रयास के रूप में शुद्ध शोर पूर्वसूचक जोड़ते रहते हैं । मैं LOOCV करूंगा और रिज के लिए LOOCV के साथ तुलना (ऊपर के रूप में गणना की गई)। ध्यान दें कि भविष्यवाणियों पर प्राप्त करने के बाद , मैं इसे पर "छोटा" कर रहा हूं क्योंकि मुझे केवल मूल भविष्यवक्ताओं में दिलचस्पी है।n=80p=40qβ^p+qp

यहाँ छवि विवरण दर्ज करें

यह काम करता हैं!!!

वास्तव में, किसी को बीटा को "छंटनी" करने की आवश्यकता नहीं है; यहां तक ​​कि अगर मैं पूर्ण बीटा और पूर्ण भविष्यवाणियों का उपयोग करता हूं, तो मुझे अच्छा प्रदर्शन मिल सकता है (सही सबप्लॉट पर धराशायी लाइन)। मुझे लगता है कि इस प्रश्न में मेरे वास्तविक आंकड़ों की नकल होती है: केवल कुछ भविष्यवाणियां वास्तव में भविष्यवाणी कर रही हैं , उनमें से अधिकांश शुद्ध शोर हैं, और वे एक नियमितीकरण के रूप में काम करते हैं। इस शासन में अतिरिक्त रिज नियमितीकरण बिल्कुल भी मदद नहीं करता है।p+qy

rng(42)
n = 80;
p = 40;
rho = .2;
y = randn(n,1);
X = repmat(y, [1 p])*rho + randn(n,p)*sqrt(1-rho^2);

lambdas = exp(-10:.1:20);
press = zeros(size(lambdas));
[U,S,V] = svd(X, 'econ');

for i = 1:length(lambdas)
    H = U * diag(diag(S).^2./(diag(S).^2 + lambdas(i))) * U';
    e = y - H*y;
    press(i) = sum((e ./ (1-diag(H))).^2);
end

figure('Position', [100 100 1000 300])
subplot(121)
plot(log(lambdas), press/sum(y.^2))
hold on
xlabel('Ridge penalty (log)')
plot(xlim, [1 1], 'k--')
title('Ridge regression (n=80, p=40)')
ylim([0 2])

ps = [0 20 40 60 80 100 200 300 400 500 1000];
error = zeros(n, length(ps));
error_trunc = zeros(n, length(ps));
for fold = 1:n
    indtrain = setdiff(1:n, fold);
    for pi = 1:length(ps)
        XX = [X randn(n,ps(pi))];
        if size(XX,2) < size(XX,1)
            beta = XX(indtrain,:) \ y(indtrain,:);
        else
            beta = pinv(XX(indtrain,:)) * y(indtrain,:);
        end
        error(fold, pi) = y(fold) - XX(fold,:) * beta;
        error_trunc(fold, pi) = y(fold) - XX(fold,1:size(X,2)) * beta(1:size(X,2));
    end
end

subplot(122)
hold on
plot(ps, sum(error.^2)/sum(y.^2), 'k.--')
plot(ps, sum(error_trunc.^2)/sum(y.^2), '.-')
legend({'Entire beta', 'Truncated beta'}, 'AutoUpdate','off')
legend boxoff
xlabel('Number of extra predictors')
title('Extra pure noise predictors')
plot(xlim, [1 1], 'k--')
ylim([0 2])

@MartijnWeterings इस प्रयोग में, मैं n = 80 और p = 40 से शुरू करता हूं। जैसा कि भविष्यवक्ताओं की कुल संख्या (p + q) n = 80 तक पहुंचती है, समस्या अस्वाभाविक हो जाती है और OLS समाधान अत्यधिक रूप से समाप्त हो जाता है। Q = 40 के आसपास त्रुटि में एक बहुत बड़ा शिखर है। जैसे ही p + q> n, "न्यूनतम-मानक" बाधा अंदर आती है और त्रुटि कम होने लगती है, लेकिन जब तक वह q = 0 के साथ वापस नहीं हो जाता है, तब तक कुछ समय लगता है। यह q = 70, अर्थात p + q = 130 के आसपास होता है। उसके बाद, त्रुटि और भी कम हो रही है और प्लॉट का यह हिस्सा रिज रिग्रेशन प्लॉट के समान है। क्या इस का कोई मतलब निकलता है?
अमीबा का कहना है कि मोनिका

@MartijnWeterings पहली टिप्पणी पर: हम एक ही पृष्ठ पर हैं। दूसरी टिप्पणी पर: मेरे प्रश्न में मैं बीटा को कम नहीं कर रहा हूँ, यह सही है। लेकिन वास्तव में अगर मैं अपने सिमुलेशन ( y(fold) - XX(fold,:) * betaइसके बजाय उपयोग XX(fold,1:size(X,2)) * beta(1:size(X,2))) में बीटा को छोटा नहीं करता , तो परिणाम बहुत अधिक नहीं बदलते हैं। मुझे लगता है कि मुझे इसे अपने उत्तर में जोड़ना चाहिए। मुझे लगता है कि मेरा मूल डेटा इस तरह का व्यवहार दिखाता है।
अमीबा का कहना है कि मोनिका

(१/२): मैं अभी भी टिप्पणियों और कोड को समझने के लिए सभी के माध्यम से अपना काम कर रहा हूं, लेकिन मेरे लिए एक विचार उत्पन्न होता है: क्या इस घटना के बीच एक रिश्ता है जिसे हम देख रहे हैं, और रिज प्रतिगमन और यादृच्छिक प्रभावों के बीच का संबंध?
रयान सीमन्स

(2/2): प्रति रान्डेल के जवाब के अनुसार यहां ( आंकड़े . stackexchange.com/questions/122062/… ), हम यादृच्छिक प्रभावों और रिज प्रतिगमन के बीच एक अनुमान के बराबर देखते हैं, जहां लंबोदर अवशिष्ट के अनुपात के अनुपात के बराबर है यादृच्छिक प्रभाव। यहाँ, बेनोइट सांचेज़ के उत्तर के अनुसार, हम देखते हैं कि रिज प्रतिगमन एक स्वतंत्र संख्या की तुलना में नकली पूर्वसूचियों की एक मनमानी संख्या को जोड़ने के बराबर है, जिसमें लैंबडा के एक फंक्शन और मापदंडों की संख्या के बराबर है। ऐसा लगता है कि एक वैचारिक संबंध है।
रयान सीमन्स

@ यामोइबा यह एक गलती थी। मैट्रिक्स एक्स में एक स्केल वेक्टर को जोड़ने से कुछ हद तक नियमित होता है लेकिन रिज रिग्रेशन या शोर वैक्टर के समान नहीं होता है। यह मुझे आश्चर्यचकित करता है कि क्या होता है जब हम प्रत्येक वेक्टर से थोड़ी मात्रा में नकारात्मक रूप से सहसंबद्ध (या कम सकारात्मक) बनाने के लिए प्रत्येक x से थोड़ा सा घटाते हैं । यह कुछ 'नकारात्मक' नियमितीकरण करने के लिए। 1000 वैक्टरों के नियमितीकरण को 'पूर्ववत' करने के लिए (कुछ बिंदु पर यह बहुत अधिक हो सकता है, जैसा कि आप शिखर / इष्टतम नियमितीकरण गुणांक के साथ देखते हैं जो अब लगभग सीमा के बाहर है)। y
सेक्स्टस एम्पिरिकस

15

यहां एक कृत्रिम स्थिति है जहां यह होता है। मान लीजिए कि प्रत्येक प्रेडिक्टर वैरिएबल बड़ी मात्रा में गाऊसी शोर के साथ लक्ष्य चर की एक प्रति है। सबसे अच्छा संभव मॉडल सभी भविष्यवक्ता चर का औसत है।

library(glmnet)
set.seed(1846)
noise <- 10
N <- 80
num.vars <- 100
target <- runif(N,-1,1)
training.data <- matrix(nrow = N, ncol = num.vars)
for(i in 1:num.vars){
  training.data[,i] <- target + rnorm(N,0,noise)
}
plot(cv.glmnet(training.data, target, alpha = 0,
               lambda = exp(seq(-10, 10, by = 0.1))))

100 भविष्यवक्ताओं के साथ विभिन्न लंबो के लिए एमएसई

100 चर "सामान्य" तरीके से व्यवहार करते हैं: लैम्ब्डा के कुछ सकारात्मक मूल्य नमूना त्रुटि से बाहर निकलते हैं।

लेकिन उपरोक्त कोड में अंकों को बढ़ाकर 1000 तक करें, और यहां नया MSE पथ है। (मैंने खुद को समझाने के लिए लॉग इन किया (लैम्ब्डा) = -100 तक।

1000 भविष्यवक्ताओं के साथ विभिन्न लंबो के लिए एमएसई

मुझे लगता है कि क्या हो रहा है

कम नियमितीकरण के साथ कई मापदंडों को फिट करते समय, गुणांक उच्च विचरण के साथ अपने असली मूल्य के आसपास बेतरतीब ढंग से वितरित किया जाता है।

जैसा कि भविष्यवक्ताओं की संख्या बहुत बड़ी हो जाती है, "औसत त्रुटि" शून्य की ओर झुक जाती है, और यह बेहतर हो जाता है कि केवल गुणांक गिरने दें जहां वे सब कुछ कर सकते हैं और उन्हें 0 की ओर पूर्वाग्रह करने की तुलना में सब कुछ योग करते हैं।

मुझे यकीन है कि सही भविष्यवाणी की यह स्थिति सभी भविष्यवाणियों का औसत है, केवल यही समय नहीं होता है, लेकिन मुझे नहीं पता कि यहां सबसे बड़ी आवश्यक स्थिति को कैसे इंगित किया जाए।

संपादित करें:

बहुत कम लंबोदर के लिए "फ्लैट" व्यवहार हमेशा होगा, क्योंकि समाधान न्यूनतम-मानक ओएलएस समाधान में परिवर्तित हो रहा है। इसी तरह वक्र बहुत उच्च लंबो के लिए समतल होगा क्योंकि समाधान 0. में परिवर्तित होता है। उन दो समाधानों में से कोई एक न्यूनतम iff नहीं होगा।

न्यूनतम-मानक OLS समाधान क्यों (तुलनात्मक रूप से) इस मामले में अच्छा है? मुझे लगता है कि यह निम्नलिखित व्यवहार से संबंधित है जो मुझे बहुत ही सहज ज्ञान युक्त लगता है, लेकिन प्रतिबिंब पर बहुत मायने रखता है।

max.beta.random <- function(num.vars){
  num.vars <- round(num.vars)
  set.seed(1846)
  noise <- 10
  N <- 80
  target <- runif(N,-1,1)
  training.data <- matrix(nrow = N, ncol = num.vars)

  for(i in 1:num.vars){
    training.data[,i] <- rnorm(N,0,noise)
  }
  udv <- svd(training.data)

  U <- udv$u
  S <- diag(udv$d)
  V <- udv$v

  beta.hat <- V %*% solve(S) %*% t(U) %*% target

  max(abs(beta.hat))
}


curve(Vectorize(max.beta.random)(x), from = 10, to = 1000, n = 50,
      xlab = "Number of Predictors", y = "Max Magnitude of Coefficients")

abline(v = 80)

भविष्यवक्ताओं की संख्या बढ़ने पर गुणांक के अधिकतम परिमाण का प्लॉट

बेतरतीब ढंग से उत्पन्न भविष्यवाणियों के साथ प्रतिक्रिया के लिए असंबंधित, पी बढ़ जाती है के रूप में गुणांक बड़ा हो जाते हैं, लेकिन एक बार पी की तुलना में बहुत बड़ा है वे शून्य की ओर सिकुड़ते हैं। यह मेरे उदाहरण में भी होता है। बहुत शिथिल, उन समस्याओं के लिए अनियमित समाधानों को संकोचन की आवश्यकता नहीं है क्योंकि वे पहले से ही बहुत छोटे हैं!

यह एक तुच्छ कारण के लिए होता है। को के स्तंभों के रैखिक संयोजन के रूप में बिल्कुल व्यक्त किया जा सकता है । गुणांक का न्यूनतम-मानक वेक्टर है। जैसा कि अधिक स्तंभों को जोड़ा जाता है के मान को कम या स्थिर रहना चाहिए, क्योंकि एक संभावित रैखिक संयोजन पिछले गुणांक को समान रखने और नए गुणांक को सेट करने के लिए है ।yXβ^β^0


1
(+1)। घटना इस प्रकार प्रतीत होती है जब भविष्यवक्ता सहसंबद्ध होते हैं। औपचारिक रूप से इसका मतलब यह नहीं है कि त्रुटि वक्र में सकारात्मक लिए कोई न्यूनतम नहीं है , न ही कि 0 पर सीमा बड़ी नहीं है। इसका मतलब यह है कि वक्र सपाट हो जाता है, और यह कि छोटे लिए दहलीज को नियमित करने के लिए बड़े लिए 0 की ओर झुकाव को रोकना चाहिए । यहाँ यह सीमा कम्प्यूटेशनल सीमा से आगे निकल जाती है लेकिन फायरबग का उत्तर बताता है कि यह हमेशा मौजूद हो सकता है। λλp
बेनोइट सांचेज

1
आपको glmnetअपने अपडेट की आवश्यकता क्यों है ? यदि आपको केवल न्यूनतम मानक OLS समाधान की आवश्यकता है तो एक प्रत्यक्ष सूत्र है (मेरे प्रश्न में दूसरा सूत्र देखें) और यदि कोई SVD की गणना करता है, तो यह सूत्र बस बन जाता है । आर में शायद एक फ़ंक्शन भी है जो इस समाधान की गणना करता है, लेकिन मैं वास्तव में आर :) नहीं जानता हूंX=USVβ^=VS1Uy
अमीबा कहते हैं कि मोनिका

2
इसके बारे में कुछ और सोचना यह बिल्कुल भी आश्चर्यजनक नहीं है। को में वैक्टर के रैखिक संयोजन के रूप में बिल्कुल व्यक्त किया जा सकता है । सबसे छोटे मानक के साथ गुणांक का वेक्टर है। जब आप किसी वेक्टर को का मान जोड़ते हैं , तो उसी आकार को कम या कम करना चाहिए, क्योंकि आप पुराने गुणांक को समान रख सकते हैं और नए को शून्य पर सेट कर सकते हैं। एक्स बीटा बीटाyXβ^β^
जॉनी लोमोंड

3
जॉनी का उदाहरण एक अच्छा है क्योंकि इसका पहले ही विश्लेषण किया जा चुका है: जेम्स-स्टीन अनुमानक देखें । जब आयाम 3 या अधिक के साथ एक निश्चित वेक्टर का मतलब होता है, तो हम हमेशा औसत औसत से शून्य की ओर पूर्वाग्रह करके सुधार कर सकते हैं, जो कि कम से कम रिज प्रतिगमन करता है। मुझे आश्चर्य है कि शायद इस मामले में सुधार बहुत मामूली है? θ
पॉल

3
यह अच्छी तरह से जाना जाता है तथ्य यह है कि रिज प्रतिगमन जोड़ने के समकक्ष है प्रत्येक नमूना होने के साथ डाटासेट करने के लिए अतिरिक्त "नकली" नमूने एक सुविधा और अन्य सभी स्थानों शून्य में मूल्य, और सभी इसी प्रतिक्रियाओं शून्य किया जा रहा है। (यह इस रूप में आरआर लागत समारोह को फिर से लिखने के लिए तुच्छ है।) अब मैं सोच रहा हूं कि क्या अतिरिक्त सुविधाओं (जैसे शुद्ध शोर?) को जोड़ने का एक तरीका है जो समान प्रभाव होगा। बेशक अतिरिक्त सुविधाओं को जोड़ने का मतलब है कि इसकी को बढ़ाएगा, लेकिन केवल "मूल" भविष्यवाणियों पर इसके मूल्यों को देख सकता है। @ पाओलpबीटाλβ^
अमीबा का कहना है कि मोनिका

6

इसलिए मैंने mlrR में विशेष पैकेज का उपयोग करके नेस्टेड क्रॉस-मान्यता चलाने का फैसला किया, यह देखने के लिए कि वास्तव में मॉडलिंग दृष्टिकोण से क्या आ रहा है।

कोड (साधारण नोटबुक पर चलने में कुछ मिनट लगते हैं)

library(mlr)
daf = read.csv("https://pastebin.com/raw/p1cCCYBR", sep = " ", header = FALSE)

tsk = list(
  tsk1110 = makeRegrTask(id = "tsk1110", data = daf, target = colnames(daf)[1]),
  tsk500 = makeRegrTask(id = "tsk500", data = daf[, c(1,sample(ncol(daf)-1, 500)+1)], target = colnames(daf)[1]),
  tsk100 = makeRegrTask(id = "tsk100", data = daf[, c(1,sample(ncol(daf)-1, 100)+1)], target = colnames(daf)[1]),
  tsk50 = makeRegrTask(id = "tsk50", data = daf[, c(1,sample(ncol(daf)-1, 50)+1)], target = colnames(daf)[1]),
  tsk10 = makeRegrTask(id = "tsk10", data = daf[, c(1,sample(ncol(daf)-1, 10)+1)], target = colnames(daf)[1])
)

rdesc = makeResampleDesc("CV", iters = 10)
msrs = list(mse, rsq)
configureMlr(on.par.without.desc = "quiet")
bm3 = benchmark(learners = list(
    makeLearner("regr.cvglmnet", alpha = 0, lambda = c(0, exp(seq(-10, 10, length.out = 150))),
    makeLearner("regr.glmnet", alpha = 0, lambda = c(0, exp(seq(-10, 10, length.out = 150))), s = 151)
    ), tasks = tsk, resamplings = rdesc, measures = msrs)

परिणाम

getBMRAggrPerformances(bm3, as.df = TRUE)
#   task.id    learner.id mse.test.mean rsq.test.mean
#1    tsk10 regr.cvglmnet     1.0308055  -0.224534550
#2    tsk10   regr.glmnet     1.3685799  -0.669473387
#3   tsk100 regr.cvglmnet     0.7996823   0.031731316
#4   tsk100   regr.glmnet     1.3092522  -0.656879104
#5  tsk1110 regr.cvglmnet     0.8236786   0.009315037
#6  tsk1110   regr.glmnet     0.6866745   0.117540454
#7    tsk50 regr.cvglmnet     1.0348319  -0.188568886
#8    tsk50   regr.glmnet     2.5468091  -2.423461744
#9   tsk500 regr.cvglmnet     0.7210185   0.173851634
#10  tsk500   regr.glmnet     0.6171841   0.296530437

वे मूल रूप से कार्यों में समान हैं।

तो, इष्टतम लैम्ब्डा के बारे में क्या?

sapply(lapply(getBMRModels(bm3, task.ids = "tsk1110")[[1]][[1]], "[[", 2), "[[", "lambda.min")
# [1] 4.539993e-05 4.539993e-05 2.442908e-01 1.398738e+00 4.539993e-05
# [6] 0.000000e+00 4.539993e-05 3.195187e-01 2.793841e-01 4.539993e-05

ध्यान दें कि लंबोदर पहले से ही रूपांतरित हैं। कुछ गुना भी कम से कम मेमने उठाया ।λ=0

मैं थोड़ा और अधिक glmnetखोजा और न ही वहाँ कम से कम भेड़ का बच्चा उठाया है की खोज की। चेक:

संपादित करें:

अमीबा द्वारा टिप्पणियों के बाद, यह स्पष्ट हो गया कि नियमितीकरण पथ glmnetअनुमान में एक महत्वपूर्ण कदम है , इसलिए कोड अब इसे दर्शाता है। इस तरह, अधिकांश विसंगतियां गायब हो गईं।

cvfit = cv.glmnet(x = x, y = y, alpha = 0, lambda = exp(seq(-10, 10, length.out = 150)))
plot(cvfit)

यहाँ छवि विवरण दर्ज करें

निष्कर्ष

तो, मूल रूप से, वास्तव में फिट को बेहतर बनाता है ( संपादित करें: लेकिन बहुत अधिक नहीं! )।λ>0

यह कैसे संभव है और यह मेरे डेटासेट के बारे में क्या कहता है? क्या मुझे कुछ स्पष्ट याद आ रहा है या यह वास्तव में काउंटर-सहज है?

हम डेटा की स्थापना की सही वितरण नजदीक होने की संभावना है शून्य से भी बड़ा महत्व है। हालांकि इसके बारे में कुछ भी सहज नहीं है।λ

संपादित करें: ध्यान रखें, हालांकि, जब हम कॉल करते हैं तो रिज नियमितिकरण पथ पिछले पैरामीटर अनुमानों का उपयोग करता है glmnet, लेकिन यह मेरी विशेषज्ञता से परे है। यदि हम lambdaअलगाव में वास्तव में कम सेट करते हैं , तो इससे प्रदर्शन में गिरावट की संभावना होगी।

संपादित करें: लैम्ब्डा चयन आपके डेटा के बारे में कुछ और कहता है। जैसे-जैसे बड़े लैम्ब्डा प्रदर्शन में कमी करते हैं, इसका मतलब है कि आपके मॉडल में तरजीही यानी बड़े, गुणांक हैं, क्योंकि बड़े लैम्ब्डा सभी गुणांक को शून्य की ओर सिकोड़ते हैं। यद्यपि अर्थ है कि आपके मॉडल में स्वतंत्रता की प्रभावी डिग्री स्वतंत्रता, की स्पष्ट डिग्री से छोटी है ।पीλ0p

P = 100 और p = 1000 के बीच कोई गुणात्मक अंतर कैसे हो सकता है, यह देखते हुए कि दोनों n से बड़े हैं?

p = 100p=1000 हमेशा की तरह कम से कम एक ही जानकारी या से अधिक होता है ।p=100


टिप्पणियाँ

ऐसा लगता है कि आप कुछ गैर-शून्य लैंबडा (मैं आपके आंकड़े को देख रहा हूं) के लिए एक छोटा न्यूनतम प्राप्त कर रहा हूं, लेकिन वक्र अभी भी वास्तव में इसके बाईं ओर सपाट है। तो मेरा मुख्य प्रश्न यह है कि λ → 0 क्यों नहीं है, क्योंकि यह बहुत अधिक नहीं है। मुझे अभी तक इसका उत्तर नहीं मिला। क्या आप यह सामान्य घटना होने की उम्मीद करते हैं? यानी n =p, lambda = 0 के साथ किसी भी डेटा के लिए [लगभग] इष्टतम लैंबडा के रूप में अच्छा प्रदर्शन करेंगे? या यह इन आंकड़ों के बारे में कुछ खास है? यदि आप टिप्पणियों में ऊपर देखते हैं, तो आप देखेंगे कि बहुत से लोग मुझे विश्वास भी नहीं करते थे कि यह संभव है।

मुझे लगता है कि आप परीक्षण प्रदर्शन के साथ सत्यापन प्रदर्शन को भ्रमित कर रहे हैं, और इस तरह की तुलना वारंटेड नहीं है।

संपादित करें: जब हम lambdaपूरे नियमितीकरण पथ प्रदर्शन को चलाने के बाद 0 पर सेट होते हैं, तो इस तरह से नीचा नहीं दिखाई देता है, इसलिए नियमितीकरण पथ यह समझना महत्वपूर्ण है कि क्या हो रहा है!

इसके अलावा, मैं आपकी अंतिम पंक्ति को नहीं समझता। P = 100 के लिए cv.glmnet आउटपुट देखें। इसका बहुत अलग आकार होगा। तो जब पी = 100 या पी = 1000 हो तो इस आकृति (बाईं ओर बनाम विषमता) पर क्या प्रभाव पड़ता है?

आइए दोनों के नियमितीकरण रास्तों की तुलना करें:

fit1000 = glmnet(x, y, alpha = 0, lambda = exp(seq(-10,10, length.out = 1001)))
fit100 = glmnet(x[, sample(1000, 100)], y, alpha = 0, lambda = exp(seq(-10,10, length.out = 1001)))
plot(fit1000, "lambda")

यहाँ छवि विवरण दर्ज करें

x11()
plot(fit100, "lambda")

यहाँ छवि विवरण दर्ज करें

यह स्पष्ट हो जाता है में वृद्धि पर बड़ा गुणांक मिलता , भले ही यह asymptotically-OLS रिज के लिए छोटे गुणांक है, दोनों भूखंडों के बाईं पर। तो, मूल रूप से, ग्राफ के बाईं ओर ओवरफिट करता है, और यह संभवतः उनके बीच व्यवहार के अंतर को स्पष्ट करता है।λ p = 100p=1000λp=100

यह से अधिक के लिए कठिन है , क्योंकि रिज गुणांक को शून्य तक सिकोड़ देता है, फिर भी वे कभी शून्य तक नहीं पहुंचते हैं। इसका मतलब यह है कि मॉडल की भविष्य कहनेवाला शक्ति कई और घटकों के बीच साझा की जाती है, जिससे शोर के द्वारा दूर किए जाने के बजाय अर्थ के आसपास भविष्यवाणी करना आसान हो जाता है।p=1000


+1 इन प्रयोगों को करने के लिए धन्यवाद! ऐसा लगता है कि आप कुछ गैर-शून्य लैंबडा (मैं आपके आंकड़े को देख रहा हूं) के लिए एक छोटा न्यूनतम प्राप्त कर रहा हूं, लेकिन वक्र अभी भी वास्तव में इसके बाईं ओर सपाट है। इसलिए मेरा मुख्य प्रश्न यह है कि क्यों को ध्यान में रखकर ओवरफिट नहीं किया जाता है। मुझे अभी तक इसका उत्तर नहीं मिला। क्या आप यह सामान्य घटना होने की उम्मीद करते हैं? , lambda = 0 के साथ किसी भी डेटा के लिए यानी [लगभग] उतना ही अच्छा होगा जितना कि इष्टतम lambda? या यह इन आंकड़ों के बारे में कुछ खास है? यदि आप टिप्पणियों में ऊपर देखते हैं, तो आप देखेंगे कि बहुत से लोग मुझे विश्वास भी नहीं करते थे कि यह संभव है। एन पीλ0np
अमीबा का कहना है कि मोनिका

इसके अलावा, मैं आपकी अंतिम पंक्ति को नहीं समझता। को देखो cv.glmnetपी = 100 के लिए उत्पादन। इसका बहुत अलग आकार होगा। तो जब पी = 100 या पी = 1000 हो तो इस आकृति (बाईं ओर बनाम विषमता पर असमता) को क्या प्रभावित करता है?
अमीबा का कहना है कि मोनिका

क्या आप जानते हैं कि क्या mlrचयन lambda.minया lambda.1se( cv.glmnetशब्दावली में)?
अमीबा का कहना है कि मोनिका

@ बंबा lambda.min। एक regr.cvglmnetशिक्षार्थी भी है , जो शायद किसी अन्य नियमों का चयन करने की अनुमति देता है।
फायरबग

धन्यवाद। सच कहूं तो मुझे आपके 1e-100 बेंचमार्क के आउटपुट की समझ नहीं है। जैसे पी = 1100 के लिए यह एमएसई = 1.45 देता है। लेकिन यहां आंतरिक लूप में कोई हाइपरपैरेट ट्यूनिंग नहीं है, इसलिए मूल रूप से किसी को आंतरिक सीवी लूप की आवश्यकता नहीं है। इसका मतलब है कि परिणाम लैंबडा = 1e-100 पर गैर-नेस्टेड सीवी के समान होना चाहिए। लेकिन हम पहले आंकड़े पर देखते हैं कि एमएसई लगभग 0.7 है। मुझे इससे कोई मतलब नहीं है।
अमीबा का कहना है कि मोनिका

5

कैसे (न्यूनतम आदर्श) OLS ओवरफिट करने में विफल हो सकता है?

संक्षेप में:

प्रायोगिक मापदंडों जो सच्चे मॉडल में (अज्ञात) मापदंडों के साथ संबंध रखते हैं, न्यूनतम मानदंड OLS फिटिंग प्रक्रिया में उच्च मूल्यों के साथ अनुमान लगाने की अधिक संभावना होगी। ऐसा इसलिए है क्योंकि वे 'मॉडल + शोर' फिट करेंगे, जबकि अन्य पैरामीटर केवल 'शोर' फिट करेंगे (इस प्रकार वे मॉडल के एक बड़े हिस्से को गुणांक के कम मूल्य के साथ फिट करेंगे और उच्च मूल्य होने की अधिक संभावना है न्यूनतम मानक OLS में)।

यह प्रभाव न्यूनतम मानक ओएलएस फिटिंग प्रक्रिया में ओवरफिटिंग की मात्रा को कम करेगा। प्रभाव अधिक स्पष्ट है यदि अधिक पैरामीटर उपलब्ध हैं तब से यह अधिक संभावना हो जाती है कि अनुमान में 'सच मॉडल' का एक बड़ा हिस्सा शामिल किया जा रहा है।

अधिक लम्बा हिस्सा:
(मुझे यकीन नहीं है कि मुझे यहाँ क्या करना है क्योंकि यह मुद्दा मेरे लिए पूरी तरह से स्पष्ट नहीं है, या मुझे नहीं पता कि प्रश्न को संबोधित करने के लिए उत्तर को कितनी सटीकता की आवश्यकता है)

नीचे एक उदाहरण है जिसे आसानी से बनाया जा सकता है और समस्या को प्रदर्शित कर सकता है। प्रभाव इतना अजीब नहीं है और उदाहरण बनाना आसान है।

  • मैंने चर के रूप में पाप-कार्य किए (क्योंकि वे लंबवत हैं)p=200
  • माप के साथ एक यादृच्छिक मॉडल बनाया । n=50
    • मॉडल का निर्माण केवल चर के साथ किया गया है, इसलिए 200 में से 190 चर ओवर-फिटिंग उत्पन्न करने की संभावना पैदा कर रहे हैं।tm=10
    • मॉडल गुणांक बेतरतीब ढंग से निर्धारित कर रहे हैं

इस उदाहरण के मामले में हम मानते हैं कि कुछ अति-फिटिंग है लेकिन सच्चे मॉडल से संबंधित मापदंडों के गुणांक का अधिक मूल्य है। इस प्रकार आर ^ 2 का कुछ सकारात्मक मूल्य हो सकता है।

नीचे दी गई छवि (और इसे उत्पन्न करने के लिए कोड) प्रदर्शित करती है कि ओवर-फिटिंग सीमित है। डॉट्स जो 200 मापदंडों के अनुमान मॉडल से संबंधित हैं। लाल बिंदु उन मापदंडों से संबंधित हैं जो 'सही मॉडल' में भी मौजूद हैं और हम देखते हैं कि उनका मूल्य अधिक है। इस प्रकार, वास्तविक मॉडल से संपर्क करने और 0 से ऊपर R ^ 2 प्राप्त करने की कुछ डिग्री है।

  • ध्यान दें कि मैंने ऑर्थोगोनल चर (साइन-फ़ंक्शंस) के साथ एक मॉडल का उपयोग किया था। यदि मापदंडों को सहसंबद्ध किया जाता है, तो वे अपेक्षाकृत उच्च गुणांक वाले मॉडल में हो सकते हैं और न्यूनतम मानक OLS में अधिक दंडित हो सकते हैं।
  • ध्यान दें कि जब हम डेटा पर विचार करते हैं तो 'ऑर्थोगोनल चर' ऑर्थोगोनल नहीं होते हैं। जब हम के संपूर्ण स्थान को एकीकृत करते हैं तब का आंतरिक उत्पाद केवल शून्य होता है, जब हमारे पास केवल कुछ नमूने । परिणाम यह है कि शून्य शोर के साथ भी ओवर-फिटिंग होगी (और आर ^ 2 मूल्य कई कारकों पर निर्भर करता है, एक तरफ शोर से निश्चित रूप से संबंध और , लेकिन यह भी महत्वपूर्ण है कि कितने चर हैं सही मॉडल में और उनमें से कितने फिटिंग मॉडल में हैं)।एक्स एक्स एन पीsin(ax)sin(bx)xxnp

ओवर-फिटिंग कम होने का उदाहरण

library(MASS)

par(mar=c(5.1, 4.1, 9.1, 4.1), xpd=TRUE)

p <- 200       
l <- 24000
n <- 50
tm <- 10

# generate i sinus vectors as possible parameters
t <- c(1:l)
xm <- sapply(c(0:(p-1)), FUN = function(x) sin(x*t/l*2*pi))

# generate random model by selecting only tm parameters
sel <- sample(1:p, tm)
coef <- rnorm(tm, 2, 0.5)

# generate random data xv and yv with n samples
xv <- sample(t, n)
yv <- xm[xv, sel] %*% coef + rnorm(n, 0, 0.1)

# generate model
M <- ginv(t(xm[xv,]) %*% xm[xv,])

Bsol <- M %*% t(xm[xv,]) %*% yv
ysol <- xm[xv,] %*% Bsol

# plotting comparision of model with true model
plot(1:p, Bsol, ylim=c(min(Bsol,coef),max(Bsol,coef)))
points(sel, Bsol[sel], col=1, bg=2, pch=21)
points(sel,coef,pch=3,col=2)

title("comparing overfitted model (circles) with true model (crosses)",line=5)
legend(0,max(coef,Bsol)+0.55,c("all 100 estimated coefficients","the 10 estimated coefficients corresponding to true model","true coefficient values"),pch=c(21,21,3),pt.bg=c(0,2,0),col=c(1,1,2))

रिज प्रतिगमन के संबंध में काटे गए बीटा तकनीक

मैंने अमीबा से अजगर कोड को आर में बदल दिया है और दो ग्राफ को एक साथ जोड़ दिया है। जोड़े गए शोर चर के साथ प्रत्येक न्यूनतम मानक OLS अनुमान के लिए मैं एक ही (लगभग) -norm के साथ एक रिज प्रतिगमन अनुमान का मिलान वेक्टर के लिए करता हूं । βl2β

  • ऐसा लगता है कि छंटे हुए शोर मॉडल बहुत कुछ करता है (केवल थोड़ा धीमा गणना करता है, और शायद थोड़ा अधिक अक्सर कम अच्छा होता है)।
  • हालांकि छंटनी के बिना प्रभाव बहुत कम मजबूत होता है।
  • मापदंडों और रिज दंड को जोड़ने के बीच यह पत्राचार जरूरी नहीं कि अति-फिटिंग की अनुपस्थिति के पीछे सबसे मजबूत तंत्र है। यह विशेष रूप से 1000 पी वक्र में देखा जा सकता है (प्रश्न की छवि में) लगभग 0.3 पर जा रहा है जबकि अन्य घटता, अलग-अलग पी के साथ, इस स्तर तक नहीं पहुंचता है, चाहे कोई भी रिज प्रतिगमन पैरामीटर हो। अतिरिक्त पैरामीटर, उस व्यावहारिक मामले में, रिज पैरामीटर की एक शिफ्ट के समान नहीं हैं (और मुझे लगता है कि यह इसलिए है क्योंकि अतिरिक्त पैरामीटर एक बेहतर, अधिक पूर्ण, मॉडल बनाएंगे)।

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

Rho = 0.2 रिज प्रतिगमन के साथ छंटनी शोर की तुलना करना

Rho = 0.4 रिज प्रतिगमन के साथ छंटनी शोर की तुलना करना

Rho = 0.2 शोर मापदंडों के विचरण को 2 तक बढ़ाता है रिज प्रतिगमन के साथ छंटनी शोर की तुलना करना

कोड उदाहरण

# prepare the data
set.seed(42)
n = 80
p = 40
rho = .2
y = rnorm(n,0,1)
X = matrix(rep(y,p), ncol = p)*rho + rnorm(n*p,0,1)*(1-rho^2)

# range of variables to add
ps = c(0, 5, 10, 15, 20, 40, 45, 50, 55, 60, 70, 80, 100, 125, 150, 175, 200, 300, 400, 500, 1000)
#ps = c(0, 5, 10, 15, 20, 40, 60, 80, 100, 150, 200, 300) #,500,1000)

# variables to store output (the sse)
error   = matrix(0,nrow=n, ncol=length(ps))
error_t = matrix(0,nrow=n, ncol=length(ps))
error_s = matrix(0,nrow=n, ncol=length(ps))

# adding a progression bar
pb <- txtProgressBar(min = 0, max = n, style = 3)

# training set by leaving out measurement 1, repeat n times 
for (fold in 1:n) {
    indtrain = c(1:n)[-fold]

    # ridge regression
    beta_s <- glmnet(X[indtrain,],y[indtrain],alpha=0,lambda = 10^c(seq(-4,2,by=0.01)))$beta
    # calculate l2-norm to compare with adding variables
    l2_bs <- colSums(beta_s^2)

    for (pi in 1:length(ps)) {
        XX = cbind(X, matrix(rnorm(n*ps[pi],0,1), nrow=80))
        XXt = XX[indtrain,]

        if (p+ps[pi] < n) {
            beta = solve(t(XXt) %*% (XXt)) %*% t(XXt) %*% y[indtrain]
        }
        else {
            beta = ginv(t(XXt) %*% (XXt)) %*% t(XXt) %*% y[indtrain]
        }

        # pickout comparable ridge regression with the same l2 norm      
        l2_b <- sum(beta[1:p]^2)
        beta_shrink <- beta_s[,which.min((l2_b-l2_bs)^2)] 

        # compute errors
        error[fold, pi] = y[fold] - XX[fold,1:p] %*% beta[1:p]
        error_t[fold, pi] = y[fold] - XX[fold,] %*% beta[]
        error_s[fold, pi] = y[fold] - XX[fold,1:p] %*% beta_shrink[]
    }
    setTxtProgressBar(pb, fold) # update progression bar
}

# plotting
plot(ps,colSums(error^2)/sum(y^2) , 
     ylim = c(0,2),
     xlab ="Number of extra predictors",
     ylab ="relative sum of squared error")
lines(ps,colSums(error^2)/sum(y^2))
points(ps,colSums(error_t^2)/sum(y^2),col=2)
lines(ps,colSums(error_t^2)/sum(y^2),col=2)
points(ps,colSums(error_s^2)/sum(y^2),col=4)
lines(ps,colSums(error_s^2)/sum(y^2),col=4)

title('Extra pure noise predictors')

legend(200,2,c("complete model with p + extra predictors",
               "truncated model with p + extra predictors",
               "ridge regression with similar l2-norm",
               "idealized model uniform beta with 1/p/rho"),
       pch=c(1,1,1,NA), col=c(2,1,4,1),lt=c(1,1,1,2))

# idealized model (if we put all beta to 1/rho/p we should theoretically have a reasonable good model)
error_op <- rep(0,n)
for (fold in 1:n) {
  beta = rep(1/rho/p,p)
    error_op[fold] = y[fold] - X[fold,] %*% beta
}
id <- sum(error_op^2)/sum(y^2)
lines(range(ps),rep(id,2),lty=2)

1
(+1) धन्यवाद। मुझे लगता है कि आपके उत्तर की शुरुआत में सहज तर्क समझ में आता है।
अमीबा का कहना है कि मोनिका

1

यदि आप रैखिक संचालकों से परिचित हैं, तो आप इस घटना को समझने के लिए सबसे सीधे रास्ते के रूप में मेरे उत्तर को पसंद कर सकते हैं: कम से कम मानक प्रतिगमन एकमुश्त विफल क्यों नहीं होता? इसका कारण यह है कि आपकी समस्या ( ) बीमार उलटा समस्या है और इसे हल करने के तरीकों में से एक छद्म उलटा है। नियमितीकरण हालांकि एक सुधार है।np

यह पेपर संभवतः सबसे कॉम्पैक्ट और प्रासंगिक व्याख्या है: लोरेंजो रोसास्को एट अल, लर्निंग, रेगुलराइजेशन एंड इल-पॉस्ड इनवर्स प्रॉब्लम्स । वे आपके प्रतिगमन समस्या को सीखने के रूप में सेट करते हैं, Eq.3 देखें।, जहां मापदंडों की संख्या अवलोकनों की संख्या से अधिक है: जहां हिल्बर्ट स्पेस पर एक रैखिक ऑपरेटर है और - शोर डेटा।जी δ

Ax=gδ,
Agδ

जाहिर है, यह एक बीमार-उलटा समस्या है। तो, आप इसे एसवीडी या मूर-पेनरोज़ उलटा के साथ हल कर सकते हैं, जो वास्तव में कम से कम मानक समाधान प्रस्तुत करेगा। इस प्रकार यह आश्चर्यजनक नहीं होना चाहिए कि आपका कम से कम मानक समाधान एकमुश्त विफल नहीं हो रहा है।

हालाँकि, यदि आप कागज का अनुसरण करते हैं तो आप देख सकते हैं कि रिज रिग्रेशन उपरोक्त में सुधार होगा। सुधार वास्तव में अनुमानक का एक बेहतर व्यवहार है, क्योंकि मूर-पेनरोज़ समाधान आवश्यक रूप से बाध्य नहीं है।

अपडेट करें

मुझे एहसास हुआ कि मैं यह स्पष्ट नहीं कर रहा था कि बीमार-समस्याएँ बहुत अधिक होती हैं। यहाँ कागज गैबर ए, बंगा जेआर का उद्धरण है। जैविक प्रणालियों के गतिशील मॉडल में मजबूत और कुशल पैरामीटर अनुमान । बीएमसी सिस्टम बायोलॉजी। 2015; 9: 74। डोई: 10.1186 / s12918-015-0219-2:

बड़ी संख्या में मापदंडों (ओवर-पैराड्रिज़ेशन), (ii) प्रायोगिक डेटा कमी और (iii) महत्वपूर्ण माप त्रुटियों [19, 40] के साथ इन समस्याओं के बीमार कंडीशनिंग आमतौर पर (i) मॉडल से उत्पन्न होते हैं। परिणामस्वरूप, हम अक्सर ऐसे गतिज मॉडल के ओवरफिटिंग प्राप्त करते हैं, अर्थात् उपलब्ध डेटा के लिए उचित फिट के साथ कैलिब्रेटेड मॉडल लेकिन सामान्यीकरण के लिए खराब क्षमता (कम भविष्य कहनेवाला मूल्य)

इसलिए, मेरे तर्क को निम्नानुसार कहा जा सकता है:

  • बीमार समस्याओं के कारण ओवरफिटिंग हो जाती है
  • (n <p) मामला एक अत्यंत बीमार-उलटा उलटा समस्या है
  • मूर-पेनरोस स्यूडो-इनवर्स (या एसवीडी जैसे अन्य उपकरण), जिसे आप के रूप में प्रश्न में संदर्भित करते हैं , एक बीमार-समस्या का हल करता हैX+
  • इसलिए, यह कम से कम कुछ हद तक ओवरफिटिंग का ध्यान रखता है, और यह आश्चर्यजनक नहीं होना चाहिए कि यह पूरी तरह से विफल नहीं होता है, एक नियमित ओएलएस के विपरीत होना चाहिए

फिर से, नियमितीकरण अभी भी एक अधिक मजबूत समाधान है।


1
(+1) धन्यवाद, लेकिन मैं यह नहीं देखता कि यह पेपर प्रासंगिक कैसे है। मैं इसे कल और अधिक विस्तार से देखूंगा। जहां वे कहते हैं कि न्यूनतम मानक OLS समाधान ओवरफिट नहीं होगा या नियमितीकरण के रूप में न्यूनतम मानक आवश्यकता को देखा जा सकता है?
अमीबा का कहना है कि मोनिका

1
जब आप पेपर पढ़ते हैं तो चर्चा करते हैं। वे कहते हैं कि छद्म उलटा नियमितीकरण नहीं है। वे जो कहते हैं, वह बीमार की समस्या का समाधान है। मैं जो कह रहा हूं वह यह है कि ओवरफिटिंग समस्या के कारण उत्पन्न होने वाली बीमारी के कारण होती है, इसलिए बाद वाले को संबोधित करने से आप पूर्व के साथ-साथ नियमितीकरण पर भी ध्यान नहीं देते हैं।
Aksakal

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

1
@Dikran वास्तव में अन्य रूप या नियमितीकरण अभी भी प्रदर्शन में सुधार कर सकते हैं: उदाहरण के लिए मैं मुख्य घटक प्रतिगमन के साथ या लोचदार नेट के साथ प्रदर्शन (न्यूनतम-मानक ओएलएस की तुलना में) सुधार कर सकता हूं। यह सिर्फ इतना है कि रिज नियमितीकरण बेकार हो जाता है। तंत्रिका नेटवर्क के अनुरूप एक आकर्षक विचार है जिसने मेरे दिमाग को पार नहीं किया है। हालांकि मैंने हाल ही में इसके बारे में क्या सोचा है, क्या कोई आश्चर्य नहीं है कि कोई भी यह नहीं समझता है कि बैच सामान्यकरण जैसी मुश्किल गहरी सीखने वाली चीजें वास्तव में काम क्यों करती हैं, यह देखते हुए कि सांख्यिकी 101 से रैखिक रिज प्रतिगमन भी इतना हैरान कर देने वाला हो सकता है :-)
अमीबा का कहना है कि

2
यह हाथ में मुख्य सवाल नहीं है, लेकिन मुझे लगता है कि यह अन्यथा प्रश्नों, उत्तरों और टिप्पणियों की उत्कृष्ट श्रृंखला को क्रॉस-मान्यता में लाने से दूर हो गया। इस चर्चा के लिए, डेटा को अनुकरण करने के लिए उपयोग किए जाने वाले रेखीय s से जनसंख्या रैखिक भविष्यवक्ता की गणना करना और रैखिक भविष्यवक्ता के किसी भी अनुमानक के MSE की गणना करना अधिक सरल होगा । और मैंने एक ऐसा मामला देखा है जहां मैं रिज रिग्रेशन (R पैकेज फ़ंक्शन) के लिए एक इष्टतम सही AIC नहीं ढूंढ सका । लेकिन मुझे फिर से चलाने की जरूरत है कि सोने के मानक के रूप में सही रैखिक भविष्यवक्ता का उपयोग करना। n < < pβn<<prmsols
फ्रैंक हरेल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.