Я здійснюю еластичну чисту логістичну регресію на наборі даних охорони здоров’я, використовуючи 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.1942612
alpha=0.8
Чи безпечно їхати alpha=0.8
? Або, враховуючи різницю, мені слід повторно запустити cv.glmnet
з більшою кількістю перехресних перевірок (наприклад, замість ) або, можливо, більшою кількістю приростів між, і щоб отримати чітке уявлення про шлях помилки cv?10 αalpha=0.0
1.0
cv.glmnet()
не передаючи foldids
створене з відомого випадкового насіння.
caret
пакунок, який може робити повторений cv і налаштування для альфа та лямбда (підтримує багатоядерну обробку!). З пам’яті, я думаю, щоglmnet
документація заважає настроювати альфа, як ви робите тут. Рекомендує зберігати фіксовану кількість разів, якщо користувач налаштовує альфа на додаток до налаштування лямбда, передбаченого компанієюcv.glmnet
.