贝叶斯超参数寻优(附Python代码,scikit-optimize)

本文介绍了贝叶斯超参数优化在机器学习中的应用,特别是使用scikit-optimize库的BayesSearchCV和自定义贝叶斯优化方法。详细讲解了算法原理、搜索空间定义、目标函数以及acquisition函数的选择,并提供了SVM和XGBoost的代码示例。


声明:本文目的是让读者最快速上手超参数贝叶斯优化,所以不多涉及细节和数学内容

引言

超参数调参是机器学习中不可或缺的过程,但实际应用中,往往因为数据集过大,使得超参数调参变得非常困难。现在常用的超参数寻优方法有:1、Random search(随机搜索);2、Grid search(网格搜索);3、Bayesian optimization(贝叶斯优化)。Ramdom search时间开销小,但平均效果可能不佳。Grid search时间开销大,平均效果好。Bayesian optimizaiton 则是综合了两者的优点,综合效果可能会更好。

工程原理

想要快速的学习一个算法,我们可以从其工程原理入手,去了解算法是工作的原理是什么,是一个什么样的过程。

问题

我们可以将超参数搜索理解成如下图的一个过程:我们输入一组超参数,然后得到一个output(一般是performance),但是我们不知道这个超参数和output的函数关系。不难发现,这其实就是一个关于超参数和performance的黑箱子问题。

那怎么样能够提高寻找最佳超参数的效率呢?
答:如果我们能知道“超参数”和“output(perfromance)”的函数关系,那我们就有很多种方法求到output的最大值了。但问题在于,该如何找到这个函数呢?

算法实现

首先我们定义两个函数:

1、surrogate(代理/代替)函数:用于拟合超参数和performance关系的函数

2、acquisition函数:用于确定下一次迭代要尝试什么超参数

思路(如下图):

是一个迭代的过程

Step1:首先随机尝试一些点(超参数),得到他们的output
Step2:使用surrogate函数去拟合Step1的结果
Step3:根据acquisition函数确定下一次迭代要尝试的点
Step4:不断尝试,直到满足停止条件

image-20220921163545481

细节

1、如何选择surrogate函数?

答:一般使用gaussian process regression、Random Forest Regression,the choice in Hyperopt, the Tree Parzen Estimator (TPE) 进行拟合,得到的结果是一个带有置信区间的。

2、如何选择acquisition函数

答:一般使用expected improvement函数,还有许多函数(如下图)可以使用的,每个函数代表着不同的策略。但无论是哪个函数,都是基于上一步surrogate的结果

image-20220922185010583

更多数学内容参考:https://static.sigopt.com/b/20a144d208ef255d3b981ce419667ec25d8412e2/static/pdf/SigOpt_Bayesian_Optimization_Primer.pdf

scikit-optimize

我们可以利用scikit-optimize包实现贝叶斯超参数寻优。其中,提供有两个函数:1、BayesSearchCV;2、自己选择的surrogate函数

BayesSearchCV

这是一个基于CV实现的贝叶斯超参数寻优,是一个封装好的函数,调用非常方便。

主要步骤:

1、定义搜索空间

2、设置BayesSearchCV

3、拟合数据,查看结果

代码 (SVM)为例

定义搜索空间
# define search space
#svm
params = dict()
params['C'] = (1e-6, 100.0, 'log-uniform')
params['gamma'] = (1e-6, 100.0, 'log-uniform')
params['degree'] = (1,5)
params['kernel'] = ['linear', 'poly', 'rbf', 'sigmoid'
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值