Я выступаю упругую внутрисетевые логистическую регрессию по набору данных медико - санитарной помощи с использованием 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
caret
пакет, который может делать повторные cv и tune для alpha и lambda (поддерживает многоядерную обработку!). По памяти, я думаю, чтоglmnet
документация не подходит для настройки альфы, как вы делаете здесь. Он рекомендует сохранить фиксированные складки, если пользователь настраивает альфа в дополнение к настройке лямбда, предоставляемойcv.glmnet
.cv.glmnet()
без передачиfoldids
созданного из известного случайного семени.Ответы:
Выяснение того, что подразумевается под параметрамиα и Elastic Net
Разные терминология и параметры используются разными пакетами, но смысл, как правило, одинаков:
Пакет R Glmnet использует следующее определение
Склеарн использует
Существуют альтернативные параметризации с использованиемa и б .
Чтобы избежать путаницы, я собираюсь позвонить
Визуализация влияния параметров
Рассмотрим моделируемый набор данных, гдеY состоит из шумовой синусоидальной кривой, а Икс - это двумерный элемент, состоящий из Икс1= х и Икс2= х2 . Из-за корреляции между Икс1 и Икс2 функция стоимости является узкой долиной.
Графика ниже иллюстрируют пути решения о elasticnet регрессии с двумя различнымиL1 параметров отношения, как функция от λ предела прочности.
Понимание влияния параметров
ElasticNet был введен, чтобы противостоять некоторым ограничениям Лассо, которые:
Вы можете видеть это визуально на диаграмме выше, особенности в вершинах поощряют разреженность , в то время как строгие выпуклые ребра поощряют группирование .
Вот визуализация, взятая из Hastie (изобретатель ElasticNet)
дальнейшее чтение
источник
Позвольте мне добавить несколько очень практических замечаний, несмотря на возраст вопроса. Поскольку я не пользователь R, я не могу позволить коду говорить, но, тем не менее, это должно быть понятно.
Одним из преимуществ повторной выборки является то, что вы можете проверить последовательность результатов тестов, которые здесь являются показателями cv. Вы всегда должны смотреть не только на среднее значение, но и на стандартное отклонение (оно не нормально распределено, но вы действуете так, как если бы). Обычно это значение отображается как 65,5% (± 2,57%) для точности. Таким образом, вы можете определить, являются ли «небольшие отклонения» более вероятными или случайными. Лучше было бы даже проверить полные последовательности. Если по какой-то причине всегда есть один фолд, вы, возможно, захотите переосмыслить то, как вы делаете свой сплит (это также намекает на ошибочный план эксперимента: вы перетасовали?). В Scikit-Learn
GridSearchCV
магазины подробно об истечениях сгиба вcv_results_
( см. Здесь ).источник