मैं निम्नलिखित करना चाहता हूं:
1) OLS प्रतिगमन (कोई दण्डनीय ठहराए जाने अवधि) बीटा गुणांक पाने के लिए ; मतलब होता है, वैरिएबल का इस्तेमाल होता है। मैं इसके द्वारा करता हूं
lm.model = lm(y~ 0 + x)
betas = coefficients(lm.model)
2) एक दंड अवधि के साथ लासो प्रतिगमन, चयन मानदंड बायसियन सूचना मानदंड (बीआईसी) द्वारा दिया जाएगा,
जहाँ चर / प्रतिगामी संख्या, टिप्पणियों की संख्या के लिए , और चरण 1 में प्राप्त प्रारंभिक दांव के लिए । मैं इस विशिष्ट मान के लिए प्रतिगमन परिणाम प्राप्त करना चाहता हूं , जो कि उपयोग किए गए प्रत्येक लिए अलग है। इसलिए यदि तीन चर हैं, तो तीन अलग-अलग मान ।टी बी * जे λ जे λ j
OLS-Lasso ऑप्टिमाइज़ेशन समस्या तब दी जाती है
मैं आर में लार्स या ग्लमेनेट पैकेज के साथ यह कैसे कर सकता हूं? मुझे मेमना निर्दिष्ट करने का कोई तरीका नहीं मिल रहा है और यदि मैं सही परिणाम प्राप्त करता हूं तो मुझे 100% यकीन नहीं है
lars.model <- lars(x,y,type = "lasso", intercept = FALSE)
predict.lars(lars.model, type="coefficients", mode="lambda")
मैं यहां किसी भी मदद की सराहना करता हूं।
अपडेट करें:
मैंने अब निम्नलिखित कोड का उपयोग किया है:
fits.cv = cv.glmnet(x,y,type="mse",penalty.factor = pnlty)
lmin = as.numeric(fits.cv[9]) #lambda.min
fits = glmnet(x,y, alpha=1, intercept=FALSE, penalty.factor = pnlty)
coef = coef(fits, s = lmin)
पंक्ति 1 में मैं अपने निर्दिष्ट दंड कारक ( λ j = log ( T )) के साथ क्रॉस सत्यापन का उपयोग करता हूं), जो प्रत्येक प्रतिगामी के लिए अलग है। पंक्ति 2 फिट.सै.व्ही के "लैम्ब्डा.मिन" का चयन करती है, जो लैम्बडा है जो न्यूनतम माध्य क्रॉस-वेलिडेशन त्रुटि देता है। लाइन 3डेटा परएक लासो फिट () करता है। फिर से मैंने पेनल्टी फैक्टरλ काइस्तेमाल किया। लाइन 4 फिट से गुणांक निकालता है जोपंक्ति 2 में चुनेगए "इष्टतम"से संबंधित है।alpha=1
अब मेरे पास रेजिस्टर के बीटा गुणांक हैं जो न्यूनतम समस्या के इष्टतम समाधान को दर्शाते हैं
पेनल्टी फैक्टर के साथ । गुणांक का इष्टतम सेट सबसे अधिक संभावना है कि रजिस्टरों का एक सबसेट जो मैंने शुरू में इस्तेमाल किया था, यह लास्सो विधि का एक परिणाम है जो प्रयुक्त रजिस्टरों की संख्या को कम कर देता है।
क्या मेरी समझ और कोड सही है?
$\alpha$
हो जाता है । कृपया इसे बनाएं, क्योंकि यह लोगों को आपके प्रश्न को समझने में और अधिक आसानी से सक्षम बना देगा, और इसलिए इसका उत्तर देना चाहिए।