gpt4 book ai didi

r - R 中 glmnet() 和 cv.glmnet() 之间的区别?

转载 作者:行者123 更新时间:2023-12-04 01:54:07 64 4
gpt4 key购买 nike

我正在开展一个项目,该项目将显示一组事件对结果的潜在影响。我正在使用 glmnet() 包,特别是使用泊松功能。这是我的代码:

# de <- data imported from sql connection        
x <- model.matrix(~.,data = de[,2:7])
y <- (de[,1])
reg <- cv.glmnet(x,y, family = "poisson", alpha = 1)
reg1 <- glmnet(x,y, family = "poisson", alpha = 1)

**Co <- coef(?reg or reg1?,s=???)**

summ <- summary(Co)
c <- data.frame(Name= rownames(Co)[summ$i],
Lambda= summ$x)
c2 <- c[with(c, order(-Lambda)), ]

一开始用SQL从我的数据库中导入了大量数据。然后我将其放入矩阵格式并将响应与预测变量分开。

这就是我感到困惑的地方:我无法弄清楚 glmnet() 函数和 cv.glmnet() 函数之间到底有什么区别。我意识到 cv.glmnet() 函数是 glmnet() 的 k 折交叉验证,但这在实际中究竟意味着什么?它们为 lambda 提供了相同的值,但我想确保我没有遗漏关于两者之间差异的一些重要信息。

我也不清楚为什么当我指定 alpha=1 (据说是默认值)时它运行良好,但如果我省略它就不行?

提前致谢!

最佳答案

glmnet() 是一个 R 包,可用于拟合回归模型、套索模型等。 Alpha 参数确定适合的模型类型。当 alpha=0 时,拟合岭模型,如果 alpha=1,则拟合套索模型。

cv.glmnet() 执行交叉验证,默认为 10 倍,可以使用 nfolds 进行调整。 10 倍的 CV 会将您的观察结果随机分成 10 个不重叠的组/大小大致相同的折叠。第一个折叠将用于验证集,模型适合 9 个折叠。偏差方差优势通常是使用此类模型验证方法背后的动机。在套索和脊模型的情况下,CV 有助于选择调整参数 lambda 的值。

在您的示例中,您可以执行 plot(reg) OR reg$lambda.min 以查看导致最小 CV 错误的 lambda 值。然后,您可以得出该 lambda 值的测试 MSE。默认情况下,glmnet() 将对自动选择的 lambda 范围执行 Ridge 或 Lasso 回归,这可能不会给出最低的测试 MSE。希望这可以帮助!

希望这可以帮助!

关于r - R 中 glmnet() 和 cv.glmnet() 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29311323/

64 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com