如何解决在插入符号中使用 lm 的保持结果
我正在比较插入符号中的不同重采样方法,仅使用 LM。在多个数据集和种子中,我看到 k 折的模型性能要好得多,这让我担心我正在从拟合对象中提取正确的信息。我想确定地知道如何在使用重复数据时恢复保持模型性能。如何使用带插入符号的 lm 恢复保持折叠模型的性能?
在下面的这个例子中,boot 和 LOOCV 都使用 iris 数据集产生更差的模型性能。鉴于 LOOCV 每列火车使用更多数据,这对我来说没有意义:
fit <- train(Sepal.Width ~ .,method = "lm",data = iris,trControl = trainControl(method = "repeatedcv",number=10,repeats=10))
fit
fit <- train(Sepal.Width ~ .,trControl = trainControl(method = "LOOCV"))
fit
fit <- train(Sepal.Width ~ .,trControl = trainControl(method = "boot",number=1000))
fit
后来,我运行了手动 k 折(非重复)。这始终导致比插入符号 k 折更差的性能,但类似于 LOOCV 和引导。我没有设置种子,但您可以重新运行几次,使用手动方法,R^2 将始终较低。不清楚为什么插入符号不同。
#create folds#
iris <-iris[sample(nrow(iris)),]
folds <- cut(seq(1,nrow(iris)),breaks=10,labels=FALSE)
results <- data.frame(matrix(NA,nrow = 0,ncol = 1)) #store results
#Perform 10 fold cross validation
for(i in 1:10){
testIndexes <- which(folds==i,arr.ind=TRUE)
testData <- iris[testIndexes,]
trainData <- iris[-testIndexes,]
print (nrow(trainData))
print (nrow(testData))
OLS <- lm (Sepal.Width ~ .,data=trainData)
Predicted <- as.data.frame (predict (OLS,newdata = testData))
results <- rbind (results,corr.test(cbind (dplyr::select(testData,Sepal.Width),Predicted))$r[2,1])
}
mean (results[,1])^2
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。