主要内容

贝叶斯优化流程

什么是贝叶斯优化?

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

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

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

执行贝叶斯优化的方法

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

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

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

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

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

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

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

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

  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函数将支持向量机模型与数据拟合。它有超参数BoxConstraint而且KernelScale为其“rbf”KernelFunction.有关应用于超参数的贝叶斯优化示例,请参见使用bayesopt优化交叉验证分类器

适合函数的参数

适合函数的合格超参数

函数名 合格的参数
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

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

在使用拟合函数进行优化时,可以在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)。列的迭代分别显示。您可以在属性中找到这些值ObjectiveMinimumTrace而且EstimatedObjectiveMinimumTraceMdl。HyperparameterOptimizationResults.如果问题包含一个或两个用于贝叶斯优化的优化参数,则ShowPlots还绘制了目标函数对参数的模型。 真正的
SaveIntermediateResults 时是否保存结果的逻辑值优化器“bayesopt”.如果真正的,此字段将覆盖名为“BayesoptResults”在每次迭代中。变量是aBayesianOptimization对象。
详细的

在命令行显示:

  • 0-无迭代显示

  • 1-迭代显示

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

详细信息请参见bayesopt详细的名称-值参数和示例使用贝叶斯优化优化分类器拟合

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

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

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

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

另请参阅

|

相关的话题