Re:Intro to Multicriteria Optimization
by Zephyr314 on Wednesday August 17, 2016 @12:07PM
(#12305709)
The methods in scipy.optimize are great if your function is serial, cheap, deterministic, and convex. Many ML models and real world problems don't fit into this context though.
We have a Jupyter notebook showing how SigOpt compares to several scipy.optimize methods as well as standard methods like grid/random on a simple non-convex problem here [1]. These results only get more striking as the dimensionality increases.
[1]: https://github.com/sigopt/sigopt-examples/blob/master/ipytho...
Many of these scipy methods can cope with concave, noisy functions. There's a bit of skill/alchemy with selecting starting values and tolerance parameters. Interesting to see that your approach has superior performance in that case, but in many cases these free tools with no need for an api would be sufficient.
scipy.optimize can only do single-criterion optimization (scalar-valued objective function instead of vector-valued objective functions).
Re:Intro to Multicriteria Optimization
by radarsat1 on Wednesday August 17, 2016 @10:00AM
(#12304719)
> The tradeoffs between these two criteria can either be managed by some supervisory decision maker (the driver of the car in this example) or by merging the multiple criteria into some single criteria and phrasing the problem as a standard optimization problem.
You always have to reduce the problem to a scalar if you want a single answer.
You might want to discover the full Pareto frontier to gain some insights on the structure of the trade-off.
I think the best methods to explore the Pareto frontier are based on the concepts of evolutionary computation like NSGA-II and SPEA-2:
https://en.wikipedia.org/wiki/Multi-objective_optimization#A...
Eg if I have a complicated function revenue([A,B,C,D])
I can define obj([A,B,C,D]) = -1* revenue([A,B,C,D])
and use:
http://docs.scipy.org/doc/scipy/reference/tutorial/optimize....