Як застосувати метод ітеративно завищених найменших квадратів (IRLS) до моделі LASSO?


12

Я запрограмував логістичну регресію за допомогою алгоритму IRLS . Я хотів би застосувати санкцію LASSO для автоматичного вибору потрібних функцій. При кожній ітерації вирішується наступне:

(XTWX)δβ^=XT(yp)

Нехай - невід'ємне дійсне число. Я не караю перехоплення, як пропонується в "Елементах". Статистичне навчання . Дітто для вже нульових коефіцієнтів. В іншому випадку я віднімаю термін з правого боку:λ

XT(yp)λ×sign(β^)

Однак я не впевнений у зміні алгоритму IRLS. Це правильний шлях?


Редагувати: Хоча я не був у цьому впевнений, ось одне з рішень, яке я нарешті придумав. Що цікаво, це рішення відповідає тому, що я зараз розумію про LASSO. На кожному етапі дійсно два кроки замість одного:

  • перший крок такий же, як і раніше: робимо ітерацію алгоритму (як би у формулі для градієнта вище),λ=0
  • другий крок - новий: ми застосовуємо м'який поріг до кожного компонента (за винятком компонента , який відповідає перехопленню) вектора отриманого на першому кроці. Це називається Ітераційним алгоритмом м'якого порогу . ββ0β

i1,βisign(βi)×max(0,|βi|λ)

Ще не вдалося досягти кращої конвергенції шляхом адаптації IRLS. : '(
Вок

Відповіді:


12

Зазвичай ця проблема вирішується пристосуванням шляхом координатного спуску ( див. Тут ). Цей спосіб є безпечнішим і більш ефективним чисельним, алгоритмічно простішим у застосуванні та застосовно до більш загального масиву моделей (включаючи регресію Кокса). Реалізація R доступний в R пакет glmnet . Коди є відкритим кодом (частково в і на C, частково в R), тому ви можете використовувати їх як креслення.


@wok Зверніть увагу, пакет scikit.learn також пропонує ефективну реалізацію в Python для подібних матеріалів.
chl

Алгоритм спуску координат цікавий. Дякую. Ще про це думаю.
Вок

5

Функція втрат LASSO має розрив на нулі вздовж кожної осі, тому IRLS матиме з цим проблеми. Я знайшов підхід типу мінімальної оптимізації (SMO) дуже ефективним, див

http://bioinformatics.oxfordjournals.org/content/19/17/2246

версія з програмним забезпеченням MATLAB є

http://bioinformatics.oxfordjournals.org/content/22/19/2348

програмне забезпечення доступне тут:

http://theoval.cmp.uea.ac.uk/~gcc/cbl/blogreg/

Основна ідея полягає в оптимізації коефіцієнтів по одному, і перевірити, чи перетинаєте ви один раз коефіцієнт розриву, що легко, оскільки ви здійснюєте скалярну оптимізацію. Це може звучати повільно, але насправді це досить ефективно (хоча, я думаю, що з цього часу були розроблені кращі алгоритми - ймовірно, Керті чи Чі-Джен Лін, які обидва є провідними фахівцями в цій справі).


Дякую. Я читаю це і думаю про це. Однак це була б величезна модифікація поточного алгоритму.
Вок

4

Ви можете перевірити статтю: Ефективна L1-регульована логістична регресія, що є алгоритмом LASSO на основі IRLS. Щодо реалізації, то посилання може бути корисним для вас (http://ai.stanford.edu/~silee/softwares/irlslars.htm).


0

IRLS для проблеми LASSO є наступним:

argminx12Axb22+λx1=argminx12Axb22+λxTWx

Де - діагональна матриця - . Це походить від .WWi,i=1|xi|
x1=i|xi|=ixi2|xi|

Тепер вищезазначене - це лише регуляризація Тихонова .
Тим не менш, оскільки залежить від його слід ітераційно вирішувати (також це скасовує 2 коефіцієнт у регуляризації Тихонова, оскільки похідна щодо , утримуючи як постійне, що дорівнює ):x x T W x x x diag ( знак ( x ) ) W xWxxTWxxxdiag(sign(x))Wx

xk+1=(ATA+λWk)1ATb

Де .Wi,iK=1|xik|

Ініціалізація може бути від .W=I

Зверніть увагу, що це не працює добре для великих значень і вам краще використовувати ADMM або Coordinate Descent.λ

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