R cv.glmnet,并在cv中省略一个

R cv.glmnet,并在cv中省略一个,r,lambda,glmnet,R,Lambda,Glmnet,我试图使用函数cv.glmnet来找到最佳lambda(使用岭回归),以便预测某些对象的归属类别。 所以我使用的代码是: CVGLM<-cv.glmnet(x,y,nfolds=34,type.measure = "class",alpha=0,grouped = FALSE) CVGLM以下是一个尝试来回答您的问题: 1) cv.glmnet通过使用规范的交叉验证来测试每个lambda的性能。以下是一个例子: library(glmnet) data(iris) 找到虹膜预测的最佳l

我试图使用函数
cv.glmnet
来找到最佳lambda(使用岭回归),以便预测某些对象的归属类别。 所以我使用的代码是:

CVGLM<-cv.glmnet(x,y,nfolds=34,type.measure = "class",alpha=0,grouped = FALSE)

CVGLM以下是一个尝试来回答您的问题:

1)
cv.glmnet
通过使用规范的交叉验证来测试每个lambda的性能。以下是一个例子:

library(glmnet)
data(iris)
找到虹膜预测的最佳lambda:

CVGLM <- cv.glmnet(as.matrix(iris[,-5]),
                   iris[,5],
                   nfolds = nrow(iris),
                   type.measure = "class",
                   alpha = 0,
                   grouped = FALSE,
                   family = "multinomial")
如果您使用LOOCV和best lambda单独测试此项:

z <- lapply(1:nrow(iris), function(x){
  fit <- glmnet(as.matrix(iris[-x,-5]),
                iris[-x,5],
                alpha = 0,
                lambda = CVGLM$lambda.min,
                family="multinomial")

   pred <- predict(fit, as.matrix(iris[x,-5]), type = "class")

  return(data.frame(pred, true = iris[x,5]))
})

z <- do.call(rbind, z)
因此,似乎没有必要使用与cv.glmnet中相同的方法测试性能,因为它将是相同的

2) 当您拥有最佳lambda时,应使用
glmnet
函数在整个数据集上拟合模型。使用该模型后,您要做什么完全取决于您。大多数人训练模型来预测某事

3) 分类问题的R^2是什么?如果你能解释的话,你就可以计算出来

R^2=解释变化/总变化

这在课程方面是什么

无论如何,R^2不用于分类,而是用于AUC、偏差、准确度、平衡准确度、kappa、joudens J等——其中大多数用于二元分类,但有些用于多项式分类


我建议进一步阅读

首先谢谢你的回答。当我谈论R^2时,我指的是模型精度的系数,这是一个参数,可以“说”确定的模型是好是坏。@Katherina很高兴我能帮忙。模型的精度包含在表示总误差的
CVGLM$cvm
中,因此精度为
1-CVGLM$cvm
Ah ok。我明白了!再次感谢!
z <- lapply(1:nrow(iris), function(x){
  fit <- glmnet(as.matrix(iris[-x,-5]),
                iris[-x,5],
                alpha = 0,
                lambda = CVGLM$lambda.min,
                family="multinomial")

   pred <- predict(fit, as.matrix(iris[x,-5]), type = "class")

  return(data.frame(pred, true = iris[x,5]))
})

z <- do.call(rbind, z)
sum(z$pred != z$true)/150
#output
0.06