【发布时间】:2019-06-07 05:47:21
【问题描述】:
我一直在 SAS 中运行一些大型逻辑回归模型,需要 4 个多小时才能收敛。但是最近我获得了对 Hadoop 集群的访问权限,并且可以使用 Python 更快地拟合相同的模型(大约需要 10-15 分钟)。
有问题的是,我的数据中有一些完整/准完整的数据点分离,导致无法收敛;尽管如此,我在 SAS 中使用 FIRTH 命令来生成可靠的参数估计,但是在 sklearn 或 statsmodels 中似乎没有 Python 的等效选项(我主要使用后者)。
有没有其他方法可以在 Python 中解决这个问题?
【问题讨论】:
-
请说明您的数据是什么以及您想要什么。代码转换或代码等价物很难回答。
-
除非您有先验信息表明您的问题域最好由逻辑回归模型表示,否则您可能会考虑另一种公式,即每个类都由高斯 blob p(x|c_k) 表示每个类 k = 0、1 等。然后通过贝叶斯规则,后验类概率只是 p(c_k|x)。当协方差相等时,相等 p(c_k|x) 的表面是平面,因为它们在逻辑回归中。更一般地,当协方差不相等时,相等 p(c_k|x) 的曲面是圆锥截面。如果只需要分类模型,值得考虑。
-
高斯斑点在密度上重叠的程度(即可用数据彼此之间的距离不太远,相对于每个斑点的直径),将有一个类的平滑梯度到另一个,所以即使数据点是分开的,你也不会有数值问题。除非,正如我所说,点的类别是广泛分开的。在这种情况下,您可以为每个类协方差的每个维度添加一个常量,以使它们重叠;这相当于一个正则化项。
标签: python machine-learning statistics logistic-regression statsmodels