Tôi đã sử dụng caret
gói để điều chỉnh mô hình hồi quy logistic glmnet. Trong khi giá trị lambda
từ giai điệu tốt nhất là một trong những giá trị tôi đã chỉ định trong tuneGrid
, các lambda
giá trị của mô hình cuối cùng là hoàn toàn khác nhau:R caret train glmnet mô hình cuối cùng lambda giá trị không theo quy định
require(caret)
set.seed(1)
x <- matrix(runif(1000), nrow = 100)
y <- factor(rbinom(100, 1, 0.5))
lambda.seq <- exp(seq(log(1e-5), log(1e0), length.out = 20))
model <- train(x, y,
method ="glmnet",
family = "binomial",
tuneGrid = expand.grid(alpha = 1,
lambda = lambda.seq))
model$bestTune
# alpha lambda
# 13 1 0.0143845
model$finalModel$lambdaOpt
# [1] 0.0143845
model$finalModel$lambda
# [1] 0.1236344527 0.1126511087 0.1026434947 0.0935249295 0.0852164325 0.0776460395
# [7] 0.0707481794 0.0644631061 0.0587363814 0.0535184032 0.0487639757 0.0444319185
# [13] 0.0404847094 0.0368881594 0.0336111170 0.0306251980 0.0279045398 0.0254255774
# [19] 0.0231668392 0.0211087610 0.0192335169 0.0175248642 0.0159680036 0.0145494502
# [25] 0.0132569171 0.0120792091 0.0110061255 0.0100283716 0.0091374787 0.0083257303
# [31] 0.0075860954 0.0069121676 0.0062981097 0.0057386030 0.0052288013 0.0047642890
# [37] 0.0043410427 0.0039553964 0.0036040099 0.0032838396 0.0029921123 0.0027263013
# [43] 0.0024841042 0.0022634233 0.0020623470 0.0018791337 0.0017121967 0.0015600899
# [49] 0.0014214958 0.0012952140 0.0011801508 0.0010753094 0.0009797819 0.0008927408
model$finalModel$lambdaOpt %in% lambda.seq
# [1] TRUE
giá trị tối ưu Mô hình thức của lambda
cũng không có trong danh sách lambda
cùng một kiểu được cho là đã sử dụng:
model$finalModel$lambdaOpt %in% model$finalModel$lambda
# [1] FALSE
Điều gì giải thích những khác biệt này trong lambda
?