Я выступаю упругую внутрисетевые логистическую регрессию по набору данных медико - санитарной помощи с использованием 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.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с большим количеством сгибов перекрестной проверки (например, вместо 10 ) или, возможно, с большим количеством приращений α между и, чтобы получить четкую картину пути ошибки cv?alpha=0.01.0
cv.glmnet()без передачи foldidsсозданного из известного случайного семени.


caretпакет, который может делать повторные cv и tune для alpha и lambda (поддерживает многоядерную обработку!). По памяти, я думаю, чтоglmnetдокументация не подходит для настройки альфы, как вы делаете здесь. Он рекомендует сохранить фиксированные складки, если пользователь настраивает альфа в дополнение к настройке лямбда, предоставляемойcv.glmnet.