【发布时间】:2015-09-17 02:24:42
【问题描述】:
我有以下问题。在来自 N 个受试者的数据集中,每个受试者有几个样本。我想在数据集上训练一个模型,但我想确保在每次重采样中,训练集中没有受试者的重复。
或者,我会阻止按主题进行交叉验证。这可能吗?
如果没有 caret 包,我会做类似的事情(模拟代码)
subjects <- paste0("X", 1:10)
samples <- rep(subjects, each=5)
x <- matrix(runif(50 * 10), nrow=50)
loocv <- function(x, samples) {
for(i in 1:nrow(x)) {
test <- x[i,]
train <- x[ samples != samples[i],]
# create the model from train and predict for test
}
}
或者,或者,
looSubjCV <- function(x, samples, subjects) {
for(i in 1:length(subjects)) {
test <- x[ samples == subjects[i], ]
train <- x[ samples != subjects[i], ]
# create the model from train and predict for test
}
}
否则,来自同一受试者的其他样本的存在会导致模型过拟合。
【问题讨论】:
标签: r sampling cross-validation r-caret