Байесовы целевые функции оптимизации

Синтаксис целевой функции

bayesopt попытки минимизировать целевую функцию. Если, вместо этого, вы хотите максимизировать функцию, установить целевую функцию на отрицание функции, вы хотите максимизировать. Смотрите Функции Максимизации (MATLAB). Чтобы включать дополнительные параметры в целевую функцию, смотрите Функции Параметризации (MATLAB).

bayesopt передает таблицу переменных к целевой функции. Переменные имеют имена и типы, которые вы объявляете; смотрите Переменные для Байесовой Оптимизации.

Целевая функция имеет следующую подпись:

[objective,coupledconstraints,userdata] = fun(x)
  1. objective — Значение целевой функции в x, действительный скаляр.

  2. coupledconstraints — Значение двойных ограничений, если любой (дополнительный выход), вектор действительных значений. Отрицательная величина указывает, что ограничению удовлетворяют, положительное значение указывает, что ему не удовлетворяют. Для получения дополнительной информации смотрите Двойные Ограничения.

  3. userdata — Дополнительные данные, которые ваша функция может возвратить для дальнейшего использования, такого как графический вывод или логгирование (дополнительный выход). Для примера смотрите Байесовы Функции построения графика Оптимизации.

Пример целевой функции

Эта целевая функция возвращает потерю в перекрестном подтвержденном припадке модели SVM параметрами box и sigma. Цель также возвращает двойную ограничительную функцию, которая является положительна (неосуществимый), когда количество векторов поддержки превышает 100 (100, выполнимо, 101 не).

function [objective,constraint] = mysvmfun(x,cdata,grp)
SVMModel = fitcsvm(cdata,grp,'KernelFunction','rbf',...
    'BoxConstraint',x.box,...
    'KernelScale',x.sigma);
objective = kfoldLoss(crossval(SVMModel));
constraint = sum(SVMModel.SupportVectors) - 100.5;

Использовать целевую функцию, принимая тот cdata и grp существуйте в рабочей области, создайте анонимную функцию, которая включает данные, как описано в Параметризации Функций (MATLAB).

fun = @(x)mysvmfun(x,cdata,grp);
results = bayesopt(fun,vars) % Assumes vars exists

Ошибки целевой функции

bayesopt считает вашу целевую функцию, чтобы возвратить ошибку, когда целевая функция возвращает что-либо кроме конечного действительного скаляра. Например, если ваша целевая функция возвращает комплексное число, NaNInf, или матрица больше чем с одной записью, затем bayesopt считает что ваши ошибки целевой функции. Если bayesopt сталкивается с ошибкой, она продолжает оптимизировать, и автоматически обновляет модель Bayesian точек тот вывод к ошибкам. Этой моделью Bayesian является Error model. bayesopt включает модель Error как двойное ограничение. Смотрите Двойные Ограничения.

Когда ошибки существуют, можно построить модель Error путем установки bayesopt PlotFcn пара "имя-значение" @plotConstraintModels. Или можно ретроспективно вызвать plot на результатах Байесовой оптимизации, и включают @plotConstraintModels.

Похожие темы