【发布时间】:2018-06-13 06:17:54
【问题描述】:
我正在使用 glmnet 在插入符号中运行弹性网络正则化。
我将值序列传递给 trainControl 以获得 alpha 和 lambda,然后我执行 repeatedcv 以获得 alpha 和 lambda 的最佳调整。
这是一个示例,其中 alpha 和 lambda 的最佳调整分别为 0.7 和 0.5:
age <- c(4, 8, 7, 12, 6, 9, 10, 14, 7, 6, 8, 11, 11, 6, 2, 10, 14, 7, 12, 6, 9, 10, 14, 7)
gender <- make.names(as.factor(c(1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1)))
bmi_p <- c(0.86, 0.45, 0.99, 0.84, 0.85, 0.67, 0.91, 0.29, 0.88, 0.83, 0.48, 0.99, 0.80, 0.85,
0.50, 0.91, 0.29, 0.88, 0.99, 0.84, 0.80, 0.85, 0.88, 0.99)
m_edu <- make.names(as.factor(c(0, 1, 1, 2, 2, 3, 2, 0, 1, 1, 0, 1, 2, 2, 1, 2, 0, 1, 1, 2, 2, 0 , 1, 0)))
p_edu <- make.names(as.factor(c(0, 2, 2, 2, 2, 3, 2, 0, 0, 0, 1, 2, 2, 1, 3, 2, 3, 0, 0, 2, 0, 1, 0, 1)))
f_color <- make.names(as.factor(c("blue", "blue", "yellow", "red", "red", "yellow",
"yellow", "red", "yellow","blue", "blue", "yellow", "red", "red", "yellow",
"yellow", "red", "yellow", "yellow", "red", "blue", "yellow", "yellow", "red")))
asthma <- make.names(as.factor(c(1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1)))
x <- data.frame(age, gender, bmi_p, m_edu, p_edu, f_color, asthma)
tuneGrid <- expand.grid(alpha = seq(0, 1, 0.05), lambda = seq(0, 0.5, 0.05))
fitControl <- trainControl(method = 'repeatedcv', number = 3, repeats = 5, classProbs = TRUE, summaryFunction = twoClassSummary)
set.seed(1352)
model.test <- caret::train(asthma ~ age + gender + bmi_p + m_edu + p_edu + f_color, data = x, method = "glmnet",
family = "binomial", trControl = fitControl, tuneGrid = tuneGrid,
metric = "ROC")
model.test$bestTune
我的问题?
当我运行as.matrix(coef(model.test$finalModel)) 时,我假设它给出了与最佳模型相对应的系数,我得到了 100 组不同的系数。
那么如何得到最佳调优对应的系数呢?
我已经看到了获得最佳模型的建议 coef(model.test$finalModel, model.test$bestTune$lambda) 但是,这会返回 NULL 系数,并且无论如何,只会返回与 lambda 相关的最佳调整,而不是另外的 alpha。
编辑:
在互联网上到处搜索后,我现在只能找到指向正确答案方向的 this 博客文章,其中说 model.test$finalModel 返回与最佳 alpha 调整相对应的模型,而 @ 987654329@ 返回与 lambda 的最佳值对应的系数集。如果这是真的,那么这就是我的问题的答案。然而,由于这是一篇博客文章,我找不到其他任何东西来支持这一说法,我仍然持怀疑态度。任何人都可以验证 model.test$finalModel 返回与最佳 alpha 对应的模型的说法吗?如果是这样,那么这个问题将得到解决。谢谢!
【问题讨论】:
标签: r machine-learning r-caret glmnet