最优化,在它最一般的形式中,是定位一个使实值函数最小的点的过程目标函数.贝叶斯优化就是这样一个过程的名字。贝叶斯优化内部维护目标函数的高斯过程模型,并使用目标函数评价对模型进行训练。贝叶斯优化的一个创新是使用了获取函数,算法使用它来确定要计算的下一个点。采集函数可以在建模目标函数较低的点上平衡采样,并探索尚未建模良好的区域。有关详细信息,请参见贝叶斯优化算法.
贝叶斯优化是统计学和机器学习工具箱™的一部分,因为它非常适合于优化hyperparameters分类和回归算法。超参数是分类器或回归函数的内部参数,如支持向量机的框约束或鲁棒分类集成的学习率。金宝app这些参数会强烈地影响分类器或回归器的性能,但通常很难或耗时地优化它们。看到贝叶斯优化特性.
通常,优化超参数意味着要尽量减少分类器或回归的交叉验证损失。
你可以通过以下几种方式进行贝叶斯优化:
fitcauto
和fitrauto
-将预测器和响应数据传递给fitcauto
或fitrauto
函数来优化模型类型和超参数值的选择。不同于其他方法,使用fitcauto
或fitrauto
不要求您在优化之前指定单个模型;模型选择是优化过程的一部分。优化最大限度地减少交叉验证的损失,这是使用多TreeBagger
模型fitcauto
和一个多RegressionGP
模型fitrauto
,而不是在其他方法中使用的单一高斯过程回归模型。看到贝叶斯优化为fitcauto
和贝叶斯优化为fitrauto
.
分类学习者和回归学习者应用程序-选择Optimizable在机器学习应用程序中的模型,并使用贝叶斯优化自动调整其超参数值。该优化基于选定的验证选项最小化模型损失。这种方法比使用fit函数有更少的调优选项,但允许您直接在应用程序中执行贝叶斯优化。看到分类学习者应用程序中的超参数优化和回归学习程序中的超参数优化.
适合功能-包括OptimizeHyperparameters
在许多拟合函数中使用名称-值参数来自动应用贝叶斯优化。这种优化最大限度地减少交叉验证的损失。这种方法提供的调优选项比使用方法少bayesopt
,但使您能够更轻松地执行贝叶斯优化。看到使用拟合函数的贝叶斯优化.
bayesopt
-通过调用来对优化施加最大的控制bayesopt
直接。这种方法要求您编写一个目标函数,该函数不必表示交叉验证损失。看到使用bayesopt进行贝叶斯优化.
要通过贝叶斯优化将交叉验证响应中的错误最小化,请遵循以下步骤。
在接受的拟合函数中选择您的分类或回归求解器OptimizeHyperparameters
名称-值参数。
确定要优化的超参数,并将它们传递到OptimizeHyperparameters
名称-值参数。对于每个拟合函数,您可以从一组超参数中进行选择。看到适合的拟合函数超参数,或使用hyperparameters
函数,或查阅适合函数参考页。
您可以传递参数名称的单元格数组。你也可以设置“汽车”
随着OptimizeHyperparameters
值,它选择要优化的一组典型超参数,或“所有”
优化所有可用参数。
对于集合拟合函数fitcecoc
,fitcensemble
,fitrensemble
,也包括弱学习者的参数OptimizeHyperparameters
单元阵列。
可以选择,为HyperparameterOptimizationOptions
名称-值参数。看到适合函数的超参数优化选项.
使用适当的名称-值参数调用fit函数。
有关示例,请参见使用贝叶斯优化优化分类器和优化增强回归集成.此外,每个fit函数参考页面都包含一个贝叶斯优化示例。
bayesopt
执行贝叶斯优化使用bayesopt
,请遵循以下步骤。
例如,请参见使用bayesopt优化交叉验证分类器.
贝叶斯优化算法最适合于这些类型的问题。
特征 | 细节 |
---|---|
低维 | 贝叶斯优化在较低的维度(通常是10或更少)中效果最好。虽然贝叶斯优化可以解决几十个变量的一些问题,但对于大于50个维度的问题,不推荐使用贝叶斯优化。 |
昂贵的目标 | 贝叶斯优化是为评估缓慢的目标函数设计的。它有相当大的开销,通常每个迭代需要几秒钟。 |
低精度 | 贝叶斯优化未必能给出非常准确的结果。如果你有一个确定的目标函数,有时你可以通过开始一个标准的优化算法来提高精确度 |
全球解决方案 | 贝叶斯优化是一种全局技术。与许多其他算法不同,要搜索全局解,你不需要从不同的初始点开始算法。 |
Hyperparameters | 贝叶斯优化非常适合于优化hyperparameters另一个函数。超参数是控制函数行为的参数。例如, |
适合的拟合函数超参数
当使用fit函数进行优化时,您可以在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的整数 |