fminunc initial point is local minimum, but fminsearch returns reasonable estaimtes
4 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hi,
I have a dataset for individual i and time t. I try to find 3 parameters w,a,b to minimize an objective function. Given the parameter values and data, the objective function first compute an optimal decision
, then compute the sum of squared difference between
and the observed choice X.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/739759/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/739759/image.png)
That is, I try to do:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/739769/image.png)
When I use fminsearch, it does return reasonable estiamtes around different starting values. The final points also have lower objective values.
However, fminunc always say "Initial point is a local minimum" and the Hessian is all 0s. I've tried (1) other starting values, (2) change the optimality tolerance to 10e-12, but the first-order optimality is 0 at starting values.
Since fminsearch does go to other points with lower objectives, does this mean my objective function isn't actually flat but fminunc just doesn't work well?
I do want to use fminunc to get the Hessian matrix... How can I debug/fix this?
0 commentaires
Réponse acceptée
Matt J
le 15 Sep 2021
Modifié(e) : Matt J
le 15 Sep 2021
It could happen if your objective function is piece-wise flat (and hence non-differentiable). fminsearch is a derivative-free solver, so it is less vulnerable to this, but a piece-wise flat objective is best avoided.
t=linspace(-5,5,1e6);
fun=@(x) interp1(t,t.^2,x,'nearest'); %piece-wise constant
tmin=fminunc(fun,3.5)
tmin=fminsearch(fun,3.5)
However, now let's make the objective smooth:
fun=@(x) interp1(t,t.^2,x,'cubic'); %smoothed version of previous objective
tmin=fminunc(fun,3.5)
tmin=fminsearch(fun,3.5)
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Solver Outputs and Iterative Display dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!