R 交叉验证套索回归

R 交叉验证套索回归,r,statistics,data-modeling,modeling,cross-validation,R,Statistics,Data Modeling,Modeling,Cross Validation,我目前正在使用套索进行特征选择。首先,我执行10次交叉验证,以找到具有最低MSE的收缩参数。我现在尝试自己计算训练集的MSE,但是,该值不符合cv图 cv <- cv.glmnet(as.matrix(mtcars[,c(1,3:9)]), mtcars[,c(2)], alpha=1, nfolds=10, type.measure="mse") plot(cv) lasso.mod <- glmnet(as.matrix(mtcars[,c(1,3:9)]),mtcars[,c

我目前正在使用套索进行特征选择。首先,我执行10次交叉验证,以找到具有最低MSE的收缩参数。我现在尝试自己计算训练集的MSE,但是,该值不符合cv图

cv <- cv.glmnet(as.matrix(mtcars[,c(1,3:9)]), mtcars[,c(2)], alpha=1, nfolds=10, type.measure="mse")
plot(cv)

lasso.mod <- glmnet(as.matrix(mtcars[,c(1,3:9)]),mtcars[,c(2)],alpha=1,lambda=cv$lambda.min)
y <- predict(lasso.mod, s=cv$lambda.min, newx=as.matrix(mtcars[,c(1,3:9)]))
mean((mtcars[,c(2)]-y)^2) # calculate MSE

交叉验证均方误差不应等于整个训练数据集的均方误差,因为它们是两个完全不同的概念


某个lambda的交叉验证MSE是:如果将训练数据集划分为10个部分,则对每个部分执行以下操作:使用lambda和其他9个部分拟合套索模型,计算该部分的MSE,并计算得到的10毫秒的平均值。这是交叉验证MSE,与训练数据集上的MSE完全不同。

您到底有什么问题?您计算的MSE是否低于CV MSE?我认为这个结果应该是可以预期的,因为您比较了样本外拟合和样本内拟合。但这个问题是关于统计而不是编程的,我没想到结果会有那么大的不同,因为这两种情况下的数据是相等的。但我完全理解你的答案。我做了一些额外的研究,在这里看到了这些帖子。可能有助于进一步的研究人员:
cv$cvm[cv$lambda == cv$lambda.min]