Numpy Statsmodels逻辑回归收敛问题

Numpy Statsmodels逻辑回归收敛问题,numpy,mathematical-optimization,numerical-methods,logistic-regression,statsmodels,Numpy,Mathematical Optimization,Numerical Methods,Logistic Regression,Statsmodels,我试图在一个大的设计矩阵(约200列)上运行statsmodels中的逻辑回归。这些特征包括许多交互、分类特征和半稀疏(70%)整数特征。虽然我的设计矩阵实际上并没有病态,但它似乎有点接近(根据numpy.linalg.matrix\u秩,它是满秩的tol=1e-3,而不是tol=1e-2)。因此,我很难让逻辑回归与statsmodels中的任何方法收敛。以下是我迄今为止所尝试的: method='newton':在1000次迭代后没有收敛;在尝试反转Hessian矩阵时引发了奇异矩阵Lina

我试图在一个大的设计矩阵(约200列)上运行statsmodels中的逻辑回归。这些特征包括许多交互、分类特征和半稀疏(70%)整数特征。虽然我的设计矩阵实际上并没有病态,但它似乎有点接近(根据
numpy.linalg.matrix\u秩
,它是满秩的
tol=1e-3
,而不是
tol=1e-2
)。因此,我很难让逻辑回归与statsmodels中的任何方法收敛。以下是我迄今为止所尝试的:

  • method='newton'
    :在1000次迭代后没有收敛;在尝试反转Hessian矩阵时引发了奇异矩阵
    LinalError

  • method='bfgs'
    :警告可能会丢失精度。声称在0次迭代后收敛,显然没有实际收敛

  • method='nm'
    :声称它已经收敛,但模型的伪R平方为负,许多系数仍然为零(并且与他们使用条件更好的子模型收敛到的值非常不同)。我试着将
    xtol
    调到
    1e-8
    ,但没有成功

  • fit_正则化(方法='l1')
    :报告的
    不等式约束不兼容(退出模式4)
    。然后,在尝试计算受限Hessian逆时,提出了一个奇异矩阵
    LinalError


你能在某处共享你的数据吗?唉,不行;我发现标准化数据有助于解决收敛问题。这是一个好的解决方案;我不能使用公式(因为将公式中的每一列居中是一件痛苦的事情),这会使系数更难解释,但至少会使其收敛。当我添加18级分类功能时,上述“解决方案”仍然失败。这有可能是由于实际的共线性,尽管我对此表示怀疑。明天我将尝试创建显示问题的示例(随机)数据。这并不完全令人惊讶。我们有一些代码在内部完成这项工作,但默认情况下还没有连接。