R k-折叠交叉验证的直观问题

R k-折叠交叉验证的直观问题,r,machine-learning,linear-regression,cross-validation,R,Machine Learning,Linear Regression,Cross Validation,我在用交叉验证检查预测能力方面有一些直觉上的问题,我想我没有100%得到算法。 我想通过例子来说明我的直觉问题。设k=5(折叠次数),且 我的问题是: (1) 为什么我的样本被划分为长度为80,80,80,80,80而不是20,20,20,20,20的子样本? 长度y、x和z是100而不是400 (2) 算法是从x和z还是从x和y和z绘制 (3) 随机化后算法做什么?我在网上找不到任何关于那个的东西。我只看到他计算RMSE和MAE。但例如,MAE计算y和y之间差值的绝对值。我相信h.hat是模型

我在用交叉验证检查预测能力方面有一些直觉上的问题,我想我没有100%得到算法。 我想通过例子来说明我的直觉问题。设k=5(折叠次数),且

我的问题是:

(1) 为什么我的样本被划分为长度为80,80,80,80,80而不是20,20,20,20,20的子样本? 长度y、x和z是100而不是400

(2) 算法是从x和z还是从x和y和z绘制

(3) 随机化后算法做什么?我在网上找不到任何关于那个的东西。我只看到他计算RMSE和MAE。但例如,MAE计算y和y之间差值的绝对值。我相信h.hat是模型y~x+z的预测值(例如,如果我画x=0.05,z=0.16,那么y.hat=0.21)。但我不知道这些数字的y是多少,我无法想象选择正确数字的可能性

请问,你能回答我直觉上的问题吗,还是给我一些好的页面来阅读?在我读过的所有页面中,我都找不到解决问题的方法。先谢谢你

  • 5倍CV表示将数据分为5个部分,训练4个部分,并在剩余的1个部分上进行测试。因此,您在80上进行训练,在剩下的20上进行测试。对于不同的20岁,你会这样做5次。你可以看看这个,我基本上从那里抓到一个图表:
  • 它对数据帧中的行进行采样。xy和z必须同时进行,不能单独取样,否则就完全是胡说八道了

  • 您指定了
    method=“lm”
    y~x+z
    ,因此您拟合了一个线性模型,其中y为因变量,x和z为自变量。每次抽取80个样本时,模型的系数将(应该)不同,因为抽取的样本不同。您可以预测测试集的值并计算误差RMSE或MAE。5轮之后,我们有5个测试集的RMSE或MAE,我们取平均值。通常,我们对模型的不同超参数进行迭代,以根据最小误差选择最佳参数。但在您的示例中,没有要调整的超参数。你可以检查一下这个


  • 非常感谢你的解释!现在我100%理解算法了!
    library(caret)
    x=runif(100) 
    z=rexp(100)
    y=rnorm(100) 
    Q=data.frame(x,z,y) 
    train.control <- trainControl(method = "cv", number = 5)
    train(y~x+z,method="lm",data=Q,trControl=train.control)
    
    100 samples
      2 predictor
    
    No pre-processing
    Resampling: Cross-Validated (5 fold) 
    Summary of sample sizes: 80, 80, 80, 80, 80 
    Resampling results:
    
      RMSE      Rsquared   MAE      
      1.032508  0.1272826  0.8213676
    
    Tuning parameter 'intercept' was held constant at a value of TRUE