主要内容

贝叶斯优化工作流程

什么是贝叶斯优化?

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

贝叶斯优化是统计学和机器学习工具箱™的一部分,因为它非常适合于优化普遍存在分类与回归算法。HyperParameter是分类器或回归函数的内部参数,例如支持向量机的框约束,或强大的分类集合的学习率。金宝app这些参数可以强烈影响分类器或回归的性能,但通常困难或耗时地优化它们。看到贝叶斯优化特征

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

执行贝叶斯优化的方法

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

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

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

  • 拟合功能 - 包括OptimizeHyperparameters许多拟合函数中的名称值参数自动应用贝叶斯优化。优化最小化交叉验证损耗。此方法为您提供比使用更少的调谐选项bayesopt,但使您能够更容易地执行贝叶斯优化。看到使用拟合函数的贝叶斯优化

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

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

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

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

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

    您可以传递参数名称的单元格数组。你也可以设置“汽车”随着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

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

参数可用于适合功能

适合的拟合函数超参数

函数名称 符合条件的参数
fitcdiscr. δ
伽玛
鉴定
fitcecoc 编码
有资格的fitcdiscr.参数“学习者”,“判别”
有资格的fitckernel参数'学习者','内核'
有资格的fitcknn参数“学习者”,“资讯”
有资格的fitclinear参数“学习者”,“线性”
有资格的fitcsvm.参数'学习者','svm'
有资格的fitctree参数“学习者”,“树”
fitcensemble 方法
numlarnicalningcycles.
LearnRate
有资格的fitcdiscr.参数“学习者”,“判别”
有资格的fitcknn参数“学习者”,“资讯”
有资格的fitctree参数“学习者”,“树”
fitcgam InitialLearnRateForInteractions
InitialLearnRateForPredictors
的相互作用
MaxNumSplitsPerInteraction
MaxNumSplitsPerPredictor
numtreesperinteraction.
numtreesperpredictor.
fitckernel 学习者
内塞尔
λ
NumExpansionDimensions
fitcknn NumNeighbors
距离
距离重量级
指数
标准化
fitclinear λ
学习者
正则化
Fitcnb. DistributionNames
宽度
内核
fitcnet 激活
λ
digraybiasesinitializer
LayerWeightsInitializer
LayerSizes
标准化
fitcsvm. boxconstraint.
内塞尔
KernelFunction
PolynomialOrder
标准化
fitctree MinLeafSize
MaxNumSplits
SplitCriterion
numvariablestosample.
fitrensemble 方法
numlarnicalningcycles.
LearnRate
有资格的fitrtree.参数“学习者”,“树”
MinLeafSize
MaxNumSplits
numvariablestosample.
fitrgam InitialLearnRateForInteractions
InitialLearnRateForPredictors
的相互作用
MaxNumSplitsPerInteraction
MaxNumSplitsPerPredictor
numtreesperinteraction.
numtreesperpredictor.
fitrgp. σ
基本功能
KernelFunction
内塞尔
标准化
Fitrkernel. 学习者
内塞尔
λ
NumExpansionDimensions
ε
fitrlinear λ
学习者
正则化
Fitrnet. 激活
λ
digraybiasesinitializer
LayerWeightsInitializer
LayerSizes
标准化
fitrsvm boxconstraint.
内塞尔
ε
KernelFunction
PolynomialOrder
标准化
fitrtree. MinLeafSize
MaxNumSplits
numvariablestosample.

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

使用拟合功能优化时,您可以使用这些选项HyperparameterOptimizationOptions名称-值参数。将值作为结构。结构中的所有字段都是可选的。

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

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

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

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

“bayesopt”
AcquisitionFunctionName

  • '预期 - 每秒改善'

  • “expected-improvement”

  • '预期改善加'

  • “expected-improvement-per-second”

  • “较低的信任”

  • '改善概率'

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

'预期 - 每秒改善'
MaxObjectiveEvaluations 最大客观函数评估数。 30.“bayesopt”“randomsearch”,和整个网格“gridsearch”
MaxTime.

时间限制,指定为正实标量。时间限制以秒为单位,用抽搐toc.运行时间可以超过MaxTime.因为MaxTime.不中断函数计算。

INF.
NumGridDivisions “gridsearch”,每个维度中的值数。该值可以是正整数的向量,其提供每个维度的值数,或者适用于所有维度的标量。对于分类变量,忽略此字段。 10
Showplots. 逻辑值,指示是否显示图表。如果真正的,该域根据迭代次数绘制最佳观测目标函数值。如果你使用贝叶斯优化(优化器“bayesopt”),则该域也绘制出最佳估计目标函数值。的最佳观测目标函数值和最佳估计目标函数值对应于BestSoFar(观察)BestSoFar (estim)。列的迭代显示,分别。您可以在属性中找到这些值ObjectiveminimumTrace.EstimatedObjectiveMinimumTraceMdl。HyperparameterOptimizationResults.如果问题包含一个或两个贝叶斯优化的优化参数,那么Showplots.还根据参数绘制目标函数的模型。 真正的
SaveIntermediateResults 指示是否保存结果的逻辑值优化器“bayesopt”.如果真正的,此字段将覆盖名为“BayesoptResults”在每一个迭代。变量是aBayesianOptimization对象。
详细的

在命令行显示:

  • 0-没有迭代显示

  • 1- 迭代显示

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

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

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

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

那个设定真正的通常给出最强大的结果,因为它需要分区噪声。但是,为了好的结果,真正的需要至少两倍的函数求值。

使用以下三种选项中的任何一种。
CVPartition. 一个cvpartition对象,由创建的cvpartition “Kfold”,5如果您未指定交叉验证字段
坚持 范围内的标量(0,1)代表保持部分
Kfold 大于1的整数

另请参阅

|

相关的话题