Czy caret
pakiet R sprawdza poprawność krzyżową dla obu modeli alpha
i lambda
dla glmnet
modelu? Uruchamianie tego kodu
eGrid <- expand.grid(.alpha = (1:10) * 0.1,
.lambda = (1:10) * 0.1)
Control <- trainControl(method = "repeatedcv",repeats = 3,verboseIter =TRUE)
netFit <- train(x =train_features, y = y_train,
method = "glmnet",
tuneGrid = eGrid,
trControl = Control)
Dziennik treningu wygląda następująco.
Fold10.Rep3: alpha=1.0, lambda=NA
Co lambda=NA
znaczy
r
machine-learning
cross-validation
caret
glmnet
mrquestion
źródło
źródło
Odpowiedzi:
train
dostosowuje oba.Zasadniczo potrzebujesz tylko
alpha
podczas treningu i możesz uzyskać prognozy dotyczące różnych wartościlambda
użytkowaniapredict.glmnet
. Może wartośćlambda = "all"
lub coś innego byłoby bardziej pouczające.Max
źródło
Stare pytanie, ale ostatnio musiałem poradzić sobie z tym problemem i znalazłem to pytanie jako odniesienie.
Oto alternatywne podejście:
Winieta glmnet ( https://web.stanford.edu/~hastie/glmnet/glmnet_alpha.html ) konkretnie rozwiązuje ten problem, zalecając określenie fałdowania z krzyżową weryfikacją za pomocą argumentu foldids i sprawdzenie na siatce . Używa tych samych folderów cv do sprawdzania dla każdego w twojej siatce.λ α λ α
Może to być lepsze niż jednoczesne sprawdzanie poprawności i ponieważ cv.glmnet sprawdza poprawność za pomocą „ciepłego startu”, aby wybrać a nie tylko losowo wybierając tj. Przyspieszając sprawdzanie poprawności i zwiększając prawdopodobieństwo wystąpienia optymalna w twojej siatce (ponieważ drobne siatki są droższe obliczeniowo).α λ λ λ λ > 0 λ
źródło