Я выступаю упругую внутрисетевые логистическую регрессию по набору данных медико - санитарной помощи с использованием 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.0
1.0
cv.glmnet()
без передачи foldids
созданного из известного случайного семени.
caret
пакет, который может делать повторные cv и tune для alpha и lambda (поддерживает многоядерную обработку!). По памяти, я думаю, чтоglmnet
документация не подходит для настройки альфы, как вы делаете здесь. Он рекомендует сохранить фиксированные складки, если пользователь настраивает альфа в дополнение к настройке лямбда, предоставляемойcv.glmnet
.