贝叶斯优化工作流程

什么是贝叶斯优化?

优化,在其最一般的形式,是定位一个点的过程,该点使一个实值函数最小目标函数。贝叶斯优化就是这样一个过程的名称。贝叶斯优化内部保持目标函数的高斯过程模型,并使用目标函数评价对模型进行训练。贝叶斯优化的一个创新是an的使用获取函数,该算法使用它来确定下一个要评估的点。采集函数可以平衡目标函数建模较低的采样点和未建模好的区域的采样。有关详细信息,请参见贝叶斯优化算法

贝叶斯优化是统计和机器学习工具箱™的一部分,因为它非常适合优化超参数的分类和回归算法。甲超参数是一个分类器或回归函数,的内部参数,诸如支持向量机的框约束,或一个强大的分类合奏的学习率。万博1manbetx这些参数可以强烈地影响分类或回归的表现,但它通常是困难或耗时对其进行优化。看到贝叶斯优化特性

通常,优化超参数意味着尽量减少分类器或回归的交叉验证损失。

方法来执行优化贝叶斯

您可以执行贝叶斯优化的几种方式:

  • fitcauto-传递预测和响应数据到fitcauto函数来跨越选择分类类型和超参数值的优化。不像其他的方法,使用fitcauto不要求你指定优化前的单一模式;选型是优化过程的一部分。优化最小化交叉验证的损失,这是使用多建模TreeBagger用于回归的集合,而不是在其他方法中使用的高斯过程。看到贝叶斯优化

  • 分类学习者和回归学习者应用程序-选择Optimizable模型在机器学习应用程序和自动调整其超参数值使用贝叶斯优化。优化最小化模型损失基于选择的验证选项。这种方法比使用fit函数有更少的调优选项,但允许您直接在应用程序中执行贝叶斯优化。看到超参数优化分类中的应用学习超参数优化的回归学习应用

  • 拟合函数 - 加入OptimizeHyperparameters名称-值对在许多拟合函数中应用贝叶斯自动优化。优化最小化交叉验证的损失。这种方法提供的调优选项比使用更少bayesopt,但使您能够更轻松地进行贝叶斯优化。看到贝叶斯优化使用一个拟合函数

  • bayesopt-发挥最大的控制您的优化呼叫bayesopt直接。这种方法要求您编写一个不需要表示交叉验证损失的目标函数。看到使用bayesopt进行Bayesian优化

贝叶斯优化使用一个拟合函数

要通过贝叶斯优化将交叉验证响应中的错误最小化,请遵循以下步骤。

  1. 在其中选择您的分类或回归求解器fitcdiscr,fitcecoc,fitcensemble,fitckernel,fitcknn,fitclinear,fitcnb,fitcsvm,fitctree,fitrensemble,fitrgp,fitrkernel,fitrlinear,fitrsvm,或fitrtree

  2. 确定要优化的超参数,并将它们传入OptimizeHyperparameters名称-值对。对于每个fit函数,您可以从一组超参数中进行选择。看到适合函数的合格超参数,或使用超参数功能,或查阅fit功能参考页。

    可以传递参数名的单元格数组。你也可以设置“汽车”随着OptimizeHyperparameters值,它选择一组典型的超参数进行优化,或者“所有”优化所有可用参数。

  3. 对于集合拟合函数fitcecoc,fitcensemble,fitrensemble,也包括了系统中弱学习者的参数OptimizeHyperparameters单元阵列。

  4. 选项的可选选项结构HyperparameterOptimizationOptions名称-值对。看到适合函数的超参数优化选项

  5. 使用适当的名称-值对调用fit函数。

有关示例,请参见利用贝叶斯优化方法优化SVM分类器的拟合优化增强回归集成。另外,每个fit函数引用页面都包含一个贝叶斯优化示例。

贝叶斯优化使用bayesopt

执行贝叶斯优化使用bayesopt,请遵循以下步骤。

  1. 准备好你的变量。看到贝叶斯优化的变量

  2. 创建你的目标函数。看到贝叶斯优化目标函数。如果有必要,还可以创建约束。看到贝叶斯优化中的约束。若要在目标函数中包含额外参数,请参阅参数化功能(MATLAB)。

  3. 决定选项,意思是bayseopt名称,值对。您不需要传递任何选项到bayesopt但你通常会这样做,尤其是当你试图改进一个解决方案时。

  4. 调用bayesopt

  5. 检查解决方案。您可以决定通过继续优化的简历或重新启动优化,通常使用修改过的选项。

