-
Notifications
You must be signed in to change notification settings - Fork 554
ENH Add initial sampling generation from latin hypercube, sobol, hammersly and halton #835
ENH Add initial sampling generation from latin hypercube, sobol, hammersly and halton #835
Conversation
…ensions * Add unittests for IntegerEncoder
|
Hello @holgern! Thanks for updating this PR. We checked the lines you've touched for PEP 8 issues, and found:
Comment last updated at 2020-02-19 10:47:18 UTC |
* example added * New samples package * Latin hypercube, Sobol, Hammersly and Halton samples were added
|
Are there benchmarks or comparisons somewhere that show the benefits of using these other samplers for the initial points? |
|
Benchmark on hart6 with 25 initial points and 50 call in total. gp_minimize was used. I will remove optimized LHS using Enhanced Stochastic Evolutionary Alg., as it perforce not very well and is slow. |
* optimized LHS using Enhanced Stochastic Evolutionary Alg. are removed as it is slow and performs not so well * LHS default is changed to maximin * Optimizer setting simplified and init_point_gen_kwargs has beed added * Hammersly and halton has now a min_skip and max_skip parameter similar to sobol
|
Thanks for making the comparisons! Nice work. One thing I'd consider while adding (or not) things to scikit-optimize is that it is better for users to offer less choice in options that cover (say) 80% of what users want to do. To cater to experts wanting to do expert things (for which they are by definition a minority) we have tried to make skopt a toolkit that people can use to build their own optimisation machine by plugging the components that make the So I'd always prioritise making things extendable or replaceable and keeping the amount of code and options built-in to scikit-optimize low. This means less maintenance effort, high quality of what is here, and encourages others to make packages with tools that can be used in skopt. Someone else maintaining code is a good thing because it removes burden from the skopt maintainers and keeps us honest in terms of offering a good API for extending things. Another thing I wondered: for MC integration Sobol and friends are great because they cover the space more uniformly than random sampling. However an equally good thing (for MC integration) would be a precomputed grid of points. Except in MC integration you don't know how many points you will sample so you can't make a precomputed/equally spaced grid. However in skopt we decide up front how many initial points to try before switching to 'bayesian optimisation" mode. So maybe another interesting thing to add would be a sampler that doesn't pick points at random but instead uniformly distributes points on a grid across all dimensions. |
inverse transformation is performed inside the InitialpointGenerators Adapt examples and doc
Improve unit tests
Fix normalize in lhs generation
|
Thanks for your reply, I accidentally merged this PR to early as a mistake.
|


See also #433