Tekrar Ağırlıklı En Küçük Kareler (IRLS) Yöntemi LASSO Modeline Nasıl Uygulanır?


12

IRLS algoritmasını kullanarak bir lojistik regresyon programladım . Doğru özellikleri otomatik olarak seçmek için bir LASSO cezası uygulamak istiyorum . Her yinelemede aşağıdakiler çözülür:

(XTWX)δβ^=XT(yp)

Let negatif olmayan reel sayı. The Elements bölümünde önerildiği gibi kesmeyi cezalandırmıyorum . İstatistiksel Öğrenme . Zaten sıfır katsayıları için aynen. Aksi takdirde, sağ taraftan bir terim çıkarırım:λ

XT(yp)λ×sign(β^)

Ancak, IRLS algoritmasının değiştirilmesinden emin değilim. Bunu yapmanın doğru yolu var mı?


Düzenleme: Ben bu konuda emin olmasa da, ben nihayet geldi çözümler burada. İlginç olan, bu çözümün şu anda LASSO hakkında anladığım şeye karşılık gelmesidir. Her bir yinelemede sadece bir yerine iki adım vardır :

  • ilk adım öncekiyle aynıdır: algoritmanın yinelemesini yapıyoruz ( yukarıdaki gradyan için formülde gibi),λ=0
  • ikinci adım yenidir: ilk aşamada elde edilen vector her bileşenine ( karşılık gelen bileşeni hariç) yumuşak eşikleme . Buna İteratif Yumuşak Eşikleme Algoritması denir . ββ0β

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

Yine de IRLS'yi adapte ederek daha iyi bir yakınlaşma sağlayamadı. : '(
Wok

Yanıtlar:


12

Bu problem tipik olarak koordinat inişine uyarak çözülür ( buraya bakınız ). Bu yöntem hem sayısal olarak daha güvenli, hem de algoritmik olarak uygulanması daha kolay ve daha genel bir model dizisine (Cox regresyonu da dahil) uygulanabilir. R paketi glmnet'inde bir R uygulaması mevcuttur . Kodlar açık kaynak kodludur (kısmen C ve kısmen C, kısmen R), böylece bunları taslak olarak kullanabilirsiniz.


@wok Dikkat çekici bir şekilde, scikit.learn paketi de bu tür şeyler için Python'da etkili bir uygulama sunar.
chl

Koordinat iniş algoritması ilginçtir. Teşekkürler. Hala düşünüyor.
Wok

5

LASSO kayıp fonksiyonunun her eksen boyunca sıfırda bir süreksizliği vardır, bu nedenle IRLS'nin problemleri olacaktır. Sıralı bir minimum optimizasyon (SMO) tipi yaklaşımın çok etkili olduğunu gördüm, bkz.

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

MATLAB yazılımlı bir sürüm

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

yazılımı burada bulabilirsiniz:

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

Temel fikir, katsayıları birer birer optimize etmek ve süreksizliği her seferinde bir katsayı geçip geçmediğinizi görmek için sınamaktır; Yavaş gelebilir, ancak aslında oldukça etkilidir (daha iyi algoritmaların geliştirildiğini beklememe rağmen - muhtemelen her ikisi de bu konuda lider uzman olan Keerthi veya Chih-Jen Lin tarafından).


Teşekkürler. Bunu okuyorum ve düşünüyorum. Bununla birlikte, bu mevcut algoritmanın büyük bir değişikliği olacaktır.
Wok

4

Makaleyi kontrol edebilirsiniz: LASSO için IRLS tabanlı bir algoritma olan verimli L1-düzenli lojistik regresyonu. Uygulama ile ilgili olarak, bağlantı sizin için yararlı olabilir (http://ai.stanford.edu/~silee/softwares/irlslars.htm).


0

LASSO sorunu için IRLS aşağıdaki gibidir:

argminx12Axb22+λx1=argminx12Axb22+λxTWx

Burada diyagonal matris - . Bu .WWi,i=1|xi|
x1=i|xi|=ixi2|xi|

Şimdi, yukarıdaki sadece Tikhonov Düzenlemesi .
Çünkü Yine, bağlıdır bir iteratif çözmek gerekir (aynı zamanda, bu türev gibi, Pyatnitskiy düzenlenmesine 2 faktör iptal ilişkin tutarken sabit gibidir bu değerine eşit ):WxxTWxxxdiag(sign(x))Wx

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

Nerede .Wi,iK=1|xik|

Başlatma .W=I

Bunun büyük değerleri için iyi çalışmadığına dikkat edin ve ADMM veya Koordinat İniş'i daha iyi kullanın.λ

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.