主要内容

贝叶斯优化工作流程

什么是贝叶斯优化?

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

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

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

执行贝叶斯优化的方法

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

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

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

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

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

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

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

  1. 在接受的拟合函数中选择您的分类或回归求解器OptimizeHyperparameters名称-值参数。

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

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

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

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

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

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

贝叶斯优化使用bayesopt

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

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

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

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

  4. 调用bayesopt

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

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

贝叶斯优化特性

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

特征 细节
低维

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

昂贵的目标

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

低精度

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

全球解决方案

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

Hyperparameters

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

Fit功能可选参数

适合的拟合函数超参数

函数名 合格的参数
fitcdiscr δ
γ
DiscrimType
fitcecoc 编码
符合条件的fitcdiscr参数“学习者”,“判别”
符合条件的fitckernel参数“学习者”,“内核”
符合条件的fitcknn参数“学习者”,“资讯”
符合条件的fitclinear参数“学习者”,“线性”
符合条件的fitcsvm参数“学习者”,“支持向量机”
符合条件的fitctree参数“学习者”,“树”
fitcensemble 方法
NumLearningCycles
LearnRate
符合条件的fitcdiscr参数“学习者”,“判别”
符合条件的fitcknn参数“学习者”,“资讯”
符合条件的fitctree参数“学习者”,“树”
fitcgam InitialLearnRateForInteractions
InitialLearnRateForPredictors
的相互作用
MaxNumSplitsPerInteraction
MaxNumSplitsPerPredictor
NumTreesPerInteraction
NumTreesPerPredictor
fitckernel 学习者
KernelScale
λ
NumExpansionDimensions
fitcknn NumNeighbors
距离
DistanceWeight
指数
标准化
fitclinear λ
学习者
正则化
fitcnb DistributionNames
宽度
内核
fitcnet 激活
λ
LayerBiasesInitializer
LayerWeightsInitializer
LayerSizes
标准化
fitcsvm BoxConstraint
KernelScale
KernelFunction
PolynomialOrder
标准化
fitctree MinLeafSize
MaxNumSplits
SplitCriterion
NumVariablesToSample
fitrensemble 方法
NumLearningCycles
LearnRate
符合条件的fitrtree参数“学习者”,“树”
MinLeafSize
MaxNumSplits
NumVariablesToSample
fitrgam InitialLearnRateForInteractions
InitialLearnRateForPredictors
的相互作用
MaxNumSplitsPerInteraction
MaxNumSplitsPerPredictor
NumTreesPerInteraction
NumTreesPerPredictor
fitrgp σ
BasisFunction
KernelFunction
KernelScale
标准化
fitrkernel 学习者
KernelScale
λ
NumExpansionDimensions
ε
fitrlinear λ
学习者
正则化
fitrnet 激活
λ
LayerBiasesInitializer
LayerWeightsInitializer
LayerSizes
标准化
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”),则该域也绘制出最佳估计目标函数值。的最佳观测目标函数值和最佳估计目标函数值对应于BestSoFar(观察)BestSoFar (estim)。列的迭代显示,分别。您可以在属性中找到这些值ObjectiveMinimumTraceEstimatedObjectiveMinimumTraceMdl。HyperparameterOptimizationResults.如果问题包含一个或两个贝叶斯优化的优化参数,那么ShowPlots还根据参数绘制目标函数的模型。 真正的
SaveIntermediateResults 表示是否保存结果的逻辑值优化器“bayesopt”.如果真正的,此字段将覆盖名为“BayesoptResults”在每一个迭代。变量是aBayesianOptimization对象。
详细的

在命令行显示:

  • 0-没有迭代显示

  • 1——迭代显示

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

具体操作请参见bayesopt详细的名称-值参数和示例使用贝叶斯优化优化分类器

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

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

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

使用以下三个选项中的任意一个。
CVPartition 一个cvpartition对象创建的cvpartition “Kfold”,5如果您没有指定交叉验证字段
坚持 范围内的标量(0,1)表示坚持不懈的分数
Kfold 大于1的整数

另请参阅

|

相关的话题