当 scipy.optimize.minimize 可能用于相同的事情时,为什么 scipy.optimize.least_squares 存在?

Ast*_*One 9 python mathematical-optimization scipy model-fitting

我试图理解为什么scipy.optimize.least_squares存在于scipy. 该函数可用于执行模型拟合。然而,人们可以用来scipy.optimize.minimize做同样的事情。唯一的区别是,scipy.optimize.least_squares卡方是在内部计算的,而如果想使用scipy.optimize.minimize,他/她将必须在用户想要最小化的函数内部手动计算卡方。另外,scipy.optimize.least_squares不能将其视为包装器,scipy.optimize.minimize因为它支持的三种方法 ( trfdogboxlm) 根本不支持scipy.optimize.minimize

所以我的问题是:

  • scipy.optimize.least_squares当使用 可以达到相同的结果时为什么还要存在scipy.optimize.minimize
  • 为什么scipy.optimize.minimize不支持trfdogbox、 和lm方法?

谢谢。

小智 3

scipy.optimize.least_squares 中的算法利用最小化问题的最小二乘结构来实现更好的收敛(或使用导数的低阶)。

类似于高斯-牛顿算法和牛顿法之间的区别,请参阅维基百科这个问题

特别是,高斯-牛顿法仅使用雅可比矩阵(一阶导数),而牛顿法还使用海森矩阵(二阶导数),计算成本较高。