插入符。数据拆分与trainControl之间的关系

时间:2013-02-19 22:33:29

标签: r machine-learning cross-validation

我仔细阅读了CARET文档:http://caret.r-forge.r-project.org/training.html,小插曲,一切都很清楚(网站上的例子帮助很多!),但我仍然对此感到困惑trainControl的两个参数之间的关系:

method 
index

以及trainControl与插入符号中的数据拆分函数之间的相互作用(例如createDataPartitioncreateResamplecreateFoldscreateMultiFolds

为了更好地构建我的问题,让我使用文档中的以下示例:

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)

我的问题是:

  1. 如果我使用createDataPartition(我认为它确实分层自举),如上例所示,我将结果作为index传递给trainControl我需要吗?在我的电话LGOCV中使用trainControl作为方法?如果我使用另一个(例如cv)它会有什么不同?在我的脑海中,一旦你修复index,你基本上就选择了交叉验证的类型,所以如果你使用method,我不确定index扮演什么角色。

  2. createDataPartitioncreateResample之间有什么区别?是createDataPartition是否进行了分层自举,而createResample却没有?

  3. 3)如何使用插入符号进行分层 k-fold(例如10倍)交叉验证?以下是否会这样做?

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

1 个答案:

答案 0 :(得分: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)

因此我的意思是:

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