小编在这里为大家推荐,郑州达内IT培训17年专业IT培训机构,美国上市集团,开设IT培训班Java、python、大数据、linux、UI、会计等IT培训,泛IT培训和非IT培训共24大课程,0元试听,随到随学,推荐就业!接下来为您分享,Python机器学习:超参数调优
4. 贝叶斯优化(Bayesian optimization)
不管是GridSearchCV还是RandomSearchCV, 都是在调参者给定的有限范围内搜索全部或者部分参数的组合情况下模型的较佳表现;可想而知较优模型参数取决于先验的模型参数和有限范围,某些情况下并一定是较优的, 而且暴力搜索对于大的候选参数空间也是很耗时的。
我们换了角度来看待参数搜索的问题:我们的目的是选择一个较优的参数组合,使得训练的模型在给定的数据集上表现较好,所以可以理解成是一个较优化问题。
我们通常使用梯度下降的方式来迭代的计算较优值,但是梯度下降要求优化的函数是固定并且是可导的,如交叉熵loss等。对于参数搜索问题, 我们要在众多模型(不同的超参)中找一个效果较好的模型,判断是否较好是由模型决定的,而模型是一个黑盒子,不知道是什么结构,以及是否是凸函数,是没办法使用梯度下降方法。
这种情况下,贝叶斯优化是一种解决方案。贝叶斯优化把搜索的模型空间假设为高斯分布,利用高斯过程,按迭代的方式每次计算得到比当前较优参数期望提升的新的较优参数。
通用的算法如下:
·Input:f是模型, M是高斯拟合函数, X是参数, S是参数选择算法Acquisition Function
·初始化高斯分布拟合的数据集D,为(x,y), x是超参数,y是超参数的x的执行结果(如率等)
·迭代T次
·每次迭代,用D数据集拟合高斯分布函数
·根据拟合的函数,根据Acquisition Function(如Expected improvement算法),在参数空间选择一个比当前较优解更优的参数xi
·将参数xi代入模型f(训练一个模型),得出相应的yi(新模型的率等)
·(xi,yi)重新加入拟合数据集D,再一次迭代
由此可知,贝叶斯优化每次都利用上一次参数选择。而GridSearchCV和RandomSearchCV每一次搜索都是独立的。
到此,简单介绍了贝叶斯优化的理论知识。有很多第三方库实现了贝叶斯优化的实现,如 advisor,bayesian-optimization,Scikit-Optimize和GPyOpt等。本文以GPyOpt和bayesian-optimization为例子。
pip install gpyopt
pip install bayesian-optimization
pip install scikit-optimize
·gpyopt例子
import GPy
import GPyOpt
from GPyOpt.methods import BayesianOptimization
from sklearn.model_selection import train_test_split
from sklearn.model_selection import cross_val_score
from sklearn.datasets import load_iris
from xgboost import XGBRegressor
import numpy as np
iris = load_iris()
X = iris.data
y = iris.target
x_train, x_test, y_train, y_test = train_test_split(X,y,test_size = 0.3,random_state = 14)
温馨提示:为了不影响您的时间,来校区前或者遇到不明白的问题请先电话咨询,方便我校安排相关课程的专业老师为您解答,选取适合您的课程。以上是郑州达内教育的小编为您分享的关于Python机器学习:超参数调优的内容,希望可以为同学们提供帮助,更多Python资讯请持续关注郑州达内教育。(来自:51testing.com)