Capture parameters from scikit-optimize for hyperparameter optimization
See original GitHub issueThe Scikit-optimize BayesSearchCV
class likely has internal functions that help it determine new parameters given scores on a set of older parameters. It would be useful to either introduce Dask to scikit-optimize or else reuse this logic and implement our own BayesSearchCV
. This could be used with standard fit
style algorithms or with Incremental
if we have a nice early-stopping criterion.
This came out of conversation with @ogrisel
Issue Analytics
- State:
- Created 5 years ago
- Reactions:4
- Comments:17 (6 by maintainers)
Top Results From Across the Web
Scikit-Optimize for Hyperparameter Tuning in Machine Learning
Manually Tune Algorithm Hyperparameters. The Scikit-Optimize library can be used to tune the hyperparameters of a machine learning model. We ...
Read more >Hyperparameter tuning with scikit-optimize - Packt Subscription
Hyperparameter tuning with scikit-optimize. In machine learning, a hyperparameter is a parameter whose value is set before the training process begins.
Read more >Tuning a scikit-learn estimator with skopt
To tune the hyper-parameters of our model we need to define a model, decide which parameters to optimize, and define the objective function...
Read more >Optimizing Hyperparameters for Random Forest Algorithms in ...
Optimizing hyperparameters for machine learning models is a key step in making accurate predictions. Hyperparameters define characteristics ...
Read more >Bayesian Hyperparameter Optimization in Python - neptune.ai
Scikit Optimize : Bayesian Hyperparameter Optimization in Python · Evaluation criteria · Ease of use and API · Options, methods, and (hyper)parameters.
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
So I tried things today with joblib and the following example:
and the dashboard shows tasks like the following:
Each green rectangle is a call to
fmin_l_bfgs_batch
, which takes around 50ms. We’re seeing a lot of dead space in between tasks, likely meaning thatskopt
is doing some non-trivial work in between sending out batches.After running this experiment I have some questions:
Is scikit-optimize simple enough that just using joblib is the right way to go? Or are there things that we would want to do with a more expressive interface
In particular, I might suggest trying to solve this problem with the concurrent.futures interface. You would submit lots of tasks (presumably a bit more than you had cores), then as they completed you would update your next best guess and submit that one out to run with the others. This is maybe a similar problem to what is running today, you just have more tasks in flight.
Is there a problem with a larger cost so that we can see how much the overhead hurts in a realistic setting?
What is the cause of the overhead here?
Actually I profiled a bit. It’s spending a bit of time in scipy.optimize, coming from the
skopt/optimizer/optimizer.py::Optimizer._tell
method.So to elaborate on your comment, the following is happening: