आर कैरेट और एनए


26

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


3
आपको हमेशा लापता मूल्यों के साथ कुछ करना होगा । मुझे कहना होगा कि मैं वास्तव में आपके प्रश्न को नहीं समझता हूं - आप किसी एक आकार-फिट-सभी दृष्टिकोण की तलाश में हैं ..? यदि आप NAs लगाना नहीं चाहते हैं, तो आप उनके साथ क्या करना चाहते हैं? हटाना चाहते हैं?
टिम

1
मैं NAs को छोड़ना और NA के साथ सामना करने के लिए मॉडल पर छोड़ना चाहता हूं। अगर मैं इसे C50 में C5.0 फ़ंक्शन के साथ करता हूं, उदाहरण के लिए, यह स्वयं NAs के साथ सामना कर सकता है, लेकिन इस मामले में मैं कैरेट का उपयोग नहीं कर सकता, क्योंकि कैरेट का ट्रेन फ़ंक्शन, जब भी मैं C5 का उपयोग करना चाहता हूं, तो डेटासेट में कोई NAs की अनुमति नहीं देता है। उपरोक्त उल्लिखित C50 का 0 कार्य।
फ्रेड्रिक

3
लेकिन "मॉडल" क्या करता है यह या तो अनदेखा करता है (हटाता है) यह डेटा आपको छोटे नमूने के साथ छोड़ देता है; यह उन मूल्यों का अनुमान लगाता है (imputs); या यह "एनए" श्रेणी की भविष्यवाणी करता है (जैसे कुछ पेड़ आधारित मॉडल में)। आप अपने "मॉडल" को और क्या करना पसंद करेंगे? कुछ सॉफ्टवेयर आपके लिए उन चीजों को स्वचालित रूप से करते हैं, लेकिन कल्पना करें कि आपकी कॉफी मशीन ने आपको "डिफ़ॉल्ट" कॉफी दी ... कुछ सॉफ़्टवेयर NAs से "डिफ़ॉल्ट कॉफी" बनाते हैं, लेकिन यह सबसे अच्छा नहीं है जो आप प्राप्त कर सकते हैं।
टिम

3
क्या आप सुनिश्चित हैं कि कैरेट NAs की अनुमति नहीं देता है। मैंने एनए को ट्रेन सहायता पृष्ठ में डिफ़ॉल्ट उदाहरण के साथ पेश करने की कोशिश की है और विधि के साथ C5.0 ट्रेन ने ठीक काम किया है। यह बेतरतीब जंगल के साथ विफल रहा।
mpiktas

जवाबों:


32

कैरेट में ट्रेन फ़ंक्शन के लिए, आप पैरामीटर na.action = na.pass पास कर सकते हैं, और कोई प्रीप्रोसेसिंग (प्रीप्रोसेस निर्दिष्ट न करें, इसे अपने डिफ़ॉल्ट मान के रूप में छोड़ दें)। यह NA मानों को बिना पूर्ववर्ती फ़ंक्शन के अनमॉडिफाइड के पास कर देगा (यह भविष्यवाणी कार्यों को विफल करने के लिए लापता मानों का समर्थन नहीं करने का कारण बनेगा, उन लोगों के लिए जिन्हें आपको प्रीप्रोडक्शन निर्दिष्ट करने की आवश्यकता होगी, जो कि प्रिडिक्शन फ़ंक्शन को कॉल करने से पहले लापता मानों को लागू करने के लिए)। उदाहरण के लिए:

train(formula,
      dataset,
      method = "C5.0",
      na.action = na.pass)

इस स्थिति में, C5.0 लापता मूल्यों को अपने आप संभाल लेगा।


1
यह एक दिलचस्प चर्चा है। एक श्रेणीबद्ध भविष्यवक्ता के रूप में NA को दूसरे स्तर पर जोड़ने का क्या नुकसान होगा? यदि NAs को प्रतिरूपित या प्रतिरूपित नहीं किया जा सकता है, अर्थात अनुपस्थिति की उपस्थिति वास्तव में सूचनात्मक है, तो ऐसा लगेगा कि केवल NA को एक अतिरिक्त स्तर बनाने से समझ में आता है?
सीनोसैपियन

यदि कोई विकल्प सेट trainकरने में x, y विनिर्देश का उपयोग करता है, na.action = na.passतो निम्न त्रुटि होगी:Something is wrong; all the RMSE metric values are missing
19:29

3

आप NAs recoding की कोशिश की है? आपके डेटा के बाहर कुछ> 3 मानक विचलन (जैसे -12345) को अलग से भविष्यवाणी करने के लिए C5.0 को प्रोत्साहित करना चाहिए, जैसे कि यह NAs के साथ करता है।


2

मुझे लगता है कि भविष्यवाणी () फ़ंक्शन का उपयोग करते समय आपका समाधान मूल्यों को लागू करना होगा ।

?predict.trainअधिक जानकारी के लिए देखें।

आप na.omitमूल्यों को लागू करने के लिए कैरेट को अनुमति देने के लिए उपयोग कर सकते हैं । उदाहरण के लिए:

    ## S3 method for class 'train':
    predict((object, newdata = NULL, type = "raw", na.action = na.omit, ...)

से http://www.inside-r.org/packages/cran/caret/docs/predict.train

एक और उपाय डेटा पूर्वप्रक्रमित करते समय लगाना होगा :

    ## S3 method for class 'default':
    preProcess(x, 
       method = "knnImpute",   # or *bagImpute* / *medianImpute*
       pcaComp = 10,
       na.remove = TRUE,
       k = 5,
       knnSummary = mean,
       outcome = NULL,
       fudge = .2,
       numUnique = 3,
       verbose = TRUE,
       )

से http://www.inside-r.org/node/86978

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.