Logistic回归的正则化方法


42

使用诸如Ridge,Lasso,ElasticNet之类的方法进行正则化对于线性回归非常普遍。我想了解以下内容:这些方法是否适用于逻辑回归?如果是这样,则将它们用于逻辑回归的方式是否存在任何差异?如果这些方法不适用,如何对逻辑回归进行正则化?


您是否正在查看特定的数据集,因此需要考虑使数据易于处理以进行计算,例如选择,缩放和偏移数据,以使初始计算趋于成功。或者,这是对方法和原因的更一般的了解(没有针对0进行计算的特定数据集?)
Philip Oakley,

1
这是对正则化的方式和原因的更一般的了解。我碰到的关于正则化方法(Ridge,Lasso,Elasticnet等)的入门文本特别提到了线性回归示例。没有一个人特别提到物流,因此提出了这个问题。
TAK

1
Logistic回归是使用非身份链接功能的GLM的一种形式,几乎所有情况都适用。
Firebug

1
您是否偶然发现了吴伟达(Andrew Ng)关于该主题的视频
安东尼帕雷拉达,2016年

Ridge,套索和弹性净回归是流行的选项,但它们不是唯一的正则化选项。例如,对矩阵进行平滑处理会对带有大二阶导数的函数产生不利影响,因此正则化参数使您可以“拨号”回归,这是过度拟合和欠拟合数据之间的很好折衷。与脊/套索/弹性净回归一样,这些也可以用于逻辑回归。
恢复莫妮卡

Answers:


49

是的,正则化可用于所有线性方法,包括回归和分类。我想向您展示,回归和分类之间没有太大的区别:唯一的区别是损失函数。

具体来说,线性方法主要包括三个部分:损失函数,正则化,算法。损失函数加正则化是优化形式问题中的目标函数,而算法是求解问题的方法(目标函数是凸函数,在本文中不再讨论)。

在损失函数设置中,我们在回归案例和分类案例中都会有不同的损失。例如,最小二乘和最小绝对偏差损失可用于回归。他们的数学表示为和。(函数在两个标量上定义,是地面真实值,而是预测值。)L(y^,y)=(y^y)2L(y^,y)=|y^y|L()yy^

另一方面,逻辑损失和铰链损失可用于分类。它们的数学表示形式为和。(在这里,是的地面真相标签,并且被预测为“分数”。的定义有点不寻常,请参见注释部分。)L(y^,y)=log(1+exp(y^y))L(y^,y)=(1y^y)+y{1,1}y^y^

在正则化设置中,您提到了L1和L2正则化,还有其他形式,本文将不再讨论。

因此,在高层次上,线性方法是

minimizew   x,yL(wx,y)+λh(w)

如果将“损失”功能从回归设置替换为逻辑损失,则可以通过正则化获得逻辑回归。

例如,在岭回归中,优化问题是

minimizew   x,y(wxy)2+λww

如果用逻辑损失替换损失函数,问题将变为

minimizew   x,ylog(1+exp(wxy))+λww

在这里,您可以使用L2正则化进行逻辑回归。


这就是玩具合成二进制数据集中的外观。左图是线性模型(决策边界)的数据。右图是目标函数轮廓(x和y轴代表2个参数的值。)。数据集是从两个高斯生成的,我们拟合了逻辑Logistic回归模型而没有截距,因此在正确的子图中只能看到两个参数。

蓝线是没有正则化的逻辑回归,黑线是有L2正则化的逻辑回归。右图中的蓝色和黑色点是目标函数的最佳参数。

在此实验中,我们设置了一个大,因此您可以看到两个系数都接近于。另外,从轮廓上我们可以看到正则项占主导,整个函数就像一个二次碗。λ0

在此处输入图片说明

这是L1正则化的另一个示例。

在此处输入图片说明

请注意,本实验的目的是试图显示正则化如何在logistic回归中工作,但并不认为正则化模型会更好。


以下是有关L1和L2正则化及其如何影响逻辑损失目标的一些动画。在每个框架中,标题均建议正则化类型和,其图为目标函数(逻辑损失+正则化)轮廓。我们在每帧中增加正则化参数,最优解将逐帧缩小到。λλ0

