主要内容

贝叶斯优化工作流程

什么是贝叶斯优化?

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

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

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

执行贝叶斯优化的方法

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

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

  • 分类学习者和回归学习者应用程序-选择Optimizable模型,并通过贝叶斯优化自动调整其超参数值。根据所选的验证选项,优化将模型损失降至最低。这种方法比使用合适的函数具有更少的调优选项,但允许您直接在应用程序中执行贝叶斯优化。看到分类学习应用中的超参数优化回归学习应用中的超参数优化

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

  • bayesopt-通过调用对优化施加最大的控制bayesopt直接。这种方法要求您编写一个目标函数,它不需要表示交叉验证损失。看到使用bayesopt的贝叶斯优化

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

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

  1. 从中选择您的分类或回归求解器fitcdiscrfitcecocfitcensemblefitckernelfitcknnfitclinearfitcnbfitcsvmfitctreefitrensemblefitrgpfitrkernelfitrlinearfitrsvm,或fitrtree

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

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

  3. 对于整体拟合函数fitcecocfitcensemble,fitrensemble,也包括弱学习者的参数OptimizeHyperparameters单元阵列。

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

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

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

贝叶斯优化使用bayesopt

使用。执行贝叶斯优化bayesopt,按照以下步骤操作。

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

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

  3. 决定选择,意味着bayseopt名称,值对。您不需要传递任何选项bayesopt但你通常会这样做,特别是当你试图改进一个解决方案的时候。

  4. 调用bayesopt

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

例如,请参见利用bayesopt优化交叉验证支持向量机分类器

贝叶斯优化特性

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

特征 细节
低维

贝叶斯优化在较低的维数中效果最好,通常是10个或更少。虽然贝叶斯优化可以用几十个变量解决一些问题,但不建议在维数高于50的情况下使用它。

昂贵的目标

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

低精度

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

全球解决方案

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

Hyperparameters

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

适合函数的参数

适合函数的超参数

函数名 合格的参数
fitcdiscr δ
γ
DiscrimType
fitcecoc 编码
符合条件的fitcdiscr参数“学习者”,“判别”
符合条件的fitckernel参数“学习者”,“内核”
符合条件的fitcknn参数“学习者”,“资讯”
符合条件的fitclinear参数“学习者”,“线性”
符合条件的fitcsvm参数“学习者”,“支持向量机”
符合条件的fitctree参数“学习者”,“树”
fitcensemble 方法
NumLearningCycles
LearnRate
符合条件的fitcdiscr参数“学习者”,“判别”
符合条件的fitcknn参数“学习者”,“资讯”
符合条件的fitctree参数“学习者”,“树”
fitckernel “学习者”
“KernelScale”
“λ”
“NumExpansionDimensions”
fitcknn NumNeighbors
距离
DistanceWeight
指数
标准化
fitclinear λ
学习者
正则化
fitcnb DistributionNames
宽度
内核
fitcsvm BoxConstraint
KernelScale
KernelFunction
PolynomialOrder
标准化
fitctree MinLeafSize
MaxNumSplits
SplitCriterion
NumVariablesToSample
fitrensemble 方法
NumLearningCycles
LearnRate
符合条件的fitrtree参数“学习者”,“树”
MinLeafSize
MaxNumSplits
NumVariablesToSample
fitrgp σ
BasisFunction
KernelFunction
KernelScale
标准化
fitrkernel 学习者
KernelScale
λ
NumExpansionDimensions
ε
fitrlinear λ
学习者
正则化
fitrsvm BoxConstraint
KernelScale
ε
KernelFunction
PolynomialOrder
标准化
fitrtree MinLeafSize
MaxNumSplits
NumVariablesToSample

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

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

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

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

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

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

“bayesopt”
AcquisitionFunctionName

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

  • “expected-improvement”

  • “expected-improvement-plus”

  • “expected-improvement-per-second”

  • “lower-confidence-bound”

  • “probability-of-improvement”

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

“expected-improvement-per-second-plus”
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 指示是否并行运行贝叶斯优化的逻辑值,这需要parallel Computing Toolbox™。由于并行定时的不可再现性,并行贝叶斯优化并不一定产生可再现的结果。有关详细信息,请参见平行的贝叶斯优化
重新分区

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

真正的通常会给出最健壮的结果,因为此设置考虑了分区噪声。然而,为了取得好的结果,真正的需要至少两倍的函数求值。

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

另请参阅

|

相关的话题