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:
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:
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 dalam rumus untuk gradien di atas),
- langkah kedua adalah yang baru: kami menerapkan soft-thresholding untuk setiap komponen (kecuali untuk komponen , yang sesuai dengan intersep) dari vektor diperoleh pada langkah pertama. Ini disebut Iterative Soft-Thresholding Algorithm .
Jawaban:
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.
sumber
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).
sumber
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
IRLS untuk masalah LASSO adalah sebagai berikut:
Di mana adalah matriks diagonal - . Ini berasal dari .W Wi,i=1|xi|
∥x∥1=∑i|xi|=∑ix2i|xi|
Sekarang, yang di atas hanyalah Regulasi Tikhonov .W x xTWx x x diag(sign(x)) Wx
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 ):
Di mana .WKi,i=1∣∣xki∣∣
Inisialisasi dapat dengan .W=I
Perhatikan ini tidak bekerja dengan baik untuk nilai dan Anda lebih baik menggunakan ADMM atau Koordinasikan Keturunan.λ
sumber