在python中的正则化(逻辑?)回归模型中建模概率

时间:2015-11-21 16:05:23

标签: scikit-learn regression linear-regression logistic-regression statsmodels

我想将回归模型拟合到概率。我知道线性回归通常用于此目的,但我有几个概率在0.0和1.0附近,并且想要拟合一个回归模型,其中输出被约束在0.0和1.0之间。我希望能够为模型指定正则化规范和强度,并且理想情况下在python中执行此操作(但R实现也会有所帮助)。我发现的所有逻辑回归包似乎只适用于分类,而这是一个回归问题(尽管我想使用logit link函数)。我使用scikits-学习我的分类和回归需求,所以如果这个回归模型可以用scikits-learn实现,那将是太棒了(在我看来这是不可能的),但我对任何事都感到高兴python和/或R中的解决方案。

1 个答案:

答案 0 :(得分:4)

这个问题有两个问题,即将估计和分数或比例数据作为因变量进行处罚。我分别为每个人工作,但从未尝试过这种组合。

<强>罚性

Statsmodels已经使L1正则化Logit和Poisson等其他离散模型有一段时间了。最近几个月,我们付出了很多努力来支持更多的惩罚,但它还没有在statsmodels中。线性和广义线性模型(GLM)的弹性网络处于拉取请求中,很快就会合并。根据仍然需要工作的拉动请求,将在接下来的几个月内对GAM和样条或SCAD惩罚的L2惩罚进行更多惩罚GLM。

Logit的当前L1 fit_regularized的两个示例在这里 Difference in SGD classifier results and statsmodels results for logistic with l1https://github.com/statsmodels/statsmodels/blob/master/statsmodels/examples/l1_demo/short_demo.py
注意,惩罚权重α可以是一个带零的向量,如果它们不应该被惩罚,那么就像常数一样。

http://www.statsmodels.org/dev/generated/statsmodels.discrete.discrete_model.Logit.fit_regularized.html

分数模型

statsmodels中的二进制和二项式模型并不强制因变量是二元的,只要因变量在[0,1]区间内就可以工作。

可以使用Logit作为准最大似然估计来估计分数或比例。如果正确指定平均函数,逻辑,累积正态或类似的链接函数,则估计是一致的,但我们应该使用稳健的夹心协方差来进行适当的推理。可以通过拟合关键字cov_type='HC0'在statsmodel中获得稳健的标准错误。 最佳文档适用于Stata http://www.stata.com/manuals14/rfracreg.pdf及其中的参考文献。我在Stata有fracreg之前经历了那些引用,并且它至少与Logit和Probit一起工作,这是我的测试用例。 (我现在不能找到我的脚本或测试用例。)

推论的坏消息是,fit_regularized尚未添加强大的协方差矩阵,因此无法直接获得正确的三明治协方差。标准协方差矩阵和参数估计的标准误差是在假设模型(即似然函数)被正确指定的情况下得出的,如果数据是分数而不是二进制则不是这种情况。

除了使用二元模型的准最大似然之外,还可以使用为(0,1)中的分数数据定义的似然性。一个流行的模型是Beta回归,它也在等待statsmodel的拉取请求,预计将在未来几个月内合并。