Variables for a Bayesian Optimization
1、用于创建优化变量的语法
对于目标函数中的每个变量,使用optimizableVariable
创建变量描述对象。每个变量都有一个唯一的名称和一系列值。变量创建的最小语法是
variable = optimizableVariable(Name,Range)
此函数用于创建一个范围从下限范围(1)到上限范围(2)的实变量。
可以在类型名称值参数中指定三种类型的变量:
'real'
–有限边界之间的连续实值。将范围作为两个元素向量[lower upper],表示下限和上限。
'integer'
–有限边界之间的整数值,类似于'real'
。
'Categorical'
--在Range参数中指定的可能值的名称的单元格数组,例如{'red'
、'green'
、'blue'
}。
对于'real'
或'integer'
变量,可以通过将Transform
name value
参数设置为'log'
来指定bayesopt
在对数缩放空间中搜索。对于此转换,请确保范围中的下限对于'real'
严格为正,对于'integer'
严格为非负。
将 bayesopt
的变量作为向量包含在第二个参数中。
results = bayesopt(fun,[xvar,ivar,rvar])
要从优化中排除变量,请在optimizableVariable
的参数中或通过点表示法将optimizableVariable
设置为false
:
要从优化中排除变量,请在 optimizableVariable
的name-value
参数中或通过点表示法将 Optimize
设置为 false
:
xvar.Optimize = false;
2、Tip
有两个名称与optimizableVariable
关联:
- MATLAB®workspace变量名
- 优化中变量的名称
例如,
xvar = optimizableVariable('spacevar',[1,100]);
xvar
是MATLAB工作空间变量,'spacevar'
是优化中的变量。
使用以下名称:
将xvar
用作传递给bayesopt
的变量向量中的元素。例如,
results = bayesopt(fun,[xvar,tvar])
使用'spacevar'
作为优化中变量的名称。例如,在目标函数中,
function objective = mysvmfun(x,cdata,grp)
SVMModel = fitcsvm(cdata,grp,'KernelFunction','rbf',...
'BoxConstraint',x.spacevar,...
'KernelScale',x.tvar);
objective = kfoldLoss(crossval(SVMModel));
3、Variables for Optimization Examples
Real variable
from 0 to 1:
var1 = optimizableVariable('xvar',[0 1])
var1 =
optimizableVariable with properties:
Name: 'xvar'
Range: [0 1]
Type: 'real'
Transform: 'none'
Optimize: 1
Integer variable
from 0 to 1000 on a log scale:
var2 = optimizableVariable('ivar',[0 1000],'Type','integer','Transform','log')
var2 =
optimizableVariable with properties:
Name: 'ivar'
Range: [0 1000]
Type: 'integer'
Transform: 'log'
Optimize: 1
Categorical variable
of rainbow colors:
var3 = optimizableVariable('rvar',{'r' 'o' 'y' 'g' 'b' 'i' 'v'},'Type','categorical')
var3 =
optimizableVariable with properties:
Name: 'rvar'
Range: {'r' 'o' 'y' 'g' 'b' 'i' 'v'}
Type: 'categorical'
Transform: 'none'
Optimize: 1