关于k折交叉验证的直观问题

我在使用交叉验证检查预测能力时遇到了一些直观问题,我认为我没有完全理解这个算法。我想通过一个例子来说明我的直观问题。假设k=5(折数),并且

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 predictorNo pre-processingResampling: Cross-Validated (5 fold) Summary of sample sizes: 80, 80, 80, 80, 80 Resampling results:  RMSE      Rsquared   MAE        1.032508  0.1272826  0.8213676Tuning parameter 'intercept' was held constant at a value of TRUE 

我的问题是:

(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.hat之间的绝对差值。我相信y.hat是由模型y~x+z预测的值(例如,如果我抽取x=0.05和z=0.16,那么y.hat=0.21)。但是我不知道对于这些抽取的数字,y是什么,我无法想象选择正确的值的可能性。

请问您能解答我的直观问题,或者提供一些好的阅读资源吗?我读过的所有页面都没有找到解决我的问题的答案。提前感谢您。


回答:

  1. 5折交叉验证意味着你将数据分成5部分,训练4部分,并在剩余的1部分上进行测试。因此,你在80个样本上训练,并在剩余的20个样本上测试。你会对不同的20个样本进行5次这样的操作。你可以查看这个关于交叉验证的简介,我基本上是从那里抓取了一个图表:

enter image description here

  1. 它对你的数据框的行进行抽样。x、y和z必须一起抽样,不能独立抽样,否则就毫无意义,对吗?

  2. 你指定了method="lm"y~x+z,所以你拟合了一个线性模型,y作为因变量,x和z作为自变量。每次你抽取80个样本时,模型的系数会(应该)因为抽样而不同。你预测测试集的值并计算误差,RMSE或MAE。经过5轮后,我们得到了5个测试集的RMSE或MAE,并取平均值。通常我们会对模型的不同超参数进行迭代,以选择基于最低误差的最佳参数。但在你的例子中,没有超参数需要调整。你可以查看这本很好的统计学习入门教科书

Related Posts

如何从数据集中移除EXIF数据?

我在尝试从数据集中的图像中移除EXIF数据(这些数据将…

用于Python中的“智能点”游戏的遗传算法不工作

过去几天我一直在尝试实现所谓的“智能点”游戏。我第一次…

哪个R平方得分更有帮助?

data.drop(‘Movie Title’, ax…

使用线性回归预测GRE分数对录取率的影响

我正在学习线性回归,并尝试在Jupyter笔记本中用P…

使用mlrMBO贝叶斯优化进行SVM超参数调优时出现错误

我试图针对一个分类任务优化SVM,这个方法在许多其他模…

Keras模型的二元交叉熵准确率未发生变化

我在网上看到了很多关于这个问题的提问,但没有找到明确的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注