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
встречается с ошибкой, продолжает оптимизировать и автоматически обновляет байесовскую модель точек, которые приводят к ошибкам. Эта байесовская модель является Error model. bayesopt
включает модель Error в качестве связанного ограничения. См. «Сопряженные ограничения».
Когда ошибки существуют, можно построить график модели Error, установив bayesopt
PlotFcn
Пара "имя-значение" @plotConstraintModels
. Или можно ретроспективно вызвать plot
о результатах байесовской оптимизации и включить @plotConstraintModels
.