优化¶
statsmodels 使用三种类型的算法来估计模型的参数。
在实际应用中,某些模型允许选择可选的scipy优化器。特定的scipy优化器可能是默认的或是一个选项。根据模型和数据的不同,选择合适的scipy优化器可以避免局部最小值,减少模型拟合时间,或减少内存使用。
statsmodels 支持以下优化器及其相关关键字参数:
newton- 牛顿-拉弗森迭代法。虽然不是直接来自scipy,但我们认为它是一个优化器,因为它只需要分数和海森矩阵。- tolfloat
参数收敛可接受的相对误差。
nm- scipy的fmin_nm- xtolfloat
参数收敛可接受的相对误差
- ftolfloat
对数似然(params)中的相对误差可接受以达到收敛
- maxfunint
最大函数评估次数。
bfgs- Broyden–Fletcher–Goldfarb–Shanno优化,scipy的fmin_bfgs。- gtolfloat
当梯度的范数小于 gtol 时停止。
- normfloat
范数的顺序(np.inf 是最大值,-np.inf 是最小值)
- epsilon
如果 fprime 是近似的,使用此值作为步长。仅在 LikelihoodModel.score 为 None 时相关。
lbfgs- 一种更节省内存(有限内存)的bfgs实现。Scipy的fmin_l_bfgs_b。- mint
用于定义有限内存矩阵的变尺度校正的最大数量。(有限内存BFGS方法不存储完整的Hessian矩阵,而是使用此数量的项来近似它。)
- pgtolfloat
迭代将在
max{|proj g_i | i = 1, ..., n} <= pgtol时停止,其中 pg_i 是投影梯度的第 i 个分量。- factrfloat
迭代在以下条件满足时停止:
(f^k - f^{k+1})/max{|f^k|,|f^{k+1}|,1} <= factr * eps, 其中 eps 是机器精度,由代码自动生成。factr 的典型值为:1e12 表示低精度;1e7 表示中等精度;10.0 表示极高精度。请参阅注释以了解与 ftol 的关系,ftol 是通过 scipy.optimize.minimize 接口(而不是 factr)暴露给 L-BFGS-B 的。- maxfunint
最大迭代次数。
- epsilonfloat
当approx_grad为True时使用的步长,用于数值计算梯度
- approx_gradbool
是否数值近似梯度(在这种情况下,func仅返回函数值)。
cg- 共轭梯度优化。Scipy的fmin_cg。- gtolfloat
当梯度的范数小于 gtol 时停止。
- normfloat
范数的顺序(np.inf 是最大值,-np.inf 是最小值)
- epsilonfloat
如果 fprime 是近似的,使用此值作为步长。可以是标量或向量。仅在 Likelihoodmodel.score 为 None 时相关。
ncg- 牛顿共轭梯度。Scipy的fmin_ncg。- fhess_pcallable f’(x, *args)
计算函数 f 的 Hessian 矩阵与任意向量 p 的乘积的函数。仅当 LikelihoodModel.hessian 为 None 时才应提供。
- avextolfloat
当最小化器中的平均相对误差低于此值时停止。
- epsilonfloat or ndarray
如果 fhess 被近似,使用此值作为步长。 仅在 Likelihoodmodel.hessian 为 None 时相关。
powell- 鲍威尔方法。Scipy的fmin_powell。- xtolfloat
线搜索误差容限
- ftolfloat
对数似然函数(params)的相对误差,可接受以达到收敛。
- maxfunint
最大函数评估次数。
- start_direcndarray
初始方向设置。
basinhopping- 盆地跳跃。这是scipy的basinhopping工具的一部分。- niterinteger
盆地跳跃迭代的次数。
- niter_successinteger
如果全局最小候选者在这么多迭代中保持不变,则停止运行。
- Tfloat
用于接受或拒绝标准的“温度”参数。较高的“温度”意味着将接受函数值的较大跳跃。为了获得最佳结果,T 应与局部最小值之间的分离(在函数值上)相当。
- stepsizefloat
用于随机位移的初始步长。
- intervalinteger
更新步长的时间间隔。
- minimizerdict
传递给最小化器的额外关键字参数 scipy.optimize.minimize(),例如‘method’ - 最小化方法(例如‘L-BFGS-B’),或‘tol’ - 终止容差。其他参数从fit的显式参数映射: - args <- fargs - jac <- score - hess <- hess
minimize- 允许使用任何scipy优化器。- min_methodstr, optional
要使用的最小化方法的名称。 可以直接传递任何特定于方法的参数。 有关方法及其参数的列表,请参阅 scipy.optimize.minimize的文档。 如果未指定方法,则使用BFGS。
模型类¶
通常情况下,终端用户不需要直接调用这些函数和类。然而,我们提供这个类是因为不同的优化技术有独特的关键字参数,这些参数可能对用户有用。
|
使用牛顿-拉夫森算法进行拟合。 |
|
使用Broyden-Fletcher-Goldfarb-Shannon算法进行拟合。 |
|
使用有限内存的Broyden-Fletcher-Goldfarb-Shannon算法进行拟合。 |
|
使用Nelder-Mead算法进行拟合。 |
|
使用共轭梯度算法进行拟合。 |
|
使用牛顿共轭梯度算法进行拟合。 |
|
使用鲍威尔共轭方向算法进行拟合。 |
|
使用盆地跳跃算法进行拟合。 |