Wydaje się, że istnieje wiele zamieszania w porównaniu używania glmnet
wewnątrz w caret
celu znalezienia optymalnej lambdy i korzystania cv.glmnet
z tego samego zadania.
Zadano wiele pytań, np .:
Model klasyfikacji train.glmnet vs. cv.glmnet?
Jaki jest właściwy sposób używania glmnet z karetką?
Cross-validation `glmnet` za pomocą` caret`
ale nie udzielono odpowiedzi, co może wynikać z odtwarzalności pytania. Po pierwszym pytaniu podam dość podobny przykład, ale mam to samo pytanie: dlaczego szacowane lambdas są tak różne?
library(caret)
library(glmnet)
set.seed(849)
training <- twoClassSim(50, linearVars = 2)
set.seed(849)
testing <- twoClassSim(500, linearVars = 2)
trainX <- training[, -ncol(training)]
testX <- testing[, -ncol(testing)]
trainY <- training$Class
# Using glmnet to directly perform CV
set.seed(849)
cvob1=cv.glmnet(x=as.matrix(trainX),y=trainY,family="binomial",alpha=1, type.measure="auc", nfolds = 3,lambda = seq(0.001,0.1,by = 0.001),standardize=FALSE)
cbind(cvob1$lambda,cvob1$cvm)
# best parameter
cvob1$lambda.mi
# best coefficient
coef(cvob1, s = "lambda.min")
# Using caret to perform CV
cctrl1 <- trainControl(method="cv", number=3, returnResamp="all",classProbs=TRUE,summaryFunction=twoClassSummary)
set.seed(849)
test_class_cv_model <- train(trainX, trainY, method = "glmnet", trControl = cctrl1,metric = "ROC",
tuneGrid = expand.grid(alpha = 1,lambda = seq(0.001,0.1,by = 0.001)))
test_class_cv_model
# best parameter
test_class_cv_model$bestTune
# best coefficient
coef(test_class_cv_model$finalModel, test_class_cv_model$bestTune$lambda)
Podsumowując, optymalne lambdas są podane jako:
0,055 przy użyciu
cv.glmnet()
0,001 przy użyciu
train()
Wiem, że używanie standardize=FALSE
w cv.glmnet()
nie jest wskazane, ale naprawdę chcę porównać obie metody, stosując te same warunki wstępne. Jako główne wyjaśnienie, myślę, że podejście do próbkowania dla każdej zakładki może stanowić problem - ale używam tych samych nasion, a wyniki są zupełnie inne.
Więc naprawdę utknąłem na tym, dlaczego te dwa podejścia są tak różne, a jednocześnie powinny być całkiem podobne? - Mam nadzieję, że społeczność ma pojęcie, o co tu chodzi