【发布时间】:2020-01-13 20:37:55
【问题描述】:
我在这里看到了一些关于我的问题的帖子。我经历了这些,但我仍然无法弄清楚我做错了什么。
我们将不胜感激。
我使用 glmnet 包和 caret 包(它是 glmnet 包的包装器)拟合了 LASSO 逻辑回归模型,我得到了不同的结果。
这是我的代码:
使用 glment 包,
require(ISLR)
require(glmnet)
y <- Smarket$Direction
x <- model.matrix(Direction ~ Lag1 + Lag2 + Lag3 + Lag4 + Volume, Smarket)[, -1]
lasso.mod <- cv.glmnet(x, y, alpha=1,family="binomial",nfolds = 5, type.measure="class",
lambda = seq(0.001,0.1,by = 0.001))
> lasso.mod$lambda.min
[1] 0.1
使用插入符号包,
require(caret)
set.seed(123)
fitControl1 <- trainControl(method = "cv",number = 5,savePredictions = T,returnResamp="all")
modelFitlassocvintm1 <- train(Direction ~ Lag1 + Lag2 + Lag3 + Lag4 + Volume, data=Smarket,
method = "glmnet",
trControl = fitControl1,
tuneGrid=expand.grid(
.alpha=1,
.lambda=seq(0.001,0.1,by = 0.001)),
family="binomial")
modelFitlassocvintm1$bestTune
alpha lambda
26 1 0.026
如您所见,基于 5 折交叉验证,我得到了调整参数 lambda 的不同值。谁能帮我弄清楚我做错了什么?
谢谢
【问题讨论】:
标签: r cross-validation r-caret glmnet