Вибір оптимальної альфа-еластичної логістичної регресії


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))}

яка виводить середню перехресну перевірену помилку для кожного значення альфа від до із збільшенням :1,0 0,10.01.00.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.1942612alpha=0.8

Чи безпечно їхати alpha=0.8? Або, враховуючи різницю, мені слід повторно запустити cv.glmnetз більшою кількістю перехресних перевірок (наприклад, замість ) або, можливо, більшою кількістю приростів між, і щоб отримати чітке уявлення про шлях помилки cv?10 α2010αalpha=0.01.0


5
Ви хочете подивитися на caretпакунок, який може робити повторений cv і налаштування для альфа та лямбда (підтримує багатоядерну обробку!). З пам’яті, я думаю, що glmnetдокументація заважає настроювати альфа, як ви робите тут. Рекомендує зберігати фіксовану кількість разів, якщо користувач налаштовує альфа на додаток до налаштування лямбда, передбаченого компанією cv.glmnet.

1
Ах, знайшов цю публікацію тут: stats.stackexchange.com/questions/69638/…
RobertF

2
не забувайте виправляти фолд, коли ви намагаєтеся іншуα
user4581

1
Для відтворюваності ніколи не працюйте, cv.glmnet()не передаючи foldidsстворене з відомого випадкового насіння.
smci

1
@amoeba погляньте на мою відповідь - вклад про компроміси між l1 та l2 вітаються!
Xavier Bourret Sicotte

Відповіді:


7

Уточнення того, що означає параметри та еластична мережаα

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

У пакеті R Glmnet використовується таке визначення

minβ0,β1Ni=1Nwil(yi,β0+βTxi)+λ[(1α)||β||22/2+α||β||1]

Sklearn використання

minw12Ni=1N||yXw||22+α×l1ratio||w||1+0.5×α×(1l1ratio)×||w||22

Існують і альтернативні параметри з використанням і .ab

Щоб уникнути плутанини я збираюся зателефонувати

  • λ параметр міцності штрафу
  • L1ratio відношення між штрафом і , що становить від 0 (гребінь) до 1 (ласо)L1L2

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

Розглянемо модельований набір даних, де складається з галасливої ​​синусоїди, а - двовимірна ознака, що складається з і . Через кореляцію між та функцією витрат є вузька долина.yXX1=xX2=x2X1X2

Наведена нижче графіка ілюструє шлях рішення еластичної регресії з двома різними параметрами відношення як функцію параметра міцності.L1λ

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

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


Розуміння ефекту параметрів

ElasticNet був введений для боротьби з деякими обмеженнями Lasso, які є:

  • Якщо змінних більше, ніж точок даних , , ласо вибирає не більше змінних.pnp>nn
  • Лассо не може виконати груповий вибір, особливо за наявності корельованих змінних. Він буде схильний вибирати одну змінну з групи та ігнорувати інші

Комбінуючи та квадратичний штраф ми отримуємо переваги обох:L1L2

  • L1 генерує розріджену модель
  • L2 знімає обмеження на кількість вибраних змінних, заохочує групування та стабілізує шлях регуляризації .L1

Це можна наочно побачити на схемі вище, особливості вершин заохочують розрідженість , тоді як суворі опуклі краї сприяють групуванню .

Ось візуалізація, зроблена від Hastie (винахідника ElasticNet)

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

Подальше читання


2

Дозвольте додати кілька дуже практичних зауважень, незважаючи на вік питання. Оскільки я не користувач R, я не можу дозволити коду говорити, але все-таки це має бути зрозумілим.

  1. Зазвичай слід просто вибрати гіперпараметри (тут: ) з найкращим балом CV. Крім того, ви можете вибрати кращі моделі і сформувати ансамбль шляхом арифметичного усереднення функції прийняття рішення. Це, звичайно, збільшує складність виконання. Підказка: іноді геометричне усереднення працює краще . Я думаю, це через більш плавну межу прийняття рішення.αkf1,...,fkf(x)=1kifi(x)f(x)=i=1kfi(x)k

  2. Однією з переваг переустановки є те, що ви можете перевірити послідовність тестових балів, які тут є оцінками рейтингу. Ви завжди повинні дивитися не тільки на середнє значення, але і на відхилення std (воно нормально розподілене, але ви дієте як би). Зазвичай ви показуєте цю вимогу як 65,5% (± 2,57%) для точності. Таким чином ви можете сказати, чи є "малі відхилення" скоріше випадковими чи структурно. Краще було б навіть оглянути цілі послідовності. Якщо з якоїсь причини завжди є одне відкидання, можливо, ви захочете переосмислити те, як ви робите розкол (це також натякає на несправний експериментальний дизайн, також: ви перетасували?). У scikit вивчіть GridSearchCVдеталі магазинів про терміни складання в cv_results_( див. Тут ).

  3. Що стосується : чим вона вище, тим більше ваша еластична сітка матиме функцію розрідження . Ви можете перевірити ваги отриманих моделей, чим вище , тим більше буде встановлено нуль. Це корисна хитрість видалити атрибути з вагами, встановленими на нулі, зі свого трубопроводу разом (це значно покращує продуктивність виконання). Ще одна хитрість - використовувати модель еластичної сітки для вибору особливостей, а потім перекваліфікувати варіант . Зазвичай це призводить до драматичного підвищення продуктивності моделі, оскільки взаємозв'язки між функціями відфільтровані.αL1αL2

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.