exponenta event banner

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

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

bayesopt пытается минимизировать объективную функцию. Если вместо этого требуется максимизировать функцию, установите для целевой функции отрицательное значение функции, которую необходимо максимизировать. См. раздел Максимизация функций. Сведения о включении дополнительных параметров в целевую функцию см. в разделе Параметризация функций.

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

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

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

Использование целевой функции при условии, что cdata и grp существует в рабочей области, создайте анонимную функцию, включающую данные, как описано в разделе Параметризация функций.

fun = @(x)mysvmfun(x,cdata,grp);
results = bayesopt(fun,vars) % Assumes vars exists

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

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

При наличии ошибок можно распечатать модель ошибок, установив bayesopt PlotFcn пара имя-значение @plotConstraintModels. Или можно ретроспективно позвонить plot по результатам байесовской оптимизации и включить @plotConstraintModels.

Связанные темы