bayesopt
пытается минимизировать целевую функцию. Если, вместо этого, вы хотите максимизировать функцию, установить целевую функцию на отрицание функции, вы хотите максимизировать. Смотрите Функции Максимизации (MATLAB).
bayesopt
передает таблицу переменных к целевой функции. Переменные имеют имена и типы, которые вы объявляете; смотрите Переменные для Байесовой Оптимизации.
Целевая функция имеет следующую подпись:
[objective,coupledconstraints,userdata] = fun(x)
цель
Значение целевой функции в x
, действительном скаляре.
coupledconstraints
— Значение двойных ограничений, если любой (дополнительный вывод), вектор действительных значений. Отрицательная величина указывает, что ограничение удовлетворено, положительное значение указывает, что не удовлетворено. Для получения дополнительной информации смотрите Двойные Ограничения.
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
.