একটি অনুকূল ল্যাম্বদা অনুসন্ধান করতে এবং একই কাজটি glmnet
করার caret
জন্য ব্যবহারের মধ্যে তুলনা করে অনেক বিভ্রান্তি রয়েছে বলে মনে হয় cv.glmnet
।
অনেক প্রশ্ন উত্থাপিত হয়েছিল, যেমন:
শ্রেণিবিন্যাস মডেল ট্রেন.glmnet বনাম cv.glmnet?
ক্যারেটের সাথে গ্ল্যামনেট ব্যবহারের সঠিক উপায় কী?
`ক্যারেট ব্যবহার করে ক্রস-বৈধকরণ` গ্ল্যামেট`
তবে কোনও উত্তর দেওয়া হয়নি, যা প্রশ্নের পুনরুত্পাদনযোগ্যতার কারণে হতে পারে। প্রথম প্রশ্ন অনুসরণ করে, আমি বেশ অনুরূপ উদাহরণ দিচ্ছি তবে একই প্রশ্ন রয়েছে: আনুমানিক ল্যাম্বডাস এত আলাদা কেন?
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)
সংক্ষিপ্তসার হিসাবে, সর্বোত্তম ল্যাম্বডাস নিম্নরূপ দেওয়া হয়েছে:
0.055 ব্যবহার করে
cv.glmnet()
0.001 ব্যবহার করে
train()
আমি জানি যে ব্যবহার standardize=FALSE
করা cv.glmnet()
ভাল নয়, তবে আমি একই পূর্বশর্তগুলি ব্যবহার করে উভয় পদ্ধতির তুলনা করতে চাই। প্রধান ব্যাখ্যা হিসাবে, আমি মনে করি প্রতিটি ভাঁজের জন্য স্যাম্পলিং পদ্ধতির বিষয়টি হতে পারে - তবে আমি একই বীজ ব্যবহার করি এবং ফলাফলগুলি একেবারেই আলাদা।
সুতরাং আমি সত্যিই আটকে আছি কেন দুটি পদ্ধতির এতই পৃথক, যখন এগুলি একই রকম হওয়া উচিত? - আমি আশা করি এখানে সমস্যাটি সম্পর্কে সম্প্রদায়টির কিছু ধারণা আছে