如何使用 DAAG 包在 R 中执行重复的 k 折交叉验证?

How to perform repeated k-fold cross validation in R with DAAG package?

我使用 DAAG 包的 HousePrices 数据集创建了一个 3 折线性回归模型。我已经阅读了此处和交叉验证中的一些线程,并且多次提到交叉验证必须重复多次(如 50 或 100)以确保稳健性。我不确定这是什么意思?是不是简单运行代码50次,算出整体ms的平均值?

> cv.lm(data = DAAG::houseprices, form.lm = formula(sale.price ~ area+bedrooms),
+       m = 3, dots = FALSE, seed = 29, plotit = c("Observed","Residual"),
+       main="Small symbols show cross-validation predicted values",
+       legend.pos="topleft", printit = TRUE)
Analysis of Variance Table

Response: sale.price
          Df Sum Sq Mean Sq F value Pr(>F)   
area       1  18566   18566    17.0 0.0014 **
bedrooms   1  17065   17065    15.6 0.0019 **
Residuals 12  13114    1093                  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1



fold 1 
Observations in test set: 5 
             11  20    21    22  23
Predicted   206 249 259.8 293.3 378
cvpred      204 188 199.3 234.7 262
sale.price  215 255 260.0 293.0 375
CV residual  11  67  60.7  58.3 113

Sum of squares = 24351    Mean square = 4870    n = 5 

fold 2 
Observations in test set: 5 
               10    13    14    17    18
Predicted   220.5 193.6 228.8 236.6 218.0
cvpred      226.1 204.9 232.6 238.8 224.1
sale.price  215.0 112.7 185.0 276.0 260.0
CV residual -11.1 -92.2 -47.6  37.2  35.9

Sum of squares = 13563    Mean square = 2713    n = 5 

fold 3 
Observations in test set: 5 
                9    12    15    16  19
Predicted   190.5 286.3 208.6 193.3 204
cvpred      174.8 312.5 200.8 178.9 194
sale.price  192.0 274.0 212.0 220.0 222
CV residual  17.2 -38.5  11.2  41.1  27

Sum of squares = 4323    Mean square = 865    n = 5 

Overall (Sum over all 5 folds) 
  ms 
2816 

每次我重复它时,我都会得到相同的 ms=2816。有人可以解释一下重复 100 次 CV 到底意味着什么吗?因为重复这段代码 100 次似乎并没有改变 ms.

重复此代码 100 次不会有任何改变。你已经设置了一个种子,这意味着你的集合总是相同的集合,这意味着三折,你将有相同的三折,所以所有 100 次你都会得到相同的均方误差。

您似乎没有足够的样本来支持 50 或 100 次折叠是合适的。并且没有适合所有数据集的折叠次数。

折叠的数量要合理,这样才能有足够的测试数据。

此外,您不希望 运行 具有不同种子的多个不同 CV 模型,以尝试找到性能最佳的种子,因为这种形式的错误黑客是过度拟合的代表。

您应该很好地整理数据,正确地设计和转换变量,选择合理的折叠数,设置种子,以便您的利益相关者可以重复您的发现,然后构建您的模型。