Выбор оптимального альфа в упругой сети логистической регрессии


22

Я выступаю упругую внутрисетевые логистическую регрессию по набору данных медико - санитарной помощи с использованием 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))}

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


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

1
Ах, нашел этот пост здесь: stats.stackexchange.com/questions/69638/…
RobertF

2
не забудьте исправить сгиб, когда вы пробуете другой α
user4581

1
Для воспроизводимости никогда не запускайте cv.glmnet()без передачи foldidsсозданного из известного случайного семени.
СМС

1
@amoeba взгляните на мой ответ - приветствуются компромиссы между l1 и l2!
Ксавье Бурре Сикот

Ответы:


7

Выяснение того, что подразумевается под параметрами α и Elastic Net

Разные терминология и параметры используются разными пакетами, но смысл, как правило, одинаков:

Пакет R Glmnet использует следующее определение

minβ0,β1NΣязнак равно1NвесяL(Yя,β0+βTИкся)+λ[(1-α)||β||22/2+α||β||1]

Склеарн использует

минвес12NΣязнак равно1N||Y-Иксвес||22+α×L1соотношение||вес||1+0,5×α×(1-L1соотношение)×||вес||22

Существуют альтернативные параметризации с использованием a и б .

Чтобы избежать путаницы, я собираюсь позвонить

  • λ параметр силы штрафа
  • L 1 соотношениеL1соотношение междуштрафомL1 иL2 , варьирующееся от 0 (гребень) до 1 (лассо)

Визуализация влияния параметров

Рассмотрим моделируемый набор данных, где Y состоит из шумовой синусоидальной кривой, а Икс - это двумерный элемент, состоящий из Икс1знак равноИкс и Икс2знак равноИкс2 . Из-за корреляции между Икс1 и Икс2 функция стоимости является узкой долиной.

Графика ниже иллюстрируют пути решения о elasticnet регрессии с двумя различными L1 параметров отношения, как функция от λ предела прочности.

  • Для обеих симуляций: когда λзнак равно0 то решением является решение OLS в правом нижнем углу со связанной функцией стоимости в форме долины.
  • При увеличении λ происходит регуляризация, и решение стремится к (0,0)
  • Основное различие между двумя симуляциями - параметр отношения L1 .
  • LHS : для небольшого коэффициента L1 регуляризованная функция затрат очень похожа на регрессию Риджа с округлыми контурами.
  • RHS : для большого отношения L1 функция стоимости очень похожа на регрессию Лассо с типичными контурами в форме ромба.
  • Для промежуточного отношения L1 (не показано) функция затрат представляет собой смесь двух

введите описание изображения здесь


Понимание влияния параметров

ElasticNet был введен, чтобы противостоять некоторым ограничениям Лассо, которые:

  • Если есть больше переменных п , чем точки данных N , п>N , лассо отбирает у большинства N переменных.
  • Лассо не может выполнить групповой отбор, особенно при наличии коррелированных переменных. Он будет иметь тенденцию выбирать одну переменную из группы и игнорировать другие

L1L2

  • L1
  • L2L1

Вы можете видеть это визуально на диаграмме выше, особенности в вершинах поощряют разреженность , в то время как строгие выпуклые ребра поощряют группирование .

Вот визуализация, взятая из Hastie (изобретатель ElasticNet)

введите описание изображения здесь

дальнейшее чтение


2

Позвольте мне добавить несколько очень практических замечаний, несмотря на возраст вопроса. Поскольку я не пользователь R, я не могу позволить коду говорить, но, тем не менее, это должно быть понятно.

  1. αКе1,,,,,еКе(Икс)знак равно1КΣяея(Икс)е(Икс)знак равноΠязнак равно1Кея(Икс)К

  2. Одним из преимуществ повторной выборки является то, что вы можете проверить последовательность результатов тестов, которые здесь являются показателями cv. Вы всегда должны смотреть не только на среднее значение, но и на стандартное отклонение (оно не нормально распределено, но вы действуете так, как если бы). Обычно это значение отображается как 65,5% (± 2,57%) для точности. Таким образом, вы можете определить, являются ли «небольшие отклонения» более вероятными или случайными. Лучше было бы даже проверить полные последовательности. Если по какой-то причине всегда есть один фолд, вы, возможно, захотите переосмыслить то, как вы делаете свой сплит (это также намекает на ошибочный план эксперимента: вы перетасовали?). В Scikit-Learn GridSearchCVмагазины подробно об истечениях сгиба в cv_results_( см. Здесь ).

  3. αL1αL2

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.