LASSOモデルに反復再加重最小二乗法(IRLS)を適用する方法は?


12

IRLSアルゴリズムを使用してロジスティック回帰をプログラムしました。適切な機能を自動的に選択するために、LASSOペナルティを適用したいと思います。各反復で、以下が解決されます。

(XTWX)δβ^=XT(yp)

してみましょうλ非負実数であること。The Elementsで提案されているように、インターセプトにペナルティを課していません統計学習。すでにゼロの係数についても同様です。そうでなければ、右側から項を引きます:

XT(yp)λ×sign(β^)

ただし、IRLSアルゴリズムの変更については不明です。それは正しい方法ですか?


編集:私はそれについて自信がありませんでしたが、ここで私がついに思いついた解決策の一つです。興味深いのは、このソリューションがLASSOについて私が今理解していることに対応していることです。実際、各反復には1つではなく2つのステップがあります。

  • 最初のステップは以前と同じです:アルゴリズムの反復を行います(上の勾配の式でように)、λ=0
  • 第二のステップは、新しいものである:我々は、(成分以外の各構成要素に軟判定閾値を適用ベクトルの切片に相当)β第一工程で得られました。これは、反復ソフトしきい値アルゴリズムと呼ばれます。β0β

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

それでもIRLSを適応させることで、より良い収束を得ることができませんでした。: '(
ウォック

回答:


12

この問題は通常、座標降下による適合によって解決されます(こちらを参照)。この方法は、数値的に安全で効率的であり、アルゴリズム的に実装が簡単で、より一般的なモデルの配列(Cox回帰も含む)に適用できます。R実装はRパッケージglmnetで利用可能です。コードはオープンソース(一部はCおよびR、一部は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/

基本的な考え方は、係数を一度に1つずつ最適化し、不連続性を一度に1係数ずつ超えるかどうかをテストすることです。これは、スカラー最適化を実行しているため簡単です。遅いように聞こえるかもしれませんが、実際にはかなり効率的です(より優れたアルゴリズムが開発されているのではないかと考えていますが、おそらく、そのようなことの両方の専門家であるKeerthiまたはChih-Jen Linによって開発されました)。


ありがとう。これを読んで考えています。ただし、これは現在のアルゴリズムの大きな変更になります。
ウォック

4

LASSOのIRLSベースのアルゴリズムである効率的なL1正規化ロジスティック回帰の論文を確認できます。実装に関しては、リンクが役立つ場合があります(http://ai.stanford.edu/~silee/softwares/irlslars.htm)。


0

LASSO問題のIRLSは次のとおりです。

argバツ12Aバツb22+λバツ1=argバツ12Aバツb22+λバツTWバツ

どこ W 対角行列です- W=1|バツ|
これはバツ1=|バツ|=バツ2|バツ|

Now, the above is just Tikhonov Regularization.
Yet, since W depends on x one must solve it iteratively (Also this cancels the 2 factor in Tikhonov Regularization, As the derivative of xTWx with regard to x 押しながら バツ 定数として diag符号バツ に等しい Wバツ):

バツk+1=ATA+λWk1ATb

どこ WK=1|バツk|

初期化は W=

次の値が大きい場合、これはうまく機能しないことに注意してください λ ADMMまたはCoordinate Descentを使用することをお勧めします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.