Bagaimana Cara Menerapkan Metode Iteratively Reweighted Least Squares (IRLS) ke Model LASSO?

12

Saya telah memprogram regresi logistik menggunakan algoritma IRLS . Saya ingin menerapkan hukuman LASSO untuk memilih fitur yang tepat secara otomatis. Pada setiap iterasi, berikut ini dipecahkan:

(XTWX)δβ^=XT(yp)

Biarkan menjadi bilangan real non-negatif. Saya tidak menghukum intersep seperti yang disarankan dalam The Elements of. Pembelajaran Statistik . Ditto untuk koefisien yang sudah nol. Kalau tidak, saya mengurangi istilah dari sisi kanan:λ

XT(yp)λ×sign(β^)

Namun, saya tidak yakin tentang modifikasi algoritma IRLS. Apakah ini cara yang benar untuk dilakukan?


Sunting: Meskipun saya tidak yakin tentang hal itu, berikut adalah salah satu solusi yang akhirnya saya temukan. Yang menarik adalah solusi ini sesuai dengan apa yang sekarang saya mengerti tentang LASSO. Memang ada dua langkah di setiap iterasi alih-alih hanya satu:

  • langkah pertama adalah sama seperti sebelumnya: kita membuat iterasi dari algoritma (seolah-olah λ=0 dalam rumus untuk gradien di atas),
  • langkah kedua adalah yang baru: kami menerapkan soft-thresholding untuk setiap komponen (kecuali untuk komponen β0 , yang sesuai dengan intersep) dari vektor β diperoleh pada langkah pertama. Ini disebut Iterative Soft-Thresholding Algorithm .

i1,βisign(βi)×max(0,|βi|λ)
Wok
sumber
Masih tidak bisa mendapatkan konvergensi yang lebih baik dengan mengadaptasi IRLS. : '(
Wok

Jawaban:

12

Masalah ini biasanya diselesaikan dengan fit oleh keturunan koordinat ( lihat di sini ). Metode ini lebih aman lebih efisien secara numerik, algoritmik lebih mudah diimplementasikan dan berlaku untuk berbagai model yang lebih umum (juga termasuk regresi Cox). Sebuah implementasi R tersedia dalam R paket glmnet . Kode adalah open source (sebagian di dan di C, sebagian di R), sehingga Anda dapat menggunakannya sebagai cetak biru.

pengguna603
sumber
@wok Dari catatan, paket scikit.learn juga menawarkan implementasi efisien dalam Python untuk hal semacam ini.
chl
Algoritma penurunan koordinat sangat menarik. Terima kasih. Masih memikirkannya.
Wok
5

Fungsi kerugian LASSO memiliki diskontinuitas pada nol di sepanjang setiap sumbu, sehingga IRLS akan mengalami masalah dengannya. Saya telah menemukan pendekatan tipe optimasi sekuensial minimal (SMO) yang sangat efektif, lihat misalnya

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

versi dengan perangkat lunak MATLAB adalah

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

perangkat lunak tersedia di sini:

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

Ide dasarnya adalah untuk mengoptimalkan koefisien satu per satu, dan menguji untuk melihat apakah Anda melewati diskontinuitas satu koefisien pada suatu waktu, yang semudah Anda melakukan optimasi skalar. Ini mungkin terdengar lambat, tetapi sebenarnya cukup efisien (walaupun saya berharap algoritma yang lebih baik telah dikembangkan sejak - mungkin oleh Keerthi atau Chih-Jen Lin yang keduanya ahli dalam hal semacam itu).

Dikran Marsupial
sumber
Terima kasih. Saya membaca ini dan memikirkannya. Namun, ini akan menjadi modifikasi besar dari algoritma saat ini.
Wok
4

Anda dapat memeriksa makalah ini: Regresi logistik teregulasi L1 yang efisien, yang merupakan algoritma berbasis IRLS untuk LASSO. Mengenai implementasi, tautan ini mungkin bermanfaat bagi Anda (http://ai.stanford.edu/~silee/softwares/irlslars.htm).


sumber
0

IRLS untuk masalah LASSO adalah sebagai berikut:

argminx12Axb22+λx1=argminx12Axb22+λxTWx

Di mana adalah matriks diagonal - . Ini berasal dari .WWi,i=1|xi|
x1=i|xi|=ixi2|xi|

Sekarang, yang di atas hanyalah Regulasi Tikhonov .
Namun, karena bergantung pada seseorang harus menyelesaikannya secara iteratif (Juga ini membatalkan 2 faktor dalam Regulasi Tikhonov, Sebagai turunan dari berkaitan dengan sambil memegang sebagai konstanta adalah yang sama dengan ):WxxTWxxxdiag(sign(x))Wx

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

Di mana .Wi,iK=1|xik|

Inisialisasi dapat dengan .W=I

Perhatikan ini tidak bekerja dengan baik untuk nilai dan Anda lebih baik menggunakan ADMM atau Koordinasikan Keturunan.λ

Royi
sumber