【问题标题】:How to extract cross validation error in caret like in cv.glm?如何在 cv.glm 中提取插入符号中的交叉验证错误?
【发布时间】:2020-05-28 04:54:55
【问题描述】:

我有一些随机生成的数据,我正在尝试围绕这些数据构建回归模型。这是数据:

set.seed(1)
x <- rnorm(100)
y <- x - 2 * x^2+rnorm(100)

我想执行 LOOCV 并找到使用最小二乘法拟合模型导致的错误。以下是使用boot 的方法:

library(boot)
Data = data.frame(x, y)
set.seed(1)
glm.fit = glm(y ~ x)
cv.glm(Data, glm.fit)$delta
## [1] 5.891 5.889

有没有办法使用caret 复制它?我可以做到这一点,但我不知道是否有办法从model1 中提取错误:

library(caret)
set.seed(1)
df <- data.frame(x,y)
control <- trainControl(method = "LOOCV")
model1 <- train(y ~ x, data = df, trControl = control, method = "lm")

【问题讨论】:

  • 嘿,我正在浏览 cv.glm 的代码。它用于 K-folds 验证,调整基本上是针对每个折叠中使用 > 1 的样本。您使用的是 LOOCV,因此不需要此调整。
  • 你真的是指 k-fold CV 期间每个折叠的 RMSE 吗?

标签: r regression cross-validation r-caret


【解决方案1】:

print(model1) 语句会给你这个。这就是你要找的东西吗?

 Linear Regression 

100 samples
  1 predictor

No pre-processing
Resampling: Leave-One-Out Cross-Validation 
Summary of sample sizes: 99, 99, 99, 99, 99, 99, ... 
Resampling results:

  RMSE     Rsquared    MAE     
  2.69966  0.00130345  1.921879

Tuning parameter 'intercept' was held constant at a value of TRUE

【讨论】:

  • 不幸的是,我不是我要找的。打印出来的声明是对整个模型性能(RMSE、Rsquared 等)的总结。我正在寻找的具体是两个值。第一个组成部分是预测误差的原始交叉验证估计。第二部分是调整后的交叉验证估计。
猜你喜欢
  • 2016-12-07
  • 2018-10-22
  • 2015-04-02
  • 2020-01-09
  • 2013-12-26
  • 2015-09-17
  • 2023-04-04
  • 2015-11-11
相关资源
最近更新 更多