优化,在其最一般的形式,是定位一个点的过程,该点使一个实值函数最小目标函数。贝叶斯优化就是这样一个过程的名称。贝叶斯优化内部保持目标函数的高斯过程模型,并使用目标函数评价对模型进行训练。贝叶斯优化的一个创新是an的使用获取函数,该算法使用它来确定下一个要评估的点。采集函数可以平衡目标函数建模较低的采样点和未建模好的区域的采样。有关详细信息,请参见贝叶斯优化算法。
贝叶斯优化是统计和机器学习工具箱™的一部分,因为它非常适合优化超参数的分类和回归算法。甲超参数是一个分类器或回归函数,的内部参数,诸如支持向量机的框约束,或一个强大的分类合奏的学习率。万博1manbetx这些参数可以强烈地影响分类或回归的表现,但它通常是困难或耗时对其进行优化。看到贝叶斯优化特性。
通常,优化超参数意味着尽量减少分类器或回归的交叉验证损失。
您可以执行贝叶斯优化的几种方式:
fitcauto
-传递预测和响应数据到fitcauto
函数来跨越选择分类类型和超参数值的优化。不像其他的方法,使用fitcauto
不要求你指定优化前的单一模式;选型是优化过程的一部分。优化最小化交叉验证的损失,这是使用多建模TreeBagger
用于回归的集合,而不是在其他方法中使用的高斯过程。看到贝叶斯优化。
分类学习者和回归学习者应用程序-选择Optimizable模型在机器学习应用程序和自动调整其超参数值使用贝叶斯优化。优化最小化模型损失基于选择的验证选项。这种方法比使用fit函数有更少的调优选项,但允许您直接在应用程序中执行贝叶斯优化。看到超参数优化分类中的应用学习和超参数优化的回归学习应用。
拟合函数 - 加入OptimizeHyperparameters
名称-值对在许多拟合函数中应用贝叶斯自动优化。优化最小化交叉验证的损失。这种方法提供的调优选项比使用更少bayesopt
,但使您能够更轻松地进行贝叶斯优化。看到贝叶斯优化使用一个拟合函数。
bayesopt
-发挥最大的控制您的优化呼叫bayesopt
直接。这种方法要求您编写一个不需要表示交叉验证损失的目标函数。看到使用bayesopt进行Bayesian优化。
要通过贝叶斯优化将交叉验证响应中的错误最小化,请遵循以下步骤。
在其中选择您的分类或回归求解器fitcdiscr
,fitcecoc
,fitcensemble
,fitckernel
,fitcknn
,fitclinear
,fitcnb
,fitcsvm
,fitctree
,fitrensemble
,fitrgp
,fitrkernel
,fitrlinear
,fitrsvm
,或fitrtree
。
确定要优化的超参数,并将它们传入OptimizeHyperparameters
名称-值对。对于每个fit函数,您可以从一组超参数中进行选择。看到适合函数的合格超参数,或使用超参数
功能,或查阅fit功能参考页。
可以传递参数名的单元格数组。你也可以设置“汽车”
随着OptimizeHyperparameters
值,它选择一组典型的超参数进行优化,或者“所有”
优化所有可用参数。
对于集合拟合函数fitcecoc
,fitcensemble
,fitrensemble
,也包括了系统中弱学习者的参数OptimizeHyperparameters
单元阵列。
选项的可选选项结构HyperparameterOptimizationOptions
名称-值对。看到适合函数的超参数优化选项。
使用适当的名称-值对调用fit函数。
有关示例,请参见利用贝叶斯优化方法优化SVM分类器的拟合和优化增强回归集成。另外,每个fit函数引用页面都包含一个贝叶斯优化示例。
bayesopt
执行贝叶斯优化使用bayesopt
,请遵循以下步骤。
例如,请参阅使用bayesopt优化交叉验证的SVM分类器。
贝叶斯优化算法最适合于这些问题类型。
特性 | 细节 |
---|---|
低维 | 贝叶斯优化最适合在低维数,通常为10个或更少的。虽然贝叶斯优化可以解决一些问题,几个十几个变量,故不推荐用于尺寸大于50以上。 |
昂贵的目标 | 贝叶斯优化是为评估速度慢的目标函数设计的。它有相当大的开销,通常每个迭代有几秒钟的时间。 |
低精度 | 贝叶斯优化不一定给出非常准确的结果。如果您有一个确定性的目标函数,您有时可以通过从 |
全球解决方案 | 贝叶斯优化是一个全球性的技术。不像许多其他的算法,搜索你没有开始从不同初始点的算法,一个全球性的解决方案。 |
Hyperparameters | 贝叶斯优化非常适合于优化超参数另一个函数。超参数是控制函数行为的参数。例如, |
适合函数的合格超参数
功能名称 | 合格的参数 |
---|---|
fitcdiscr |
δ 伽玛 DiscrimType |
fitcecoc |
编码 合格 fitcdiscr 参数“学习者”,“判别” 合格 fitckernel 参数“学习者”,“内核” 合格 fitcknn 参数“学习者”,“资讯” 合格 fitclinear 参数“学习者”,“线性” 合格 fitcsvm 参数'学习者', 'SVM' 合格 fitctree 参数“学习者”,“树” |
fitcensemble |
方法 NumLearningCycles LearnRate 合格 fitcdiscr 参数“学习者”,“判别” 合格 fitcknn 参数“学习者”,“资讯” 合格 fitctree 参数“学习者”,“树” |
fitckernel |
“学习者” “KernelScale” “λ” “NumExpansionDimensions” |
fitcknn |
NumNeighbors 距离 DistanceWeight 指数 标准化 |
fitclinear |
λ 学习者 正则化 |
fitcnb |
DistributionNames 宽度 内核 |
fitcsvm |
BoxConstraint KernelScale KernelFunction PolynomialOrder 标准化 |
fitctree |
MinLeafSize MaxNumSplits SplitCriterion NumVariablesToSample |
fitrensemble |
方法 NumLearningCycles LearnRate 合格 fitrtree 参数“学习者”,“树” :MinLeafSize MaxNumSplits NumVariablesToSample |
fitrgp |
σ BasisFunction KernelFunction KernelScale 标准化 |
fitrkernel |
学习者 KernelScale λ NumExpansionDimensions ε |
fitrlinear |
λ 学习者 正则化 |
fitrsvm |
BoxConstraint KernelScale ε KernelFunction PolynomialOrder 标准化 |
fitrtree |
MinLeafSize MaxNumSplits NumVariablesToSample |
当使用fit函数进行优化时,在HyperparameterOptimizationOptions
名称-值对。以结构的形式给出值。结构中的所有字段都是可选的。
字段名称 | 值 | 默认的 |
---|---|---|
优化器 |
|
“bayesopt” |
AcquisitionFunctionName |
名称包括的获取函数 |
“预计-改善每秒加” |
MaxObjectiveEvaluations |
目标函数评价的最大次数。 | 30. 为“bayesopt” 或“randomsearch” ,以及整个网格“gridsearch” |
MAXTIME |
时间限制,指定为正实。时间限制以秒为单位,以 |
天道酬勤 |
NumGridDivisions |
为“gridsearch” ,即每个维度中值的数量。该值可以是一个正整数向量,给出每个维度的值的数量,也可以是一个适用于所有维度的标量。对于分类变量,该字段被忽略。 |
10 |
ShowPlots |
逻辑值,指示是否显示图。如果真正的 ,该字段根据迭代次数绘制最佳目标函数值。如果有一个或两个优化参数,如果优化器 是“bayesopt” ,然后ShowPlots 并根据参数绘制目标函数的模型。 |
真正的 |
SaveIntermediateResults |
逻辑值,指示何时是否保存结果优化器 是“bayesopt” 。如果真正的 ,该字段将重写一个名为“BayesoptResults” 在每一个迭代。变量是aBayesianOptimization 对象。 |
假 |
详细的 |
显示到命令行。
有关详细信息,请参阅 |
1 |
UseParallel |
逻辑值指示是否并行运行贝叶斯优化,这需要并行计算工具箱™。由于并行定时的nonreproducibility,平行贝叶斯优化不一定得到重复的结果。有关详细信息,请参见平行的贝叶斯优化。 | 假 |
重新分区 |
逻辑值,指示是否在每次迭代时重新划分交叉验证。如果
|
假 |
使用以下三个字段名时,不要超过其中一个。 | ||
CVPartition |
一个cvpartition 对象,如通过创建cvpartition 。 |
“Kfold”, 5 如果没有指定任何交叉验证字段 |
坚持 |
一个范围内的标量(0,1) 表示抵抗率。 |
|
Kfold |
一个大于1的整数。 |