没有正则化的sklearn逻辑回归

23

1
是的,您可以使用l2惩罚并将C参数设置为大值。不惩罚有多大好处?如果您在完全可分离的数据集上这样做,则权重将发散。 - eickenberg
1
如果您想要最大似然解决方案而不使用正则化,这将是非常有益的,例如,如果您拥有大量数据并且不担心过度拟合。 - Hanan Shteingart
1
有没有经过充分测试的Python包可以进行常规逻辑回归?我觉得这就是@HananShteingart正在寻找的。 - Dylan Daniels
2
我相信statsmodels API可以进行无正则化的逻辑回归 - 请参见https://stats.stackexchange.com/questions/203740/logistic-regression-scikit-learn-vs-statsmodels - elz
3个回答

9
选择尽可能大的数字。在正则化中,成本函数包括一个正则化表达式,并牢记sklearn正则化中的C参数是正则化强度的倒数。
在这种情况下,C等于1 / lambda,但必须满足C> 0的条件。
因此,当C趋近于无穷大时,lambda趋近于0。当发生这种情况时,成本函数变成标准误差函数,因为正则化表达式在实际上变为0。
更新:在sklearn版本0.21及更高版本中,您可以通过传递penalty ='none'来禁用正则化。请查看文档here

如果我想使用普通逻辑回归,C需要多大? - haneulkim
@haneulkim 在旧版本的sklearn中,您无法完全禁用正则化,因此我们会将C设置为一些大参数,如1e9. 但我相信自从0.21版本以来,您可以传递 penalty='none' - Yu Chen

6

请放心设置C值,可尽量调大。同时,请使用l2而不是l1,因为在这种实现方式下,l1速度非常缓慢。


1
我尝试了C=1e42,为什么l1l2对于每个特征仍然给出不同的系数?我有大约100个特征,虽然它们从l1l2中得到的系数高度线性相关,但仍然远非相同。我认为在没有正则化的情况下,这两个应该返回完全相同的系数。你有任何想法是什么导致了这种差异吗? - zyxue

-2

我有同样的问题,并尝试了这个答案以及其他答案:

如果将C设置为一个较大的值对您没有用,还可以设置penalty='l1'


3
不会禁用正则化,它使用套索正则化。 - Sean Owen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接