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.
据我所知,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.