Python中的套索广义线性模型

时间:2015-05-17 19:34:52

标签: python statistics scikit-learn statsmodels cvxopt

我想在python中拟合具有负二项链接函数和L1正则化(lasso)的广义线性模型。 Matlab提供了很好的功能:

lassoglm(X,y, distr)

其中distr可以是泊松,二项式等。

我查看了statmodel和scikit-learn,但我没有找到任何可以使用的函数或示例,可以指导我找到解决方案。 在matlab中,似乎他们最小化了这个:

min (1/N * Deviance(β0,β) + λ * sum(abs(β)) )

其中,偏差取决于链接功能。

有没有办法用scikit或statsmodels轻松实现这个,或者我应该去cvxopt?

1 个答案:

答案 0 :(得分:0)

对于包含NegativeBinomial的离散模型,

statsmodels已经有一段fit_regularized

http://statsmodels.sourceforge.net/devel/generated/statsmodels.discrete.discrete_model.NegativeBinomial.fit_regularized.html

没有docstring(我刚刚看到)。泊松的文档字符串具有相同的信息http://statsmodels.sourceforge.net/devel/generated/statsmodels.discrete.discrete_model.Poisson.fit_regularized.html 并且文档或单元测试中应该有一些示例。

它使用scipy slsqp的内部算法,或者如果安装了cvxopt,则可选。与最陡的下降或坐标下降方法相比,这仅适用于特征/解释变量的数量不是太大的情况。

GLM的弹性网坐标下降处于正在进行的拉动请求中,很可能在statsmodels 0.8中可用。