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