2013-02-19 13 views
13

CARET belgelerini dikkatle okuyorum: http://caret.r-forge.r-project.org/training.html, vinyetler, ve her şey oldukça açık (web sitesindeki örnekler çok yardımcı oluyor!), Ancak hala iki ilişki arasındaki karışıklık var. trainControl için argümanlar:CARET. Veri bölme ve trainControl arasındaki ilişkiControl

method 
index 

ve şapka içinde trainControl ve veri bölme fonksiyonları (örn createDataPartition, createResample, createFolds ve createMultiFolds)

daha iyi çerçevelemek için aralarında etkileşimi benim sorular, beni belgelerinden şu örneği kullanalım:

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) 

Sorularım şunlardır:

  1. I (O önyükleyici tabakalı gelmez varsayıyorum) createDataPartition kullanıyorsanız, yukarıdaki örnekte olduğu gibi, trainControl için index sonucunu iletiyorum trainControl aramamdaki yöntem olarak LGOCV yöntemini kullanmam gerekir mi? Başka birini kullanırsam (ör. cv) Ne fark eder? Kafamda, index'u düzelttikten sonra, esas olarak çapraz doğrulama türünü seçiyorsunuz, bu yüzden index'u kullanırsanız, method rolünün ne olduğundan emin değilim.

  2. createDataPartition ve createResample arasındaki fark nedir? createDataPartition, katmanlanmış önyükleme yaparken createResample yapmıyor mu?

3) I tabakalı k-kat (örneğin 10 misli) çapraz geçerlilik ile şapka yapabilir nasıl? Aşağıdaki yapar mı?

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

cevap

1

Dizini kullanırsanız hangi rol yönteminin oynandığından emin değilseniz, neden tüm yöntemleri uygulayıp sonuçları karşılaştırın. Bu karşılaştırmanın kör bir yöntemidir, ancak size bazı sezgiler verebilir. Ben yöntemin listemde için trainControl uygulamak

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

, hepsi benim yöntemlere yaygın olduğundan ben sonucundan endeksi kaldırın:

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

benim dizin oluşturun.

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

Dolayısıyla benim ll geçerli: İlginç

    [,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

. Teşekkürler! Cevabımı sorularıma eşleştirmek için zor bir zaman geçiriyorum. Buna dayanarak, 'index' burada hangi rolü oynadı? –

+0

@ user273158 İndeksin rolü nedir? indeks sadece tmp vektörüdür ... bölümleriniz .. – agstudy

+0

Hmm, ama 'boot' (bootstrapping) gibi bir metod' index'te belirtilen bölümleri nasıl kullanır? Önyüklemeyi CV için bir yöntem olarak anlıyorum (trenle değiştirme ve neyin solda olduğunu ölçün), ama önyüklemede "index" in nasıl kullanıldığını değil. –

İlgili konular