【发布时间】:2019-05-09 22:56:41
【问题描述】:
让我们假设一个对数似然函数f(x, y, z) = prob(k0)* log((1-x)^(1-y)) + prob(k1)*log((1-x)^(1-z)) 并且存在约束使得 x、y 和 z 的可能值应位于 0 和 1 之间。
目标是最小化函数并在该最小值处返回 x、y 和 z 的值。
我尝试使用共轭梯度法 scipy 库。
params = sp.optimize.minimize(fun=f, x0=initial_params, args=(data,), method='CG',
jac=df,options={'gtol': 1e-05,'disp': True})
该方法在第一次迭代中失败。
Warning: Desired error not necessarily achieved due to precision loss.
是否需要提供 Hessian 矩阵,因为有两个以上的变量?
我也尝试过 Nelder-mead 方法,但需要很多时间。
params = sp.optimize.minimize(fun=f, x0=initial_params, method='Nelder-Mead', args=(data,), options={'disp': True})
此外,更重要的是,该方法不考虑变量的边界,并且在某些情况下返回未绑定的 x、y 和 z 的值。我
在 scipy 或任何其他考虑这种类型的有界优化的包中还有其他方法。请帮忙。
【问题讨论】:
标签: numpy optimization mathematical-optimization expectation-maximization