主要内容

贝叶斯优化工作流程

什么是贝叶斯优化?

最优化,在它最一般的形式中,是定位一个使实值函数最小的点的过程目标函数. 贝叶斯优化就是这样一个过程的名字。贝叶斯优化在内部维护目标函数的高斯过程模型,并使用目标函数评估来训练模型。贝叶斯优化的一个创新是使用采集功能,算法使用它来确定要计算的下一个点。采集函数可以在建模目标函数较低的点上平衡采样,并探索尚未建模良好的区域。有关详细信息,请参见贝叶斯优化算法

贝叶斯优化是统计学和机器学习工具箱™的一部分,因为它非常适合于优化hyperparameters分类和回归算法。超参数是分类器或回归函数的内部参数,如支持向量机的框约束或鲁棒分类集成的学习率。金宝app这些参数会强烈地影响分类器或回归器的性能,但通常很难或耗时地优化它们。看到贝叶斯优化特性

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

执行贝叶斯优化的方法

您可以通过以下几种方式执行贝叶斯优化:

  • fitcauto菲特罗托-将预测器和响应数据传递给fitcauto菲特罗托函数来优化模型类型和超参数值的选择。不同于其他方法,使用fitcauto菲特罗托不要求您在优化之前指定单个模型;模型选择是优化过程的一部分。优化最大限度地减少交叉验证的损失,这是使用多树人模型fitcauto和一个多-RegressionGP模型菲特罗托,而不是其他方法中使用的单一高斯过程回归模型。看见贝叶斯优化对于fitcauto贝叶斯优化对于菲特罗托

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

  • 适合功能-包括OptimizeHyperparameters在许多拟合函数中采用名称-值对来自动应用贝叶斯优化。这种优化最大限度地减少交叉验证的损失。这种方法提供的调优选项比使用方法少贝耶斯波特,但使您能够更轻松地执行贝叶斯优化。看到使用拟合函数的贝叶斯优化

  • 贝耶斯波特-通过调用贝耶斯波特直接。这种方法要求您编写一个目标函数,该函数不必表示交叉验证损失。看到基于bayesopt的贝叶斯优化

使用拟合函数的贝叶斯优化

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

  1. 选择您的分类或回归求解器fitcdiscr,fitcecoc,fitcensemble,fitckernel,fitcknn,fitclinear,fitcnb,fitcsvm,菲茨特里,fitrensemble,fitrgp,fitrkernel,菲特利恩,fitrsvm,或fitrtree

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

    可以传递参数名称的单元格数组。您还可以设置“自动”作为OptimizeHyperparameters值,它选择要优化的一组典型超参数,或“全部”优化所有可用参数。

  3. 对于集合拟合函数fitcecoc,fitcensemble,fitrensemble,还包括在OptimizeHyperparameters单元阵列。

  4. 可以选择,为超参数优化选项名称-值对。看到拟合函数的超参数优化选项

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

有关示例,请参见使用贝叶斯优化优化SVM分类器拟合优化增强回归集成. 此外,每个拟合函数参考页都包含一个贝叶斯优化示例。

贝叶斯优化使用贝耶斯波特

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

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

  2. 创建目标函数。看到贝叶斯优化目标函数.如果有必要,也创建约束。看到贝叶斯优化中的约束条件.要在目标函数中包含额外的参数,请参见参数化函数

  3. 决定选项,这意味着bayseopt名称、值对。您无需将任何选项传递给贝耶斯波特但你通常会这样做,尤其是在试图改进解决方案的时候。

  4. 调用贝耶斯波特

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

有关示例,请参见用bayesopt优化交叉验证SVM分类器

贝叶斯优化特性

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

特征 细节
低维

贝叶斯优化在较低的维度(通常是10或更少)中效果最好。虽然贝叶斯优化可以解决几十个变量的一些问题,但对于大于50个维度的问题,不推荐使用贝叶斯优化。

昂贵的目标

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

低精度

贝叶斯优化未必能给出非常准确的结果。如果你有一个确定的目标函数,有时你可以通过开始一个标准的优化算法来提高精确度贝耶斯波特解决方案

全局解

贝叶斯优化是一种全局技术。与许多其他算法不同,要搜索全局解,你不需要从不同的初始点开始算法。

Hyperparameters

贝叶斯优化非常适合于优化hyperparameters另一个函数。超参数是控制函数行为的参数。例如,fitcsvm函数将SVM模型与数据相匹配。它有超参数BoxConstraintKernelScale为其“rbf”KernelFunction. 有关应用于超参数的贝叶斯优化示例,请参见用bayesopt优化交叉验证SVM分类器

Fit功能可选参数

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

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

字段名 价值观 违约
优化器
  • “bayesopt”-使用贝叶斯优化。在内部,此设置调用贝耶斯波特

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

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

“网格搜索”以随机顺序搜索,使用均匀采样,不从网格中替换。优化后,您可以使用命令按网格顺序获取表sortrows (Mdl.HyperparameterOptimizationResults)

“bayesopt”
AcquisitionFunctionName

  • “expected-improvement-per-second-plus”

  • “expected-improvement”

  • “expected-improvement-plus”

  • “每秒的预期改进”

  • “lower-confidence-bound”

  • “probability-of-improvement”

获取函数的名称包括每秒不要产生可重复的结果,因为优化取决于目标函数的运行时间。其名称包括+在过度开发某个区域时修改其行为。有关详细信息,请参阅采集功能类型

“expected-improvement-per-second-plus”
MaxObjectiveEvaluations 目标函数求值的最大次数。 30.对于“bayesopt”“randomsearch”,和整个网格“网格搜索”
MaxTime

时限,指定为正实。时间限制以秒为单位,用抽搐toc. 运行时间可以超过MaxTime因为MaxTime不中断功能评估。

NumGridDivisions 对于“网格搜索”,表示每个维度中值的数量。该值可以是一个给出每个维度值数量的正整数向量,也可以是适用于所有维度的标量。对于分类变量,该字段被忽略。 10
ShowPlots 指示是否显示绘图的逻辑值。如果真正的,该域根据迭代次数绘制出最佳目标函数值。如果有一个或两个优化参数,如果优化器“bayesopt”那么ShowPlots还根据参数绘制目标函数的模型。 真正的
保存中间结果 表示是否保存结果的逻辑值优化器“bayesopt”.如果真正的,此字段将覆盖名为“BayesoptResults”在每一个迭代。变量是aBayesianOptimization对象。 假的
冗长的

显示到命令行。

  • 0-无迭代显示

  • 1.——迭代显示

  • 2.-重复显示额外的信息

有关详细信息,请参阅贝耶斯波特冗长的名称-值对参数。

1.
使用并行 指示是否并行运行贝叶斯优化的逻辑值,这需要并行计算工具箱™。由于并行时序的不可再现性,并行贝叶斯优化并不一定产生可再现的结果。有关详细信息,请参见平行的贝叶斯优化 假的
重新分区

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

真正的通常给出最健壮的结果,因为这个设置考虑到了分区噪声。然而,为了得到好的结果,真正的需要至少两倍的功能评估。

假的
请使用以下三个字段名中的一个。
CVPartition A.CVD分区对象创建的CVD分区 “Kfold”,5如果您没有指定任何交叉验证字段
坚持 范围内的标量(0,1)代表抵抗分数。
Kfold 大于1的整数。

另见

|

相关的话题