贝叶斯优化工作流程
什么是贝叶斯优化?
优化,在其最一般的形式,是定位一个点的过程,使一个实值函数称为目标函数.贝叶斯优化就是这样一个过程的名称。贝叶斯优化内部维护一个目标函数的高斯过程模型,并使用目标函数的评估来训练模型。贝叶斯优化的一个创新是使用获取函数,算法用它来确定下一个要求值的点。该采集函数可以在目标函数建模程度较低的点进行采样,并对尚未建模的区域进行探测。有关详细信息,请参见贝叶斯优化算法.
贝叶斯优化是统计和机器学习工具箱™的一部分,因为它非常适合进行优化hyperparameters分类和回归算法。超参数是分类器或回归函数的内部参数,如支持向量机的盒约束,或鲁棒分类集合的学习率。这些参数会强烈影响分类器或回归器的性能,但优化它们通常是困难或耗时的。看到贝叶斯优化特性.
通常,优化超参数意味着尽量减少分类器或回归的交叉验证损失。
执行贝叶斯优化的方法
你可以通过以下几种方式进行贝叶斯优化:
fitcauto
而且fitrauto
-将预测器和响应数据传递给fitcauto
或fitrauto
函数在选择的模型类型和超参数值之间进行优化。不像其他方法,使用fitcauto
或fitrauto
不要求您在优化之前指定单个模型;模型选择是优化过程的一部分。该优化最小化了交叉验证损失,这是用一个多TreeBagger
模型fitcauto
和一个多RegressionGP
模型fitrauto
,而不是像其他方法那样使用单一的高斯过程回归模型。看到贝叶斯优化为fitcauto
而且贝叶斯优化为fitrauto
.分类学习者和回归学习者应用程序-选择Optimizable在机器学习应用程序中的模型,并使用贝叶斯优化自动调优其超参数值。基于选定的验证选项,优化最小化了模型损失。与使用fit函数相比,这种方法的调优选项更少,但允许您直接在应用程序中执行贝叶斯优化。看到分类学习者应用程序中的超参数优化而且回归学习应用中的超参数优化.
适合功能-包括
OptimizeHyperparameters
在许多拟合函数的名称-值参数中自动应用贝叶斯优化。该优化最小化了交叉验证损失。这种方法提供的调优选项比使用少bayesopt
,但可以使您更容易地执行贝叶斯优化。看到利用拟合函数的贝叶斯优化.bayesopt
-通过调用来最大限度地控制优化bayesopt
直接。这种方法要求您编写一个目标函数,它不必表示交叉验证损失。看到使用贝叶斯优化.
利用拟合函数的贝叶斯优化
要通过贝叶斯优化最小化交叉验证响应中的错误,请遵循以下步骤。
的拟合函数中选择您的分类或回归求解器
OptimizeHyperparameters
名称-值参数。决定要优化的超参数,并将它们传递到
OptimizeHyperparameters
名称-值参数。对于每个拟合函数,您可以从一组超参数中进行选择。看到适合函数的合格超参数,或使用hyperparameters
函数,或参考适合函数参考页。您可以传递一个参数名称的单元格数组。您还可以设置
“汽车”
随着OptimizeHyperparameters
值,该值选择一组典型的超参数进行优化,或者“所有”
优化所有可用参数。对于整体拟合函数
fitcecoc
,fitcensemble
,fitrensemble
,也包含了弱学习者的参数OptimizeHyperparameters
单元阵列。对象的选项结构(可选)
HyperparameterOptimizationOptions
名称-值参数。看到适合函数的超参数优化选项.使用适当的名称-值参数调用fit函数。
有关示例,请参见使用贝叶斯优化优化分类器拟合而且优化一个增强回归集合.此外,每个拟合函数参考页面都包含一个贝叶斯优化示例。
贝叶斯优化使用bayesopt
来执行贝叶斯优化bayesopt
,遵循以下步骤。
示例请参见使用bayesopt优化交叉验证的分类器.
贝叶斯优化特性
贝叶斯优化算法最适合这些问题类型。
特征 | 细节 |
---|---|
低维 | 贝叶斯优化在维数较低的情况下效果最好,通常为10或更少。虽然贝叶斯优化可以解决一些只有几十个变量的问题,但不建议在维数超过50的情况下使用贝叶斯优化。 |
昂贵的目标 | 贝叶斯优化是为评估速度较慢的目标函数设计的。它有相当大的开销,每次迭代通常需要几秒钟。 |
低精度 | 贝叶斯优化不一定能给出非常准确的结果。如果你有一个确定的目标函数,你有时可以通过从。开始一个标准优化算法来提高精确度 |
全球解决方案 | 贝叶斯优化是一种全局技术。与许多其他算法不同,要搜索全局解,您不必从不同的初始点开始算法。 |
Hyperparameters | 贝叶斯优化非常适合于优化hyperparameters另一个函数。超参数是控制函数行为的参数。例如, |
适合函数的参数
适合函数的合格超参数
适合函数的超参数优化选项
在使用适合度函数进行优化时,可以在HyperparameterOptimizationOptions
名称-值参数。以结构形式给出值。结构中的所有字段都是可选的。
字段名 | 值 | 默认的 |
---|---|---|
优化器 |
|
“bayesopt” |
AcquisitionFunctionName |
获取函数,其名称包括 |
“expected-improvement-per-second-plus” |
MaxObjectiveEvaluations |
目标函数评价的最大次数。 | 30. 为“bayesopt” 而且“randomsearch” ,和整个网格“gridsearch” |
MaxTime |
时间限制,指定为正实标量。时间限制以秒为单位,用 |
正 |
NumGridDivisions |
为“gridsearch” ,表示每个维度的值的个数。该值可以是一个给出每个维度值数量的正整数向量,也可以是一个适用于所有维度的标量。对于类别变量,该字段将被忽略。 |
10 |
ShowPlots |
指示是否显示图形的逻辑值。如果真正的 ,该字段根据迭代次数绘制最佳观测目标函数值。如果你使用贝叶斯优化(优化器 是“bayesopt” ),则该字段也绘制出最佳估计的目标函数值。最佳观测目标函数值和最佳估计目标函数值对应于BestSoFar(观察) 而且BestSoFar (estim)。 列的迭代显示,分别。您可以在属性中找到这些值ObjectiveMinimumTrace 而且EstimatedObjectiveMinimumTrace 的Mdl。HyperparameterOptimizationResults .如果问题包含一个或两个优化参数的贝叶斯优化,那么ShowPlots 并根据参数绘制了目标函数模型。 |
真正的 |
SaveIntermediateResults |
指示何时是否保存结果的逻辑值优化器 是“bayesopt” .如果真正的 ,该字段将覆盖名为“BayesoptResults” 在每一个迭代。变量是aBayesianOptimization 对象。 |
假 |
详细的 |
在命令行显示:
详细信息请参见 |
1 |
UseParallel |
指示是否并行运行贝叶斯优化的逻辑值,这需要并行计算工具箱™。由于并行时序的不可再现性,并行贝叶斯优化不一定产生可再现的结果。有关详细信息,请参见平行的贝叶斯优化. | 假 |
重新分区 |
指示是否在每次迭代时重新划分交叉验证的逻辑值。如果这个字段是 设置 |
假 |
只使用以下三个选项中的一个。 | ||
CVPartition |
一个cvpartition 对象,如由cvpartition |
“Kfold”,5 如果不指定交叉验证字段 |
坚持 |
范围内的标量(0,1) 表示抵制分数 |
|
Kfold |
大于1的整数 |