मैं जेम्स, विटेन, हस्ती, तिब्शीरानी (2013) द्वारा 'ए इंट्रोडक्शन टू स्टैटिस्टिकल लर्निंग विद एप्लीकेशंस इन आर' पुस्तक में रिज रिग्रेशन / लास्सो पर §6.6 के माध्यम से जा रहा हूं ।
विशेष रूप से, मैं Ridge
R पैकेज 'ISLR' से 'Hitters' डेटासेट पर स्किकिट-लर्न मॉडल लागू करने की कोशिश कर रहा हूं । मैंने आर कोड में दिखाए गए समान फीचर सेट किए हैं। हालाँकि, मैं glmnet()
मॉडल से परिणामों के करीब नहीं पहुंच सकता । मैंने तुलना करने के लिए एक L2 ट्यूनिंग पैरामीटर चुना है। (scikit-learn में 'अल्फा' तर्क)।
अजगर:
regr = Ridge(alpha=11498)
regr.fit(X, y)
http://nbviewer.ipython.org/github/JWarmenhoven/ISL-python/blob/master/Notebooks/Chapter%206.ipynb
आर:
ध्यान दें कि तर्क alpha=0
का glmnet()
अर्थ है कि एक L2 जुर्माना लागू किया जाना चाहिए (रिज प्रतिगमन)। दस्तावेज़ीकरण के लिए एक भी मान दर्ज नहीं करने की चेतावनी दी गई है lambda
, लेकिन परिणाम आईएसएल के समान है, जहां एक वेक्टर का उपयोग किया जाता है।
ridge.mod <- glmnet(x,y,alpha=0,lambda=11498)
क्या अंतर का कारण बनता है?
संपादित करें: R में दंडित पैकेज से
उपयोग करते समय penalized()
, गुणांक scikit-learn के समान हैं।
ridge.mod2 <- penalized(y,x,lambda2=11498)
हो सकता है कि सवाल तो यह भी हो सकता है: 'क्या अंतर है glmnet()
और penalized()
जब कर रिज प्रतिगमन?
R पैकेज glmnet में उपयोग किए जाने वाले वास्तविक फोरट्रान कोड के लिए नया अजगर आवरण
https://github.com/civisanalytics/python-glmnet
sklearn.linear_model.Ridge
अनपेक्षितकृत अवरोधन अनुमान (मानक) और जुर्माना ऐसा है जिसके||Xb - y - intercept||^2 + alpha ||b||^2
लिए न्यूनतम हैb
। दंड के सामने कारक1/2
या1/n_samples
या दोनों हो सकते हैं , जिससे परिणाम तुरंत अलग हो सकते हैं। पेनल्टी स्केलिंग की समस्या को हल करने के लिए, दोनों मामलों में पेनल्टी को 0 पर सेट करें, वहां कोई भी विसंगतियों को हल करें और फिर चेक करें कि पेनल्टी वापस क्या जोड़ता है। और इस सवाल को पूछने के लिए सही जगह पर IMHO btw।