Sea*_*haw 11 r classification glm glmnet cross-validation
我正在开展一个项目,展示一组事件对结果的潜在影响.我正在使用glmnet()包,特别是使用Poisson功能.这是我的代码:
# 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)), ]
Run Code Online (Sandbox Code Playgroud)
开始在SQL中从我的数据库导入大量数据.然后我把它放在矩阵格式中并将响应与预测变量分开.
这是我困惑的地方:我无法弄清楚glmnet()函数和cv.glmnet()函数之间的区别.我意识到cv.glmnet()函数是glmnet()的k-fold交叉验证,但实际上这究竟是什么意思呢?它们为lambda提供了相同的值,但我想确保我不会错过两者之间的重要区别.
当我指定alpha = 1(假设是默认值)时,我也不清楚它为什么运行正常,但如果我把它留下来的话就不行了?
提前致谢!
Amr*_*ant 14
glmnet()是一个R包,可用于拟合回归模型,套索模型等.Alpha参数确定适合的模型类型.当alpha = 0时,Ridge模型是合适的,如果alpha = 1,则套索模型是合适的.
cv.glmnet()执行交叉验证,默认为10倍,可以使用nfolds进行调整.10倍的CV将随机将您的观察分成10个非重叠组/大小相等的折叠.第一个折叠将用于验证集,模型适合9倍.偏差方差优势通常是使用此类模型验证方法的动机.在套索和脊模型的情况下,CV有助于选择调整参数lambda的值.
在您的示例中,您可以执行plot(reg)或reg $ lambda.min来查看lambda的值,该值导致最小的CV错误.然后,您可以为该lambda值派生Test MSE.默认情况下,glmnet()将对自动选择的lambda范围执行Ridge或Lasso回归,这可能不会给出最低的测试MSE.希望这可以帮助!
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
16054 次 |
| 最近记录: |