我认真阅读了CARET文档:http://caret.r-forge.r-project.org/training.html,浏览了相关文章,现在已经很清楚了(网站上的例子帮了很大忙!),但是我仍然对trainControl
函数的两个参数之间的关系感到困惑:
method
index
并且caret中trainControl
与数据分割函数(例如createDataPartition
,createResample
,createFolds
和createMultiFolds
)之间的相互作用。
为了更好地阐述我的问题,让我使用文档中的以下示例:
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)
我的问题是:
如果我使用
createDataPartition
(我假设它执行分层自助法),就像上面的例子一样,并将结果作为index
传递给trainControl
,我需要在调用trainControl
中使用LGOCV
作为方法吗?如果我使用另一个方法(例如cv
),会有什么区别?在我看来,一旦你固定了index
,你实质上选择了交叉验证的类型,所以如果你使用index
,我不确定method
扮演了什么角色。createDataPartition
和createResample
之间的区别是什么?是createDataPartition
执行了分层自助法,而createResample
没有吗?
3)如何使用caret进行分层k折(例如10折)交叉验证?以下内容是否可行?
tmp <- createFolds(logBBB, k=10, list=TRUE, times = 100)
trControl = trainControl(method = "cv", index = tmp)
ctreeFit <- train(bbbDescr, logBBB, "ctree",trControl=trControl)
index
在这里扮演了什么角色呢? - Amelio Vazquez-Reinaboot
(引导)这样的方法如何使用index
中指定的分区呢?我理解引导是一种交叉验证的方法(用替换样本进行训练,并在剩下的部分上进行评估),但不知道index
在引导中是如何使用的。 - Amelio Vazquez-Reina