Scikit-optimize: "Stop optimisation when no improvement"-callback

Created on 12 Oct 2017  路  3Comments  路  Source: scikit-optimize/scikit-optimize

Hi there,

I've been testing scikit-optimize for finding the global maximum of a relatively computationally expensive likelihood. As part of this I implemented a RepeatedMinStopper callback which stops the optimisation when there is no improvement in the minimum achieved function evaluation after n_best iterations.

I was just wondering if this would be considered broadly useful enough to be included as a builtin callback? If so then I'd be happy to submit it as a PR, but thought I would check here first...

(p.s. Thanks to the creators of this project. It's a great tool!)

Most helpful comment

I've created a PR (#538) as I guess seeing the code would probably make this discussion easier. 馃槃

All 3 comments

Hey! Did you see https://github.com/scikit-optimize/scikit-optimize/blob/8db972d56bee115a558dd9d67615403d360b031a/skopt/callbacks.py#L201 which (I think) does something similar? Maybe the best way forward is to extend the existing callback. Or if it is exactly the same then have a think how we can make it easier to find so future users don't have to make their own.

I did see that, although I think it does something a bit different to what I was looking for...

If I understand correctly, the DeltaYStopper stops the optimisation when there are n_best minimums all found within a fixed separation of each other. For my purposes (finding the initial starting locations for MCMC chains) this results in the optimisation running for much longer than required. The RepeatedMinStopper implementation instead halts the optimisation when there has been no improvement in the minimum value after a chosen successive number of calls.

Hopefully that makes sense, and my apologies if I've misunderstood the DeltaYStopper. :)

I've created a PR (#538) as I guess seeing the code would probably make this discussion easier. 馃槃

Was this page helpful?
0 / 5 - 0 ratings