代码之家  ›  专栏  ›  技术社区  ›  ming gao

glmnet的R系数::cvfit

  •  1
  • ming gao  · 技术社区  · 7 年前

    就我而言,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的系数似乎是一样的。这就是为什么?

    提前谢谢。

    1 回复  |  直到 7 年前
        1
  •  0
  •   eipi10    7 年前

    虽然 cv.glmnet 通过交叉验证检查模型性能,它为每个 lambda 值基于使用完整数据集拟合模型。

    的帮助 cv。glmnet公司 (类型 ?cv.glmnet )包括 Value 描述返回的对象的节 cv.glmet . 返回的列表对象( fit 在您的情况下)包含一个名为 glmnet.fit . 该帮助描述如下:

    glmnet。为完整数据安装已安装的glmnet对象。