optimizationbayesianhyperparametersscikit-optimize

what is the kappa variable (BayesianOptimization)


I read some posts and tutorials about BayesianOptimization and I never saw explanation about kappa variable.


Solution

  • The kappa parameter, along with xi, is used to control how much the Bayesian optimization acquisition function balances exploration and exploitation.

    Higher kappa values mean more exploration and less exploitation and vice versa for low values. Exploration pushes the search towards unexplored regions and exploitation focuses on results in the vicinity of the current best results by penalizing for higher variance values.

    It may be beneficial to begin with default kappa values at the start of optimization and then lower values if you reduce the search space.

    In scikit-optimize, kappa is only used if the acquisition function acq_func is set to “LCB” and xi is used when acq_func is “EI” or “PI” where LCB is Lower Confidence Bound, EI is Expected Improvement and PI is Probability of Improvement.

    Similarly for the BayesianOptimization package:

     acq: {'ucb', 'ei', 'poi'}
                The acquisition method used.
                    * 'ucb' stands for the Upper Confidence Bounds method
                    * 'ei' is the Expected Improvement method
                    * 'poi' is the Probability Of Improvement criterion.
    

    Mathematical details on acquisition functions

    Note, the BayesianOptimization package and scikit-optimize use different default kappa values: 2.576 and 1.96 respectively.

    There is a decent exploration vs exploitation example in the scikit-optimize docs.

    There is a similar BayesianOptimization exploration vs exploitation example notebook.

    FWIW I've used both packages and gotten OK results. I find the scikit-optimize plotting functions to be useful when fine tuning the parameter search space.