Переменные для байесовой оптимизации

Синтаксис для создания переменных оптимизации

Для каждой переменной в вашей целевой функции создайте объект описания переменной использование optimizableVariable. Каждая переменная имеет уникальное имя и область значений значений. Минимальный синтаксис для переменного создания

variable = optimizableVariable(Name,Range)

Эта функция создает действительную переменную, которая лежит в диапазоне от нижней границы Range(1) к верхней границе Range(2).

Можно задать три типа переменных в Type аргумент значения имени:

  • 'real' — Непрерывные вещественные значения между конечными границами. Дайте Range как двухэлементный векторный [lower upper], которые представляют нижние и верхние границы.

  • 'integer' — Целочисленные значения между конечными границами, похожими на 'real'.

  • 'categorical' — Массив ячеек имен возможных значений, таких как {'red','green','blue'}, то, что вы задаете в Range аргумент.

Для 'real' или 'integer' переменные, можно задать это bayesopt поисковые запросы на масштабируемом журналом пробеле путем установки Transform аргумент значения имени к 'log'. Для этого преобразования гарантируйте что нижняя граница в Range строго положительно для 'real' и неотрицательный для 'integer'.

Включайте переменные для bayesopt как вектор во втором аргументе.

results = bayesopt(fun,[xvar,ivar,rvar])

Чтобы исключить переменную из оптимизации, установите Optimize к false, любой в аргументе значения имени optimizableVariable, или записью через точку:

xvar.Optimize = false;

Совет

  • Существует два имени, сопоставленные с optimizableVariable:

    • MATLAB® имя переменной рабочей области

    • Имя переменной в оптимизации

    Например,

    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));

Переменные для примеров оптимизации

Действительная переменная от 0 до 1:

var1 = optimizableVariable('xvar',[0 1])
var1 = 
  optimizableVariable with properties:

         Name: 'xvar'
        Range: [0 1]
         Type: 'real'
    Transform: 'none'
     Optimize: 1

Целочисленная переменная от 0 до 1 000 на логарифмической шкале:

var2 = optimizableVariable('ivar',[0 1000],'Type','integer','Transform','log')
var2 = 
  optimizableVariable with properties:

         Name: 'ivar'
        Range: [0 1000]
         Type: 'integer'
    Transform: 'log'
     Optimize: 1

Категориальная переменная цветов радуги:

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

Похожие темы