如何将迭代加权最小二乘(IRLS)方法应用于LASSO模型?


12

我已经使用IRLS算法对逻辑回归进行了编程。我想对LASSO进行处罚,以便自动选择正确的功能。在每次迭代中,解决了以下问题:

(XTWX)δβ^=XT(yp)

令为非负实数。我没有按照《The Elements of》中的建议对拦截进行处罚统计学习。同为零的系数。否则,我从右边减去一个术语:λ

XT(yp)λ×sign(β^)

但是,我不确定IRLS算法的修改。这是正确的方法吗?


编辑:尽管我对此并不自信,但这是我最终想出的解决方案之一。有趣的是,此解决方案与我现在对LASSO的了解相对应。实际上,每次迭代有两个步骤,而不仅仅是一个步骤:

  • 第一步与之前相同:我们对该算法进行迭代(就像上面梯度的公式中),λ=0
  • 第二步是新步骤:我们对第一步获得的向量每个分量(分量,它对应于截距)应用一个软阈值。这称为迭代软阈值算法 ββ0β

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

通过调整IRLS仍然无法获得更好的收敛性。::(
炒锅

Answers:


12

通常通过坐标下降拟合来解决此问题(请参见此处)。该方法在数值上更安全,更有效,算法上更易于实现,并且适用于更通用的模型数组(还包括Cox回归)。Rglmnet中提供了R 实现。这些代码是开源的(部分在C中和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/

基本思想是一次优化一个系数,然后测试一下是否一次穿越不连续性一个系数,这很容易,因为您正在执行标量优化。听起来可能很慢,但实际上效率很高(尽管我希望此后已经开发出了更好的算法-可能是Keerthi或Chih-Jen Lin都是这方面的领先专家)。


谢谢。我正在阅读并正在考虑。但是,这将是当前算法的巨大修改。
炒锅

4

您可以查看以下文章:高效的L1正则逻辑回归,这是基于IRLS的LASSO算法。关于实现,该链接可能对您有用(http://ai.stanford.edu/~silee/softwares/irlslars.htm)。


0

LASSO问题的IRLS如下:

argminx12Axb22+λx1=argminx12Axb22+λxTWx

其中是对角矩阵-。 来自。WWi,i=1|xi|
x1=i|xi|=ixi2|xi|

现在,以上只是Tikhonov正则化
但是,由于取决于必须迭代求解(这也抵消了Tikhonov正则化中的2个因子,因为关于的导数,同时将保持不变是等于):WxxTWxxxdiag(sign(x))Wx

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

其中。Wi,iK=1|xik|

可以通过进行初始化。W=I

请注意,这对于较大的效果不佳,最好使用ADMM或“坐标下降”。λ

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.