मैं का उपयोग कर एक स्वास्थ्य देखभाल डेटासेट पर एक लोचदार शुद्ध रसद प्रतिगमन प्रदर्शन कर रहा हूँ glmnet
का एक ग्रिड से अधिक लैम्ब्डा मूल्यों का चयन करके आर में पैकेज 1. 0 से मेरे संक्षिप्त कोड के नीचे है:
alphalist <- seq(0,1,by=0.1)
elasticnet <- lapply(alphalist, function(a){
cv.glmnet(x, y, alpha=a, family="binomial", lambda.min.ratio=.001)
})
for (i in 1:11) {print(min(elasticnet[[i]]$cvm))}
जो कि वृद्धि के साथ से तक अल्फा के प्रत्येक मान के लिए माध्य क्रॉस वेलिड एरर को आउटपुट करता है :0.1
[1] 0.2080167
[1] 0.1947478
[1] 0.1949832
[1] 0.1946211
[1] 0.1947906
[1] 0.1953286
[1] 0.194827
[1] 0.1944735
[1] 0.1942612
[1] 0.1944079
[1] 0.1948874
साहित्य में मैंने जो पढ़ा है, उसके आधार पर, का इष्टतम विकल्प वह स्थान है जहाँ cv त्रुटि को कम से कम किया जाता है। लेकिन अल्फ़ाज़ की सीमा से अधिक त्रुटियों में बहुत भिन्नता है। मैं कई स्थानीय न्यूनतम दिखाई दे रही है, के एक वैश्विक न्यूनतम त्रुटि के साथ के लिए ।0.1942612
alpha=0.8
क्या इसके साथ जाना सुरक्षित है alpha=0.8
? या, मैं फिर से चलाना चाहिए भिन्नता को देखते हुए cv.glmnet
अधिक पार सत्यापन परतों (जैसे के साथ के बजाय ) या शायद की एक बड़ी संख्या के बीच वेतन वृद्धि और सीवी त्रुटि पथ का स्पष्ट चित्र प्राप्त करने के लिए?10 αalpha=0.0
1.0
cv.glmnet()
बिना foldids
ज्ञात यादृच्छिक-बीज से निर्मित किए बिना कभी भी न चलाएं ।
caret
पैकेज पर एक नज़र डालना चाहते हैं, जो अल्फा और लैम्ब्डा दोनों के लिए दोहराया cv और ट्यून कर सकता है (मल्टीकास प्रोसेसिंग का समर्थन करता है!)। स्मृति से, मुझे लगता है किglmnet
दस्तावेज़ीकरण अल्फा के लिए ट्यूनिंग के खिलाफ सलाह देता है जिस तरह से आप यहां कर रहे हैं। यदि उपयोगकर्ता द्वारा प्रदान किए गए लैम्ब्डा के लिए ट्यूनिंग के अलावा अल्फा के लिए ट्यूनिंग है, तो यह गुना तय करने की सिफारिश करता हैcv.glmnet
।