如何评估Optim Julia的参数估计结果



我试图估计几个ODE系统的参数,以适应相同的数据集。当我用估计的参数绘制一些模型的变量时,曲线与真实数据集非常吻合。然而,这只是一种视觉欣赏。我想用Julia 的Optim包中的优化结果来证明最佳候选模型(ODE系统(的选择是合理的

为了估计模型的参数,我使用了以下代码:

prob  = ODEProblem(model,u_0,tspan,params);  
cost_functionEP = build_loss_objective(prob,Tsit5(),L2Loss(sub_t_norm,sub_norm_data),prob_generator = problemEP, maxiters=1000000,verbose = false, save_idxs = [1,4,12] )
result_estimEP  = Optim.optimize(cost_functionEP,lower,upper, params, Fminbox(BFGS()))

优化的输出,result_estimEP为:

* Status: success
* Candidate solution
Final objective value:     2.830272e+05
* Found with
Algorithm:     Fminbox with BFGS
* Convergence measures
|x - x'|               = 2.17e-19 ≰ 0.0e+00
|x - x'|/|x'|          = 1.30e-21 ≰ 0.0e+00
|f(x) - f(x')|         = 0.00e+00 ≤ 0.0e+00
|f(x) - f(x')|/|f(x')| = 0.00e+00 ≤ 0.0e+00
|g(x)|                 = 2.12e+07 ≰ 1.0e-08
* Work counters
Seconds run:   26  (vs limit Inf)
Iterations:    6
f(x) calls:    10034
∇f(x) calls:   10034

我阅读了Optim的在线文档,以了解输出的每一行都意味着什么,但没有太多信息(仅用于单变量估计(。能请比我更熟悉优化问题的人指出这些值的含义吗?

一些可能有帮助的评论:

* Status: success # the optimization was successful
* Candidate solution
Final objective value:     2.830272e+05 # the loss function value at the end
* Found with
Algorithm:     Fminbox with BFGS # the algorithm used
* Convergence measures
|x - x'|               = 2.17e-19 ≰ 0.0e+00 # the conditions 
|x - x'|/|x'|          = 1.30e-21 ≰ 0.0e+00 # that were satisfied
|f(x) - f(x')|         = 0.00e+00 ≤ 0.0e+00 # or not. These are
|f(x) - f(x')|/|f(x')| = 0.00e+00 ≤ 0.0e+00 # odd though, see comment.
|g(x)|                 = 2.12e+07 ≰ 1.0e-08
* Work counters
Seconds run:   26  (vs limit Inf)
Iterations:    6
f(x) calls:    10034     # number of loss function calls
∇f(x) calls:   10034     # number of gradient of loss function calls

对我来说,你满足的唯一条件基本上是f(x) == f(x'),这似乎很奇怪,这表明将x更改为x'不会影响损失函数,尽管梯度g(x)不为零。也许丢失功能有问题?也可能这是典型的BFGS算法?我不确定。然而,令人放心的是,梯度并不是,远远不能满足条件(小于1.0e-8(,所以也许你已经有了一个很好的最小化器。

最新更新