glmnet::cvfit 的 R 系数

R coefficients of glmnet::cvfit

据我所知,cvfit 进行了 K 折交叉验证,这意味着每次都会将所有数据分成训练和验证集。对于每个固定的 lambda,首先它使用训练数据来获得系数向量。然后实现这个构建的模型在验证集上进行预测得到误差。

因此,对于 K 折 CV,它有 k 个系数向量(每个都是从训练集中生成的)。那么

是什么意思

coef(cvfit)

得到?

这是一个例子:

x <- iris[1:100,1:4]
y <- iris[1:100,5]
y <- factor(y)

fit <- cv.glmnet(data.matrix(x), y, family = "binomial", type.measure =       "class",alpha=1,nfolds=3,standardize = T)
coef(fit, s=c(fit$lambda.min,fit$lambda.1se))

fit1 <- glmnet(data.matrix(x), y, family = "binomial",
           standardize = T,
           lambda = c(fit$lambda.1se,fit$lambda.min))
coef(fit1)

在fit1中,我使用了整个数据集作为训练集,似乎fit1和fit的系数是一样的。这是为什么?

提前致谢。

虽然 cv.glmnet 通过交叉验证检查模型性能,但每个 lambda 值的实际模型系数 returns 是基于模型与完整数据集的拟合。

cv.glmnet(类型 ?cv.glmnet)的帮助包括描述 cv.glmet 返回的对象的 Value 部分。返回的列表对象(在您的例子中为 fit)包含一个名为 glmnet.fit 的元素。帮助是这样描述的:

glmnet.fit a fitted glmnet object for the full data.