You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用scipy.optimize.minimize的trust-constr方法,如何获取最小值处的Hessian矩阵?

获取trust-constr方法下最小值点的Hessian矩阵及计算标准误差

步骤1:调用minimize并获取Hessian相关信息

使用scipy.optimize.minimize的trust-constr方法时,可通过两种方式获取Hessian矩阵或其逆矩阵:

方式一:提供精确Hessian函数

如果你能手动实现目标函数的Hessian计算,调用minimize时传入hess参数,优化完成后直接从结果对象中提取精确Hessian:

from scipy.optimize import minimize
import numpy as np

# 示例目标函数
def objective(x):
    return (x[0]-1)**2 + (x[1]-2.5)**2

# 目标函数的梯度
def jacobian(x):
    return np.array([2*(x[0]-1), 2*(x[1]-2.5)])

# 目标函数的Hessian矩阵
def hessian(x):
    return np.array([[2, 0], [0, 2]])

# 执行优化
res = minimize(objective, x0=np.array([0, 0]), method='trust-constr',
               jac=jacobian, hess=hessian)

# 提取最小值点处的Hessian矩阵
hess_matrix = res.hess

方式二:使用优化器的近似Hessian

若无法提供精确Hessian,trust-constr默认用拟牛顿法近似Hessian,此时可直接提取结果中的Hessian逆矩阵(计算标准误差通常只需逆矩阵):

res = minimize(objective, x0=np.array([0, 0]), method='trust-constr', jac=jacobian)

# 提取Hessian逆矩阵
hess_inv_matrix = res.hess_inv

步骤2:计算估计值的标准误差

在极大似然估计场景下,参数的协方差矩阵等于Hessian矩阵的逆(若目标函数为负对数似然,Hessian为正定矩阵)。标准误差是协方差矩阵对角线元素的平方根:

# 计算协方差矩阵
if hasattr(res, 'hess'):
    cov_matrix = np.linalg.inv(res.hess)
else:
    cov_matrix = res.hess_inv

# 计算标准误差
std_errors = np.sqrt(np.diag(cov_matrix))

注意事项

  • 确保优化收敛到全局最小值,否则Hessian矩阵可能非正定,求逆会报错。
  • 可通过options参数设置收敛阈值(如options={'gtol': 1e-6}),提升近似Hessian的精度。

内容的提问来源于stack exchange,提问作者JoeP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 03:13:12