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

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

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

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

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

[objective,coupledconstraints,userdata] = fun(x)
  1. цель Значение целевой функции в 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;

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

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

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

Похожие темы