贝叶斯优化流程
什么是贝叶斯优化?
优化,在其最一般的形式,是定位一个点的过程,使一个实值函数,称为目标函数.贝叶斯优化就是这样一个过程的名称。贝叶斯优化在内部维护了目标函数的高斯过程模型,并使用目标函数求值来训练模型。贝叶斯优化的一个创新是使用获取函数,算法用它来确定下一个要计算的点。采集函数可以平衡目标函数建模低的点上的采样,并探索尚未建模好的区域。详细信息请参见贝叶斯优化算法.
贝叶斯优化是统计和机器学习工具箱™的一部分,因为它非常适合进行优化hyperparameters分类和回归算法。超参数是分类器或回归函数的内部参数,例如支持向量机的盒约束,或鲁棒分类集成的学习率。万博1manbetx这些参数可以强烈地影响分类器或回归器的性能,但优化它们通常是困难或耗时的。看到贝叶斯优化特征.
通常,优化超参数意味着要尽量减少分类器或回归的交叉验证损失。
执行贝叶斯优化的方法
你可以通过以下几种方式进行贝叶斯优化:
fitcauto
而且fitrauto
-将预测器和响应数据传递给fitcauto
或fitrauto
函数对模型类型和超参数值的选择进行优化。不像其他方法,使用fitcauto
或fitrauto
在优化之前不需要指定单个模型;模型选择是优化过程的一部分。优化最小化交叉验证的损失,这是用一个多-TreeBagger
模型fitcauto
还有一个多。RegressionGP
模型fitrauto
,而不是其他方法中使用的单一高斯过程回归模型。看到贝叶斯优化为fitcauto
而且贝叶斯优化为fitrauto
.分类学习者和回归学习者应用程序-选择Optimizable在机器学习应用程序中的模型,并通过使用贝叶斯优化自动调整其超参数值。基于所选的验证选项,优化使模型损失最小化。这种方法比使用拟合函数有更少的调优选项,但允许您直接在应用程序中执行贝叶斯优化。看到分类学习App中的超参数优化而且回归学习应用中的超参数优化.
适合功能-包括
OptimizeHyperparameters
在许多拟合函数的名称-值参数自动应用贝叶斯优化。该优化最小化了交叉验证损失。这种方法提供了比使用更少的调优选项bayesopt
,但使您能够更轻松地执行贝叶斯优化。看到使用拟合函数的贝叶斯优化.bayesopt
-通过调用来最大限度地控制优化bayesopt
直接。这种方法要求您编写一个目标函数,该函数不必表示交叉验证损失。看到使用贝叶斯优化.
使用拟合函数的贝叶斯优化
要通过贝叶斯优化最小化交叉验证响应中的错误,请遵循以下步骤。
属性的拟合函数中选择您的分类或回归求解器
OptimizeHyperparameters
名称-值参数。确定要优化的超参数,并将它们传递到
OptimizeHyperparameters
名称-值参数。对于每个拟合函数,您可以从一组超参数中进行选择。看到适合函数的合格超参数,或使用hyperparameters
函数,或咨询适合函数参考页。您可以传递一个包含参数名的单元格数组。你也可以设置
“汽车”
随着OptimizeHyperparameters
值,它选择一组典型的超参数进行优化,或者“所有”
优化所有可用参数。对于集合拟合函数
fitcecoc
,fitcensemble
,fitrensemble
,也包括参数的弱学习器OptimizeHyperparameters
单元阵列。属性的选项结构(可选)
HyperparameterOptimizationOptions
名称-值参数。看到拟合函数的超参数优化选项.使用适当的名称-值参数调用fit函数。
有关示例,请参见使用贝叶斯优化优化分类器拟合而且优化一个增强的回归集合.此外,每个拟合函数参考页都包含一个贝叶斯优化示例。
贝叶斯优化的应用bayesopt
执行贝叶斯优化使用bayesopt
,请遵循以下步骤。
有关示例,请参见使用bayesopt优化交叉验证分类器.
贝叶斯优化特征
贝叶斯优化算法最适合解决这类问题。
特征 | 细节 |
---|---|
低维 | 贝叶斯优化在低维数(通常为10个或更少)中工作得最好。虽然贝叶斯优化可以解决一些具有几十个变量的问题,但不建议用于维度高于约50的问题。 |
昂贵的目标 | 贝叶斯优化是为求解速度较慢的目标函数设计的。它有相当大的开销,每次迭代通常需要几秒钟。 |
低精度 | 贝叶斯优化不一定能给出非常准确的结果。如果你有一个确定的目标函数,你有时可以通过从标准优化算法开始提高精度 |
全球解决方案 | 贝叶斯优化是一种全局技术。与许多其他算法不同,要搜索全局解决方案,您不必从不同的初始点开始算法。 |
Hyperparameters | 贝叶斯优化非常适合于优化hyperparameters另一个函数。超形参是控制函数行为的形参。例如, |
适合函数的参数
适合函数的合格超参数
拟合函数的超参数优化选项
在使用拟合函数进行优化时,可以在HyperparameterOptimizationOptions
名称-值参数。以结构形式给出值。结构中的所有字段都是可选的。
字段名 | 值 | 默认的 |
---|---|---|
优化器 |
|
“bayesopt” |
AcquisitionFunctionName |
名称包括的获取函数 |
“expected-improvement-per-second-plus” |
MaxObjectiveEvaluations |
目标函数求值的最大个数。 | 30. 为“bayesopt” 而且“randomsearch” ,而整个电网为“gridsearch” |
MaxTime |
时间限制,指定为正实标量。时间限制以秒为单位,由 |
正 |
NumGridDivisions |
为“gridsearch” ,表示每个维度中值的数量。该值可以是一个正整数向量,给出每个维度的值的数量,也可以是一个适用于所有维度的标量。对于分类变量,该字段将被忽略。 |
10 |
ShowPlots |
指示是否显示图的逻辑值。如果真正的 ,该字段根据迭代次数绘制最佳观测目标函数值。如果使用贝叶斯优化(优化器 是“bayesopt” ),则该字段也绘制出目标函数的最佳估计值。最佳观测目标函数值和最佳估计目标函数值对应于BestSoFar(观察) 而且BestSoFar (estim)。 列的迭代分别显示。您可以在属性中找到这些值ObjectiveMinimumTrace 而且EstimatedObjectiveMinimumTrace 的Mdl。HyperparameterOptimizationResults .如果问题包含一个或两个用于贝叶斯优化的优化参数,则ShowPlots 还绘制了目标函数对参数的模型。 |
真正的 |
SaveIntermediateResults |
时是否保存结果的逻辑值优化器 是“bayesopt” .如果真正的 ,此字段将覆盖名为“BayesoptResults” 在每次迭代中。变量是aBayesianOptimization 对象。 |
假 |
详细的 |
在命令行显示:
详细信息请参见 |
1 |
UseParallel |
指示是否并行运行贝叶斯优化的逻辑值,这需要并行计算工具箱™。由于并行计时的不可再现性,并行贝叶斯优化不一定产生可再现的结果。详细信息请参见并行贝叶斯优化. | 假 |
重新分区 |
指示是否在每次迭代中重新划分交叉验证的逻辑值。如果这个字段是 设置 |
假 |
使用以下三个选项中的一个即可。 | ||
CVPartition |
一个cvpartition 对象创建的cvpartition |
“Kfold”,5 如果没有指定交叉验证字段 |
坚持 |
范围内的标量(0,1) 表示抵抗分数 |
|
Kfold |
大于1的整数 |