例如,请参阅使用bayesopt优化交叉验证的SVM分类器

贝叶斯优化特性

贝叶斯优化算法最适合于这些问题类型。

特性 细节
低维

贝叶斯优化最适合在低维数,通常为10个或更少的。虽然贝叶斯优化可以解决一些问题,几个十几个变量,故不推荐用于尺寸大于50以上。

昂贵的目标

贝叶斯优化是为评估速度慢的目标函数设计的。它有相当大的开销,通常每个迭代有几秒钟的时间。

低精度

贝叶斯优化不一定给出非常准确的结果。如果您有一个确定性的目标函数,您有时可以通过从bayesopt解决方案。

全球解决方案

贝叶斯优化是一个全球性的技术。不像许多其他的算法,搜索你没有开始从不同初始点的算法,一个全球性的解决方案。

Hyperparameters

贝叶斯优化非常适合于优化超参数另一个函数。超参数是控制函数行为的参数。例如,fitcsvm函数将支持向量机模型与数据进行拟合。它有hyperparametersBoxConstraintKernelScale“rbf”KernelFunction。有关应用于超参数的贝叶斯优化示例,请参阅使用bayesopt优化交叉验证的SVM分类器

参数可用于拟合函数

适合函数的超参数优化选项

当使用fit函数进行优化时,在HyperparameterOptimizationOptions名称-值对。以结构的形式给出值。结构中的所有字段都是可选的。

字段名称 默认的
优化器
  • “bayesopt”-使用贝叶斯优化。在内部,这个设置调用bayesopt

  • “gridsearch”- 在使用网格搜索NumGridDivisions每个维度值。

  • “randomsearch”-随机搜索MaxObjectiveEvaluations点。

“gridsearch”按随机顺序搜索,使用均匀抽样而不从网格中进行替换。优化之后,可以使用命令以网格顺序获得表sortrows (Mdl.HyperparameterOptimizationResults)

“bayesopt”
AcquisitionFunctionName

  • “预计-改善每秒加”

  • “expected-improvement”

  • “预计-改善,加上”

  • “expected-improvement-per-second”

  • “低信心结合”

  • “probability-of-improvement”

名称包括的获取函数每秒不要产生可重复的结果,因为优化取决于目标函数的运行时间。名称包括的获取函数+当它们过度开发某个区域时,调整它们的行为。有关更多细节,请参见获取函数类型

“预计-改善每秒加”
MaxObjectiveEvaluations 目标函数评价的最大次数。 30.“bayesopt”“randomsearch”,以及整个网格“gridsearch”
MAXTIME

时间限制,指定为正实。时间限制以秒为单位,以抽搐toc。运行时间可能超过MAXTIME因为MAXTIME不会中断函数的计算。

天道酬勤
NumGridDivisions “gridsearch”,即每个维度中值的数量。该值可以是一个正整数向量,给出每个维度的值的数量,也可以是一个适用于所有维度的标量。对于分类变量,该字段被忽略。 10
ShowPlots 逻辑值,指示是否显示图。如果真正的,该字段根据迭代次数绘制最佳目标函数值。如果有一个或两个优化参数,如果优化器“bayesopt”,然后ShowPlots并根据参数绘制目标函数的模型。 真正的
SaveIntermediateResults 逻辑值,指示何时是否保存结果优化器“bayesopt”。如果真正的,该字段将重写一个名为“BayesoptResults”在每一个迭代。变量是aBayesianOptimization对象。
详细的

显示到命令行。

  • 0-无重复显示

  • 1——迭代显示

  • 2-迭代显示额外的信息

有关详细信息,请参阅bayesopt详细的名称-值对的论点。

1
UseParallel 逻辑值指示是否并行运行贝叶斯优化,这需要并行计算工具箱™。由于并行定时的nonreproducibility,平行贝叶斯优化不一定得到重复的结果。有关详细信息,请参见平行的贝叶斯优化
重新分区

逻辑值,指示是否在每次迭代时重新划分交叉验证。如果,优化器使用单个分区进行优化。

真正的通常给出了最强劲的结果,因为此设置需要分割的噪声考虑在内。然而,对于良好的效果,真正的需要至少两倍的函数计算。

使用以下三个字段名时,不要超过其中一个。
CVPartition 一个cvpartition对象,如通过创建cvpartition “Kfold”, 5如果没有指定任何交叉验证字段
坚持 一个范围内的标量(0,1)表示抵抗率。
Kfold 一个大于1的整数。

另请参阅

|

相关的话题