Python:statsmodels中logistic回归模型的l2Penalty?

2024-04-19 14:10:38 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有一种方法可以通过一个参数或其他东西来对statsmodel中的logistic回归模型施加l2惩罚?我刚在文档中找到了l1惩罚,但没有发现l2惩罚。在


Tags: 方法文档模型l1参数logisticl2statsmodel
2条回答

如果你仔细看一下^{}的文档,你会发现当前版本的statsmodels允许弹性网络正则化,这基本上只是L1和L2惩罚的凸组合(尽管更健壮的实现使用一些后处理来减少幼稚实现的不良行为,详见维基百科“弹性网”:

ElasticNet2

如果查看文档中fit_regularized的参数:

OLS.fit_regularized(method='elastic_net', alpha=0.0, L1_wt=1.0, start_params=None, profile_scale=False, refit=False, **kwargs)

你会发现L1_wt只是第一个方程中的λu1。因此,要获得您要查找的L2惩罚,只需在调用函数时将L1_wt=0作为参数传递。例如:

model = sm.OLS(y, X)
results = model.fit_regularized(method='elastic_net', alpha=1.0, L1_wt=0.0)
print(results.summary())

应该给你一个二级惩罚回归预测目标y,来自输入X。在

希望有帮助!在

最后三点意见:

1)statsmodels当前只实现elastic_net作为method参数的一个选项。所以这给了你L1和L2以及它们的任何线性组合,但没有其他东西(至少对于OLS而言)

2)L1惩罚回归=LASSO(最小绝对收缩和选择算子)

3)L2惩罚回归=岭回归、Tikhonov-Miller方法、Phillips-Twomey方法、约束线性反演方法和线性正则化方法。在

中的模型statsmodels.离散与Logit一样,Poisson和MNLogit目前只有L1惩罚。然而,GLM的弹性网和其他一些模型最近被合并到statsmodels master中。在

具有二元响应的族二项GLM与离散逻辑尽管实现方式不同。请参阅我在Is ridge binomial regression available in Python?中对L2惩罚的回答

尚未被合并到stats模型中的是L2惩罚化,它是一个结构化惩罚矩阵,因为它是作为粗糙度惩罚在广义加性模型,GAM和样条拟合。在

相关问题 更多 >