Python 中的 Lasso 广义线性模型

Lasso Generalized linear model in Python

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

lassoglm(X,y, distr)

其中 distr 可以是泊松分布、二项分布等

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

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

偏差取决于 link 函数。

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

statsmodels 有一段时间了 fit_regularized 离散模型,包括 NegativeBinomial。

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

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

它使用带有 scipy slsqp 或可选(如果已安装)cvxopt 的内部算法。与最速下降法或坐标下降法相比,只适用于features/explanatory变量个数不太大的情况。

用于 GLM 的弹性网坐标下降正在进行中,并且很可能在 statsmodels 0.8 中可用。