在此处输入图片说明 在此处输入图片说明


一些符号注释。和是列向量,是标量。因此,线性模型。如果要包括拦截项,可以将作为列追加到数据中。wxyy^=f(x)=wx1

在回归设置中,是实数,而在分类设置中。yy{1,1}

请注意,分类设置中的定义有点奇怪。由于大多数人使用来表示的预测值。在我们的例子中,是一个实数,而不是。我们使用定义是因为我们可以简化逻辑损失和铰链损失的表示法。y^=wxy^yy^=wx{1,1}y^

还要注意,在某些其他符号系统,逻辑损失函数的形式会有所不同。y{0,1}

该代码可以在我的其他答案中找到。

是否有逻辑上的解释说明为什么逻辑回归不适用于完美分离的情况?以及为什么添加正则化将解决此问题?


4
好的答案,但是在解释中我看不到任何东西(除符号外),表明您需要限制为线性方法。您是否可以得到相同的答案,但是用f代替用代替?人们当然将正则化用于非线性方法,例如神经网络。wTxf(x)
DavidR

感谢您提供@ hxd1011的答案,您能解释一下轮廓图中的黑色实线表示什么吗?更准确地说,我知道(如您所解释的)x和y轴显示了我们使用的2个参数。但是,实线及其数目如8000、10000、12000呢?谢谢!
Jespar


12

最初基于高阶渐近性考虑用于逻辑回归的一种收缩/正则化方法是Firth逻辑回归 ...在所有这些关于套索的讨论以及未开始的话题之前,有一段时间,尽管在脊回归回归并逐渐消退之后, 1970年代。对似然增加了一个惩罚项,即 其中

l(β)=l(β)+12ln|i(β)|
i(β)=1nipi(1pi)xixi是每个观测值归一化的信息矩阵。Firth证明此校正具有贝叶斯解释,因为它对应于Jeffreys缩小为零之前的情况。它产生的兴奋是由于它有助于解决完美分离的问题:说出数据集名义上产生无限的ML估计,并在仍然容易受到这个问题,我相信。{(yi,xi)={(1,1),(0,0)}glmR

1
是的,您可以为此使用R软件包logistf或brglm!也许值得一提...
Tom Wenseleers 17-4-5的

很优雅,但是优化很慢,不是吗?在渐变中,您将得到的逆数,需要在每次迭代中对其进行重新计算...i(β)
appletree

这确实非常缓慢,确实如此,@ appletree
StasK

(+1)我以前没有听说过费斯的更正。我不希望引用的论文中的隐含方法会为GLM解决方案增加很多时间吗?(您无需将矩阵求逆,只需计算杠杆即可。如果通过迭代加权最小二乘法求解GLM,则这些只是Q因子行范数。然后只需使用将杠杆添加到数据和曝光中即可。,而不是在杰弗里斯调整)。h/21/2
GeoMatt22

6

是的,它适用于逻辑回归。在R中,使用glmnet,您只需指定适当的族,即逻辑回归的“二项式”。您可以根据数据和要解决的问题指定其他几项(毒药,多项式等)。


仅使用glmnet的缺点是该方法不会给您带来重要的意义。如果您对此感兴趣,那么R包logistf或brglm将是一个更好的选择……
Tom Wenseleers 17-4-5

@TomWenseleers也有用于引导glmnet以获得p值的方法。但是,这有点复杂,因为“常规”引导程序不适用于套索系数
godspeed '17

感谢您让我知道这一点,我也看到其他人也提到了这一点,例如:stats.stackexchange.com/questions/34859/…,但是似乎找不到在某些R包中实现的任何标准。您会碰巧有任何指针吗?还是关于这方面的好的主要文献?自举的缺点还在于,对于大型数据集,通常会非常慢……
Tom Wenseleers

您是指诸如在R包hdi,cran.r-project.org / web / packages / hdi / index.html中实现的方法吗?
Tom Wenseleers
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.