sklearn LogisticRegression 中的“newton-cg”和“newton-cholesky”求解器有什么区别?

问题描述 投票:0回答:0

我对不同来源的“newton-cg”和“newton-cholesky”解释感到困惑。 根据sklearn文档

“newton-cholesky”求解器是一个精确的牛顿求解器,它计算 Hessian 矩阵并求解生成的线性系统。

在阅读关于 LogisticRegression 求解器的精彩 answer 后,我认为这正是“newton-cg”所做的。

Source 关于 sklearn 文档提供的不同方法的比较也没有真正澄清事情。

那么它们有什么区别呢?

编辑 1

我知道 GPT 答案暂时被禁止,但我想我找到了答案。 根据 GPT4:

“newton-cg”求解器使用 Newton-CG 共轭梯度算法 最小化目标函数。该算法使用梯度 和 Hessian 矩阵(目标的二阶导数 函数)迭代地找到函数的最小值。黑森州 使用梯度向量的外积来近似矩阵。 该求解器适用于中小型数据集。

另一方面,“newton-cholesky”求解器使用 Newton-CG 具有 Hessian 矩阵的 Cholesky 分解的算法。这 对于大型数据集,求解器比“newton-cg”更有效,因为它 需要更少的内存和计算资源。然而,它可能不会 收敛一些数据集。

综上所述,“newton-cg”求解器可能更准确,但速度较慢 对于大型数据集,内存效率较低,而 “newton-cholesky”求解器速度更快,内存效率更高,但可能 对于某些数据集不收敛。这些求解器之间的选择 取决于数据集的大小和复杂性以及权衡 在精度和计算效率之间。

对我来说,这是有道理的,因为它与所有提供的来源都非常吻合。 sklearn 文档中的歧义主要出现在“计算”部分——他们没有明确说明 Hessian 是如何在“newton-cholesky”方法中计算的,以及它是如何在“newton-cg”方法中完成的。

scikit-learn logistic-regression newtons-method
© www.soinside.com 2019 - 2024. All rights reserved.