Scipy Minimize中BFGS方法的方差缩放因子确定问题
Scipy BFGS优化中逆Hessian矩阵的缩放疑问
Scipy官方BFGS示例代码
from scipy.optimize import minimize, rosen, rosen_der x0 = [1.3, 0.7, 0.8, 1.9, 1.2] res = minimize(rosen, x0, method='BFGS', jac=rosen_der,options={'gtol': 1e-6, 'disp': True})
逆Hessian矩阵与方差的计算
在BFGS方法的误差分析中,一般把计算得到的逆Hessian矩阵的对角线元素当作方差,实现代码如下:
import numpy as np solution = res.x variance = np.diag(res.inv_hess)
关于方差是否需要缩放的困惑
从泰勒级数展开的角度理解:
f(x) = f(a) + f'(a)(x-a) + 0.5*f''(a)*(x-a)^2 # 极小值处一阶导数为0,此处f''(a)为Hessian矩阵,因此方差(x-a)^2可推导为 variance = (f(x) - f(a)) * H^-1
真实解和极小化解之间的差异,理论上需要对逆Hessian矩阵进行缩放,但核心问题是缩放因子究竟是什么? 是优化参数里设定的容差gtol吗?
我注意到其他拟合工具中,逆Hessian矩阵(或协方差矩阵)是用均方误差来缩放的,这让我对BFGS方法中Hessian矩阵应该使用的缩放因子感到困惑。
内容的提问来源于stack exchange,提问作者samman
相关产品推荐
相关产品推荐

