Я здійснюю еластичну чисту логістичну регресію на наборі даних охорони здоров’я, використовуючи glmnetпакет в R, вибираючи значення лямбда по сітці від 0 до 1. Мій скорочений код нижче:
alphalist <- seq(0,1,by=0.1)
elasticnet <- lapply(alphalist, function(a){
cv.glmnet(x, y, alpha=a, family="binomial", lambda.min.ratio=.001)
})
for (i in 1:11) {print(min(elasticnet[[i]]$cvm))}
яка виводить середню перехресну перевірену помилку для кожного значення альфа від до із збільшенням :1,0 0,1
[1] 0.2080167
[1] 0.1947478
[1] 0.1949832
[1] 0.1946211
[1] 0.1947906
[1] 0.1953286
[1] 0.194827
[1] 0.1944735
[1] 0.1942612
[1] 0.1944079
[1] 0.1948874
Виходячи з того, що я читав в літературі, оптимальним вибором є те, де помилка cv зведена до мінімуму. Але помилок у діапазоні альфа існує велика кількість варіацій. Я бачу кілька локальних мінімумів, з глобальною мінімальною помилкою для .0.1942612alpha=0.8
Чи безпечно їхати alpha=0.8? Або, враховуючи різницю, мені слід повторно запустити cv.glmnetз більшою кількістю перехресних перевірок (наприклад, замість ) або, можливо, більшою кількістю приростів між, і щоб отримати чітке уявлення про шлях помилки cv?10 αalpha=0.01.0
cv.glmnet()не передаючи foldidsстворене з відомого випадкового насіння.


caretпакунок, який може робити повторений cv і налаштування для альфа та лямбда (підтримує багатоядерну обробку!). З пам’яті, я думаю, щоglmnetдокументація заважає настроювати альфа, як ви робите тут. Рекомендує зберігати фіксовану кількість разів, якщо користувач налаштовує альфа на додаток до налаштування лямбда, передбаченого компанієюcv.glmnet.