k 折交叉验证的直观问题
Intuitive problem with k-fold cross validation
我在使用交叉验证检查预测能力时遇到了一些直觉问题,我认为我没有 100% 地理解算法。
我想举例说明我的直觉问题。让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 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
我的问题是:
(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 之间的差异的绝对值。我相信 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 次。你可以查看这个 vignette on cross-validation,我基本上是从那里抓取图表的:
它对数据框的行进行采样。 xy和z必须连在一起,不能独立采样,否则就很扯了对吧
您指定了 method="lm"
和 y~x+z
,因此您拟合了一个线性模型,其中 y 作为因变量,x 和 z 作为自变量。每次抽取 80 个样本时,模型的系数都会(应该)因样本抽取而不同。您预测测试集的值并计算误差、RMSE 或 MAE。在 5 轮之后,我们有 5 个测试集的 RMSE 或 MAE,我们取平均值。通常我们会针对模型的不同超参数迭代地执行此操作,以根据最低误差选择最佳参数。但是在您的示例中,没有要调整的超参数。你可以看看这个 nice introduction to statistical learning textbook
我在使用交叉验证检查预测能力时遇到了一些直觉问题,我认为我没有 100% 地理解算法。 我想举例说明我的直觉问题。让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 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
我的问题是:
(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 之间的差异的绝对值。我相信 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 次。你可以查看这个 vignette on cross-validation,我基本上是从那里抓取图表的:
它对数据框的行进行采样。 xy和z必须连在一起,不能独立采样,否则就很扯了对吧
您指定了
method="lm"
和y~x+z
,因此您拟合了一个线性模型,其中 y 作为因变量,x 和 z 作为自变量。每次抽取 80 个样本时,模型的系数都会(应该)因样本抽取而不同。您预测测试集的值并计算误差、RMSE 或 MAE。在 5 轮之后,我们有 5 个测试集的 RMSE 或 MAE,我们取平均值。通常我们会针对模型的不同超参数迭代地执行此操作,以根据最低误差选择最佳参数。但是在您的示例中,没有要调整的超参数。你可以看看这个 nice introduction to statistical learning textbook