glmnet :: cvfit的R系数

时间:2018-01-11 02:40:21

标签: r glmnet

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

因此,对于K fold 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的系数是相同的。那是为什么?

提前致谢。

1 个答案:

答案 0 :(得分:0)

尽管cv.glmnet通过交叉验证检查模型性能,但它为每个lambda值返回的实际模型系数是基于使用完整数据集拟合模型。

cv.glmnet(类型?cv.glmnet)的帮助包含一个Value部分,其中描述了cv.glmet返回的对象。返回的列表对象(在您的情况下为fit)包含一个名为glmnet.fit的元素。帮助描述如下:

  

glmnet.fit用于完整数据的拟合glmnet对象。