Py之bayesian-optimization:bayesian-optimization的简介、安装、案例应用之详细攻略
目录
bayesian-optimization的简介
bayesian-optimization是一个使用高斯过程的全局优化的Python实现。这是一个基于贝叶斯推理和高斯过程的约束全局优化包,试图在尽可能少的迭代中找到一个未知函数的最大值。这种技术特别适合优化高成本函数,在勘探和开发之间的平衡非常重要的情况下。
贝叶斯优化通过构造函数的后验分布(高斯过程)来工作,该后验分布最好地描述了您想要优化的函数。随着观测数量的增加,后验分布得到改善,算法对参数空间中哪些区域值得探索,哪些不值得探索,变得更加确定,如下图所示。
当你一遍又一遍地迭代时,算法会考虑到它对目标函数的了解,来平衡它的探索和开发需求。在每一步中,高斯过程都拟合到已知样本(先前探索过的点),后验分布与探索策略(如UCB(上置信界)或EI(预期改进))相结合,用于确定应该探索的下一个点(见下图)。
这个过程的目的是尽量减少寻找接近最佳组合的参数组合所需的步骤数。为此,该方法使用了一个代理优化问题(找到获取函数的最大值),尽管这仍然是一个困难的问题,但更便宜(在计算意义上),并且可以使用常见的工具。因此,贝叶斯优化最适合于对要优化的函数进行采样是非常昂贵的工作的情况。
GitHub:https://github.com/fmfn/BayesianOptimization
bayesian-optimization的安装
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple bayesian-optimization
bayesian-optimization的案例应用
1、基础用法
BayesianOptimization对象可以开箱即用,不需要太多调优
from bayes_opt import BayesianOptimization
# Bounded region of parameter space
pbounds = {'x': (2, 4), 'y': (-3, 3)}
optimizer = BayesianOptimization(
f=black_box_function,
pbounds=pbounds,
random_state=1,
)
optimizer.maximize(
init_points=2,
n_iter=3,
)
print(optimizer.max)
for i, res in enumerate(optimizer.res):
print("Iteration {}: \n\t{}".format(i, res))