2013-02-19 24 views
13

Ho letto attentamente la documentazione CARET a: http://caret.r-forge.r-project.org/training.html, le vignette, e tutto è abbastanza chiaro (gli esempi sul sito aiutano molto!), Ma sono ancora confuso sulla relazione tra due argomenti trainControl:CARET. Relazione tra la suddivisione dei dati e trainControl

method 
index 

e l'interazione tra trainControl e la suddivisione dei dati funzioni in cursore (es createDataPartition, createResample, createFolds e createMultiFolds)

Per inquadrare meglio la mia domande, mi permetta di utilizzare il seguente esempio dalla documentazione:

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) 

Le mie domande sono:

  1. Se uso createDataPartition (che presumo che fa stratificati bootstrap), come nell'esempio di cui sopra, e ho passato il risultato come index a trainControl ho bisogno di usare LGOCV come metodo nella mia chiamata trainControl? Se ne utilizzo un altro (ad esempio cv) Che differenza farebbe? Nella mia testa, una volta risolto il problema con index, in sostanza si sceglie il tipo di convalida incrociata, quindi non sono sicuro del ruolo method se si utilizza index.

  2. Qual è la differenza tra createDataPartition e createResample? È che createDataPartition esegue il bootstrap stratificato, mentre lo createResample no?

3) Come posso fare stratificato k-fold (ad esempio 10 volte) croce convalida utilizzando accento circonflesso? Lo farebbe il seguente?

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

risposta

1

Se non siete sicuri di quale metodo giochi di ruolo, se si utilizza indice, perché non applicare tutti i metodi e confronta i risultati. È un metodo cieco di confronto, ma può darti delle intuizioni.

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

Creo il mio indice:

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

applico trainControl per la mia lista di metodo, e io rimuovere indice da risultato dal momento che è comune a tutti i miei metodi.

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

Da qui la mia 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

Interessante. Grazie! Ho difficoltà a mappare la tua risposta alle mie domande. Basandoti su questo, quale ruolo pensi 'index' giocato qui allora? –

+0

@ user273158 cosa intendi con il ruolo dell'indice? index is just you tmp vector ... le tue partizioni .. – agstudy

+0

Hmm, ma come fa un metodo come 'boot' (bootstrap) usa le partizioni specificate in' index'? Capisco il bootstrap come metodo per CV (campione con sostituzione per allenarsi e valutare su ciò che è rimasto), ma non come 'index' è usato nel bootstrap. –

Problemi correlati