[R] BFGS versus L-BFGS-B

Ben Bolker bbolker at gmail.com
Fri Feb 25 15:01:36 CET 2011


Brian Tsai <btsai00 <at> gmail.com> writes:

> 
> Hi all,
> 
> I'm trying to figure out the effective differences between BFGS and L-BFGS-B
> are, besides the obvious that L-BFGS-B should be using a lot less memory,
> and the user can provide box constraints.
> 
> 1) Why would you ever want to use BFGS, if L-BFGS-B does the same thing but
> use less memory?

  L-BFGS-B is a bit more finicky: for example, it does not allow
non-finite (infinite or NA) return values from the objective function,
while BFGS does (although neither does during the initial function evaluation).
I don't know offhand of other differences, although speed may differ.

> 2) If i'm optimizing with respect to a variable x that must be non-negative,
> a common approach is to do a change of variables x = exp(y), and optimize
> unconstrained with respect to y.  Is optimization using box constraints on
> x, likely to produce as good a result as unconstrained optimization on y?

  It depends.  If the optimal solution is on the boundary (i.e. x=0)
then optimization on the transformed variable (I think you mean y=exp(x)
above?) will work very badly. On the other hand, if the solution is in 
the interior then transforming sometimes works even better -- for example,
the goodness-of-fit surface may be closer to quadratic (which sometimes
has advantages in terms of inference) with the transformed than the
untransformed parameter.

  Ben Bolker



More information about the R-help mailing list