为什么RSquared在k-fold交叉验证中随着折叠数增加?

时间:2015-10-10 02:09:24

标签: machine-learning cross-validation r-caret

我正在使用k-fold交叉验证来调整模型,并注意到RSquared精度似乎随着折叠次数而改善 - 例如与使用10倍相比,使用30倍时,您获得更高的RSquared值。

我希望获得一些见解的两个问题:

  1. 为什么会这样?
  2. 有理由相信k = 10的RSquared是否比使用k = 30更好地估计模型精度?或者它们是否与我在未见过的测试集上可以预期的错误率无关?
  3. 以下是我所指的效果的简单示例:

    ############### 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  
    

1 个答案:

答案 0 :(得分:0)

折叠次数越多 - 训练集越大,测试次数越小。你将几乎总是观察到LOO的最佳结果(N次训练样本为N次),最差结果为k = 2次。一般问题没有一个答案可以使用多少折叠,它完全取决于您的数据集。此外,如果您的数据点之间存在任何潜在的关系(例如它们来自时间序列),则重要的是如何划分集合。