基于HyperOpt实现TPE优化
Hyperopt是目前最为通用的贝叶斯优化器之一,它集成了随机搜索、模拟退火和TPE(Tree-structured Parzen Estimator Approach)等多种优化算法。相较于Bayes_opt,Hyperopt更先进、更现代、维护更好,也是我们最常用来实现TPE方法的优化器。在实际应用中,基于高斯混合模型的TPE通常比基于高斯过程的贝叶斯优化更高效地获得更优结果,在AutoML领域也得到了广泛应用。
1 定义目标函数
Notes:
- 目标函数的输入必须是符合hyperopt规定的字典;
- Hyperopt只支持寻找𝑓(𝑥)的最小值,不支持寻找最大值。
def hyperopt_objective(params):
#定义评估器
#需要搜索的参数需要从输入的字典中索引出来
#不需要搜索的参数,可以是设置好的某个值
#在需要整数的参数前调整参数类型
reg = RFR(n_estimators = int(params["n_estimators"])
,max_depth = int(params["max_depth"])
,max_features = int(params["max_features"])
,min_impurity_decrease = params["min_impurity_decrease"]
,random_state=1412