贝叶斯优化 (BayesianOptimization)
1 问题提出
神经网咯是有许多超参数决定的,例如网络深度,学习率,正则等等。如何寻找最好的超参数组合,是一个老人靠经验,新人靠运气的任务。
穷举搜索 Grid Search 效率太低;随机搜索比穷举搜索好一点;目前比较好的解决方案是贝叶斯优化
1.1 贝叶斯优化的优点
贝叶斯调参采用高斯过程,考虑之前的参数信息,不断地更新先验;网格搜索未考虑之前的参数信息
贝叶斯调参迭代次数少,速度快;网格搜索速度慢,参数多时易导致维度爆炸
贝叶斯调参针对非凸问题依然稳健;网格搜索针对非凸问题易得到局部优最
2 详细算法
3 python实现
3.1 贝叶斯初步优化
这里本来想用kaggle的lgb贝叶斯优化,但是对新手不太友好,就使用这个博客中的例子
安装
pip install bayesian-optimization
准备工作(使用随机森林作为模型进行参数优化)
from sklearn.datasets import make_classification
from sklearn.ensemble import RandomForestClassifier
from sklearn.cross_validation import cross_val_score
from bayes_opt import BayesianOptimization
# 产生随机分类数据集,10个特征, 2个类别
x, y = make_classification(n_