2013-02-19 29 views
13

मैंने दस्तावेज को http://caret.r-forge.r-project.org/training.html, विगनेट्स पर ध्यान से पढ़ा है, और सबकुछ स्पष्ट है (वेबसाइट पर उदाहरण बहुत मदद करते हैं!), लेकिन मैं अभी भी दो के बीच संबंधों के बारे में उलझन में हूं trainControl तर्क:कैरेट। डेटा विभाजन और ट्रेन के बीच संबंध

method 
index 

और कैरट में trainControl और डेटा बंटवारे कार्यों (जैसे createDataPartition, createResample, createFolds और createMultiFolds)

बेहतर फ्रेम करने के लिए के बीच परस्पर क्रिया मेरी ,,

  1. अगर मैं createDataPartition (जो मुझे लगता है कि बूटस्ट्रैपिंग स्तरीकृत करता है) का उपयोग ऊपर के उदाहरण में के रूप में: सवाल है, मुझे प्रलेखन से निम्न उदाहरण का उपयोग करते हैं:

    data(BloodBrain) 
    set.seed(1) 
    tmp <- createDataPartition(logBBB,p = .8, times = 100) 
    trControl = trainControl(method = "LGOCV", index = tmp) 
    ctreeFit <- train(bbbDescr, logBBB, "ctree",trControl=trControl) 
    

    मेरे सवाल कर रहे हैं और मैं परिणाम index से trainControl पर पास करता हूं क्या मुझे LGOCV का उपयोग मेरे कॉल trainControl में विधि के रूप में करने की आवश्यकता है? अगर मैं किसी अन्य का उपयोग करता हूं (उदा। cv) इससे क्या अंतर आएगा? मेरे सिर में, index को ठीक करने के बाद, आप अनिवार्य रूप से क्रॉस-सत्यापन का प्रकार चुन रहे हैं, इसलिए मुझे यकीन नहीं है कि नाटकों यदि आप index का उपयोग करते हैं तो कौन सी भूमिका निभाती है।

  2. createDataPartition और createResample के बीच क्या अंतर है? क्या यह createDataPartition स्तरीकृत बूटस्ट्रैपिंग करता है, जबकि createResample नहीं है?

3) मैं स्तरीकृत कश्मीर गुना (जैसे 10 गुना) पार कैरट का उपयोग कर मान्यता कैसे कर सकते? क्या निम्नलिखित करेंगे?

tmp <- createFolds(logBBB, k=10, list=TRUE, times = 100) 
trControl = trainControl(method = "cv", index = tmp) 
ctreeFit <- train(bbbDescr, logBBB, "ctree",trControl=trControl) 

उत्तर

1

यदि आप निश्चित नहीं हैं कि आप सूचकांक का उपयोग करते हैं तो कौन सी भूमिका विधि निभाती है, क्यों नहीं सभी विधियों को लागू करने और परिणामों की तुलना करने के लिए। यह तुलना की एक अंधे विधि है, लेकिन यह आपको कुछ अंतर्ज्ञान दे सकती है।

methods <- c('boot', 'boot632', 'cv', 
       'repeatedcv', 'LOOCV', 'LGOCV') 

मैं अपने सूचकांक बनाने के लिए:

n <- 100 
    tmp <- createDataPartition(logBBB,p = .8, times = n) 

मैं विधि की अपनी सूची के लिए trainControl लागू होते हैं, और मैं परिणाम से सूचकांक को दूर के बाद से यह मेरी सभी तरीकों के लिए आम है।

ll <- lapply(methods,function(x) 
     trControl = trainControl(method = x, index = tmp)) 
ll <- sapply(ll,'[<-','index', NULL) 

इसलिए मेरी ll है:

    [,1]  [,2]  [,3]  [,4]   [,5]  [,6]  
method   "boot" "boot632" "cv"  "repeatedcv" "LOOCV" "LGOCV" 
number   25  25  10  10   25  25  
repeats   25  25  1   1   25  25  
verboseIter  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  
returnData  TRUE  TRUE  TRUE  TRUE   TRUE  TRUE  
returnResamp  "final" "final" "final" "final"  "final" "final" 
savePredictions FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  
p     0.75  0.75  0.75  0.75   0.75  0.75  
classProbs  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  
summaryFunction ?   ?   ?   ?   ?   ?   
selectionFunction "best" "best" "best" "best"  "best" "best" 
preProcOptions List,3 List,3 List,3 List,3  List,3 List,3 
custom   NULL  NULL  NULL  NULL   NULL  NULL  
timingSamps  0   0   0   0   0   0   
predictionBounds Logical,2 Logical,2 Logical,2 Logical,2 Logical,2 Logical,2 
+0

दिलचस्प। धन्यवाद! मुझे अपने सवालों के जवाब देने में कठिनाई हो रही है। इस पर आधारित, आपको लगता है कि 'इंडेक्स' तब क्या भूमिका निभाता है? –

+0

@ user273158 आप इंडेक्स की भूमिका का क्या मतलब है? इंडेक्स सिर्फ आप टीएमपी वेक्टर है ... आपके विभाजन .. – agstudy

+0

हम्म, लेकिन 'बूट' (बूटस्ट्रैपिंग) जैसी विधि' इंडेक्स 'में निर्दिष्ट विभाजन का उपयोग कैसे करती है? मैं सीवी के लिए एक विधि के रूप में बूटस्ट्रैपिंग को समझता हूं (ट्रेन के प्रतिस्थापन के साथ नमूना, और बाईं ओर क्या मूल्यांकन करता है), लेकिन बूटस्ट्रैपिंग में 'इंडेक्स' का उपयोग कैसे किया जाता है। –