Variables for a Bayesian Optimization
Syntax for Creating Optimization Variables
For each variable in your objective function, create a variable
description object using optimizableVariable. Each variable has a unique
name and a range of values. The minimal syntax for variable creation
is
variable = optimizableVariable(Name,Range)
This function creates a real variable that ranges from the lower
bound Range(1) to the upper bound Range(2).
You can specify three types of variables in the Type name-value
argument:
'real'— Continuous real values between finite bounds. GiveRangeas the two-element vector[lower upper], which represent the lower and upper bounds.'integer'— Integer values between finite bounds, similar to'real'.'categorical'— Cell array of names of possible values, such as{'red','green','blue'}, that you specify in theRangeargument.
For 'real' or 'integer' variables, you can specify that
bayesopt searches in a log-scaled space by setting the
Transform name-value argument to 'log'.
For this transformation, ensure that the lower bound in the Range
is strictly positive for 'real' and nonnegative for
'integer'.
Include variables for bayesopt as a vector
in the second argument.
results = bayesopt(fun,[xvar,ivar,rvar])
To exclude a variable from an optimization, set Optimize to
false, either in the name-value argument of optimizableVariable, or by dot notation:
xvar.Optimize = false;
Tip
There are two names associated with an
optimizableVariable:The MATLAB® workspace variable name
The name of the variable in the optimization
For example,
xvar = optimizableVariable('spacevar',[1,100]);xvaris the MATLAB workspace variable, and'spacevar'is the variable in the optimization.Use these names as follows:
Use
xvaras an element in the vector of variables you pass tobayesopt. For example,results = bayesopt(fun,[xvar,tvar])
Use
'spacevar'as the name of the variable in the optimization. For example, in an objective function,function objective = mysvmfun(x,cdata,grp) SVMModel = fitcsvm(cdata,grp,'KernelFunction','rbf',... 'BoxConstraint',x.spacevar,... 'KernelScale',x.tvar); objective = kfoldLoss(crossval(SVMModel));
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