मेथिलिकरण डेटा (पी >> एन) पर ग्लमैनेट के साथ फ़ीचर चयन और मॉडल


29

मैं उन प्रासंगिक विशेषताओं का चयन करने के लिए GLM और इलास्टिक नेट का उपयोग करना चाहूंगा + एक रेखीय प्रतिगमन मॉडल का निर्माण (यानी, भविष्यवाणी और समझ दोनों, इसलिए अपेक्षाकृत कुछ मापदंडों के साथ छोड़ दिया जाना बेहतर होगा)। आउटपुट निरंतर है। यह प्रति मामलों में जीन है । मैं पैकेज के बारे में पढ़ रहा हूं, लेकिन मैं चरणों का पालन करने के बारे में 100% निश्चित नहीं हूं:502000050glmnet

  1. लंबोदा चुनने के लिए CV का प्रदर्शन करें:
    cv <- cv.glmnet(x,y,alpha=0.5)
    (Q1) इनपुट डेटा को देखते हुए, क्या आप एक अलग अल्फा मान चुनेंगे?
    (Q2) मॉडल बनाने से पहले मुझे कुछ और करने की आवश्यकता है?

  2. मॉडल को फिट करें:
    model=glmnet(x,y,type.gaussian="covariance",lambda=cv$lambda.min)
    (क्यू 3) "कोवरियन" से बेहतर कुछ भी नहीं?
    (Q4) यदि लैम्ब्डा को CV द्वारा चुना गया था, तो इस कदम की आवश्यकता क्यों है nlambda=?
    (Q5) का उपयोग करना बेहतर है lambda.minया lambda.1se?

  3. गुणांक प्राप्त करें, यह देखने के लिए कि कौन से पैरामीटर गिर गए हैं ("।"):
    predict(model, type="coefficients")

    मदद पृष्ठ में कई हैं predictतरीकों (जैसे, predict.fishnet, predict.glmnet, predict.lognet, आदि)। लेकिन किसी भी "सादे" की भविष्यवाणी जैसा कि मैंने एक उदाहरण पर देखा था।
    (Q6) चाहिए मैं उपयोग predictया predict.glmnetया अन्य?

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

अद्यतन के
आधार पर "जैसा कि पहले उल्लेख किया गया है, क्लास ट्रेन की एक वस्तु में एक तत्व होता है finalModel, जिसे ट्यूनिंग पैरामीटर मानों के साथ फिर से जोड़ा जाता है , जो इस मॉडल का उपयोग करता है। इस वस्तु का उपयोग पारंपरिक रूप से नए नमूनों के लिए भविष्यवाणियों को उत्पन्न करने के लिए किया जा सकता है, जिसका उपयोग करते हुए। मॉडल का पूर्वानुमान कार्य

का उपयोग करते हुए caretधुन पर दोनों अल्फा और लैम्ब्डा:

  trc = trainControl(method=cv, number=10)  
  fitM = train(x, y, trControl = trC, method="glmnet")  

fitMपिछले चरण 2 को प्रतिस्थापित करता है ? यदि हां, तो type.gaussian="naive",lambda=cv$lambda.min/1seअब glmnet विकल्प ( ) कैसे निर्दिष्ट करें ?
और निम्नलिखित predictकदम है, मैं जगह ले सकता है modelकरने के लिए fitM?

यदि मैं करता हूँ

  trc = trainControl(method=cv, number=10)  
  fitM = train(x, y, trControl = trC, method="glmnet")  
  predict(fitM$finalModel, type="coefficients")

यह बिल्कुल समझ में आता है या मैं गलत तरीके से दोनों पैकेज शब्दावली मिश्रण कर रहा हूँ?

जवाबों:


42

भाग 1

लोचदार शुद्ध में मापदंडों पर दो प्रकार की बाधाएं कार्यरत हैं

  1. लास्सो बाधा (यानी के पूर्ण मूल्यों के आकार पर )βj
  2. रिज की बाधाएं (यानी के चुकता मूल्यों के आकार पर )βj

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

αλλcv.glmnet

αλ

भाग 2

Q3

mn?glmnet

type.gaussian = "naive"

mn"naive"n

glmnet"naive"m>500

Q4

nlambdaα=0.5λλnlambda

क्यू 5

lambda.minλλकश्मीरlambda.1seλlambda.minlambda.1seλकश्मीरसबसे अच्छे मॉडल की त्रुटि का सीएफ अनुमान।

चुनना आपको है:

  1. सबसे अच्छा मॉडल जो थोड़ा बहुत अधिक जटिल हो सकता है: lambda.min
  2. सबसे सरल मॉडल की तुलना में सबसे अच्छे मॉडल के लिए तुलनीय त्रुटि है जो अनिश्चितता को देखते हैं: lambda.1se

भाग ३

यह एक सरल है और कुछ ऐसा है जो आप आर के साथ बहुत कुछ करेंगे। आप predict()समय के 99.9% फ़ंक्शन का उपयोग करते हैं । आर पहले तर्क के रूप में आपूर्ति की गई वस्तु के लिए सही फ़ंक्शन के उपयोग की व्यवस्था करेगा।

अधिक तकनीकी रूप से, predictएक सामान्य कार्य है, जिसमें विभिन्न प्रकार की वस्तुओं (तकनीकी रूप से कक्षाओं के रूप में जाना जाता है) के लिए तरीके (फ़ंक्शन के संस्करण ) हैं। किस प्रकार के मॉडल के आधार पर किसी विशेष वर्ग (या वर्ग) द्वारा बनाई गई वस्तु वास्तव में फिट होती है। glmnet (पैकेज) इन विभिन्न प्रकार की वस्तुओं के लिए फ़ंक्शन के लिए तरीके प्रदान करता है । R इन विधियों के बारे में जानता है और आपूर्ति की गई वस्तु के वर्ग के आधार पर उपयुक्त का चयन करेगा।glmnetpredict


2
महान अन्वेषक! मैंने अब कैरट के बारे में पढ़ा है। कैरेट और ग्लमैनेट पैकेज के बीच संबंध के बारे में 100% निश्चित नहीं है, इसलिए मैंने अपने प्रश्न का एक अपडेट पैकेजों के लिए 'मर्ज' को स्पष्ट करने के लिए किया था या या तो ग्लमैनेट से कैरेट पर स्विच किया था।
पीजीरीन

1
@PGreen: caretएक आर रैपर पैकेज है जो 100 + एमएल पैकेज से फ़ंक्शन इंटरफेस को अधिक सुसंगत बनाता है और सीवी, ग्रिडसर्च को जोड़ता है, पागल पैरामीटर चूक को संशोधित करता है इत्यादि। यह अपने quirks के बिना नहीं है, लेकिन यह बहुत अच्छा है और व्यापक रूप से उपयोग किया जाता है।
3

मैं सिर्फ यह जोड़ना चाहता हूं कि अल्फा ट्यूनिंग के लिए आप cva.glmnet(..)बस के बजाय उपयोग कर सकते हैं cv.glmnet(...)और एक ही समय में अल्फा और लैम्बडा को ट्यून कर सकते हैं । फिर आप यह minlossplot(cva.fit)देखने के लिए दौड़ सकते हैं कि कौन सा अल्फा सबसे अच्छा परिणाम देता है। यह GlmnetUtils
एस्पेन रिस्केडल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.