bayesopt
попытки минимизировать целевую функцию. Если, вместо этого, вы хотите максимизировать функцию, установить целевую функцию на отрицание функции, вы хотите максимизировать. Смотрите Функции Максимизации. Чтобы включать дополнительные параметры в целевую функцию, смотрите Функции Параметризации.
bayesopt
передает таблицу переменных к целевой функции. Переменные имеют имена и типы, которые вы объявляете; смотрите Переменные для Байесовой Оптимизации.
Целевая функция имеет следующую подпись:
[objective,coupledconstraints,userdata] = fun(x)
objective
— Значение целевой функции в 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;
Использовать целевую функцию, принимая тот cdata
и grp
существуйте в рабочей области, создайте анонимную функцию, которая включает данные, как описано в Параметризации Функций.
fun = @(x)mysvmfun(x,cdata,grp);
results = bayesopt(fun,vars) % Assumes vars exists
bayesopt
считает вашу целевую функцию, чтобы возвратить ошибку, когда целевая функция возвращает что-либо кроме конечного действительного скаляра. Например, если ваша целевая функция возвращает комплексное число, NaN
Inf
, или матрица больше чем с одной записью, затем bayesopt
считает что ваши ошибки целевой функции. Если bayesopt
сталкивается с ошибкой, она продолжает оптимизировать, и автоматически обновляет модель Bayesian точек тот вывод к ошибкам. Этой моделью Bayesian является Error model. bayesopt
включает модель Error как двойное ограничение. Смотрите Двойные Ограничения.
Когда ошибки существуют, можно построить модель Error путем установки bayesopt
PlotFcn
пара "имя-значение" @plotConstraintModels
. Или можно ретроспективно вызвать plot
на результатах Байесовой оптимизации, и включают @plotConstraintModels
.