我正在使用k-fold交叉验证来调整模型,并注意到RSquared精度似乎随着折叠次数而改善 - 例如与使用10倍相比,使用30倍时,您获得更高的RSquared值。
我希望获得一些见解的两个问题:
以下是我所指的效果的简单示例:
############### k = 10 #####################
> data(iris)
> train_control <- trainControl(method="repeatedcv", number=10, repeats=3)
> train(Sepal.Length~.,data=iris,trControl=train_control,method="rf",metric="Rsquared")
Random Forest
150 samples
4 predictor
No pre-processing
Resampling: Cross-Validated (10 fold, repeated 3 times)
Summary of sample sizes: 137, 135, 134, 134, 135, 136, ...
Resampling results across tuning parameters:
mtry RMSE Rsquared RMSE SD Rsquared SD
2 0.3381065 0.8404534 0.07692415 0.07583768
3 0.3247406 0.8502577 0.07311807 0.07326181
5 0.3228651 0.8517740 0.07213958 0.07315720
############### k = 30 #####################
> data(iris)
> train_control <- trainControl(method="repeatedcv", number=30, repeats=3)
> train(Sepal.Length~.,data=iris,trControl=train_control,method="rf",metric="Rsquared")
Random Forest
150 samples
4 predictor
No pre-processing
Resampling: Cross-Validated (30 fold, repeated 3 times)
Summary of sample sizes: 143, 145, 146, 144, 145, 144, ...
Resampling results across tuning parameters:
mtry RMSE Rsquared RMSE SD Rsquared SD
2 0.3238545 0.8580474 0.10327919 0.1352787
3 0.3119541 0.8679321 0.09734168 0.1236307
5 0.3109572 0.8717550 0.09727307 0.1123173
答案 0 :(得分:0)
折叠次数越多 - 训练集越大,测试次数越小。你将几乎总是观察到LOO的最佳结果(N次训练样本为N次),最差结果为k = 2次。一般问题没有一个答案可以使用多少折叠,它完全取决于您的数据集。此外,如果您的数据点之间存在任何潜在的关系(例如它们来自时间序列),则重要的是如何划分集合。