bayesopt

Выберите оптимальные гиперпараметры машинного обучения с помощью Байесовой оптимизации

Описание

пример

results = bayesopt(fun,vars) попытки найти значения vars это минимизирует fun(vars).

Примечание

Чтобы включать дополнительные параметры в целевую функцию, смотрите Функции Параметризации.

пример

results = bayesopt(fun,vars,Name,Value) изменяет процесс оптимизации согласно Name,Value аргументы.

Примеры

свернуть все

В этом примере показано, как создать BayesianOptimization объект при помощи bayesopt минимизировать потерю перекрестной проверки.

Оптимизируйте гиперпараметры классификатора KNN для ionosphere данные, то есть, находят гиперпараметры KNN, которые минимизируют потерю перекрестной проверки. Имейте bayesopt минимизируйте по следующим гиперпараметрам:

  • Размеры самого близкого окружения от 1 до 30

  • Расстояние функционирует 'chebychev', 'euclidean', и 'minkowski'.

Для воспроизводимости установите случайный seed, установите раздел и установите AcquisitionFunctionName опция к 'expected-improvement-plus'. Чтобы подавить итеративное отображение, установите 'Verbose' к 0. Передайте раздел c и подходящие данные X и Y к целевой функции fun путем создания fun как анонимная функция, которая включает эти данные. Смотрите Функции Параметризации.

load ionosphere
rng default
num = optimizableVariable('n',[1,30],'Type','integer');
dst = optimizableVariable('dst',{'chebychev','euclidean','minkowski'},'Type','categorical');
c = cvpartition(351,'Kfold',5);
fun = @(x)kfoldLoss(fitcknn(X,Y,'CVPartition',c,'NumNeighbors',x.n,...
    'Distance',char(x.dst),'NSMethod','exhaustive'));
results = bayesopt(fun,[num,dst],'Verbose',0,...
    'AcquisitionFunctionName','expected-improvement-plus')

Figure contains an axes object. The axes object with title Objective function model contains 5 objects of type line, surface, contour. These objects represent Observed points, Model mean, Next point, Model minimum feasible.

Figure contains an axes object. The axes object with title Min objective vs. Number of function evaluations contains 2 objects of type line. These objects represent Min observed objective, Estimated min objective.

results = 
  BayesianOptimization with properties:

                      ObjectiveFcn: [function_handle]
              VariableDescriptions: [1x2 optimizableVariable]
                           Options: [1x1 struct]
                      MinObjective: 0.1197
                   XAtMinObjective: [1x2 table]
             MinEstimatedObjective: 0.1213
          XAtMinEstimatedObjective: [1x2 table]
           NumObjectiveEvaluations: 30
                  TotalElapsedTime: 27.7297
                         NextPoint: [1x2 table]
                            XTrace: [30x2 table]
                    ObjectiveTrace: [30x1 double]
                  ConstraintsTrace: []
                     UserDataTrace: {30x1 cell}
      ObjectiveEvaluationTimeTrace: [30x1 double]
                IterationTimeTrace: [30x1 double]
                        ErrorTrace: [30x1 double]
                  FeasibilityTrace: [30x1 logical]
       FeasibilityProbabilityTrace: [30x1 double]
               IndexOfMinimumTrace: [30x1 double]
             ObjectiveMinimumTrace: [30x1 double]
    EstimatedObjectiveMinimumTrace: [30x1 double]

Двойное ограничение является тем, которое может быть оценено только путем выполнения целевой функции. В этом случае целевая функция является перекрестной подтвержденной потерей модели SVM. Двойное ограничение состоит в том, что количество векторов поддержки равняется не больше, чем 100. Детали модели находятся в, Оптимизируют перекрестный Подтвержденный Классификатор Используя bayesopt.

Создайте данные для классификации.

rng default
grnpop = mvnrnd([1,0],eye(2),10);
redpop = mvnrnd([0,1],eye(2),10);
redpts = zeros(100,2);
grnpts = redpts;
for i = 1:100
    grnpts(i,:) = mvnrnd(grnpop(randi(10),:),eye(2)*0.02);
    redpts(i,:) = mvnrnd(redpop(randi(10),:),eye(2)*0.02);
end
cdata = [grnpts;redpts];
grp = ones(200,1);
grp(101:200) = -1;
c = cvpartition(200,'KFold',10);
sigma = optimizableVariable('sigma',[1e-5,1e5],'Transform','log');
box = optimizableVariable('box',[1e-5,1e5],'Transform','log');

Целевая функция является потерей перекрестной проверки модели SVM для раздела c. Двойное ограничение является количеством векторов поддержки минус 100.5. Это гарантирует, что 100 векторов поддержки дают отрицательное ограничительное значение, но 101 вектор поддержки дает положительное значение. Модель имеет 200 точек данных, таким образом, двойной ограничительный диапазон значений от-99.5 (всегда существует по крайней мере один вектор поддержки) к 99,5. Положительные значения означают, что ограничению не удовлетворяют.

function [objective,constraint] = mysvmfun(x,cdata,grp,c)
SVMModel = fitcsvm(cdata,grp,'KernelFunction','rbf',...
    'BoxConstraint',x.box,...
    'KernelScale',x.sigma);
cvModel = crossval(SVMModel,'CVPartition',c);
objective = kfoldLoss(cvModel);
constraint = sum(SVMModel.IsSupportVector)-100.5;

Передайте раздел c и подходящие данные cdata и grp к целевой функции fun путем создания fun как анонимная функция, которая включает эти данные. Смотрите Функции Параметризации.

fun = @(x)mysvmfun(x,cdata,grp,c);

Установите NumCoupledConstraints к 1 таким образом, оптимизатор знает, что существует двойное ограничение. Установите опции строить ограничительную модель.

results = bayesopt(fun,[sigma,box],'IsObjectiveDeterministic',true,...
    'NumCoupledConstraints',1,'PlotFcn',...
    {@plotMinObjective,@plotConstraintModels},...
    'AcquisitionFunctionName','expected-improvement-plus','Verbose',0);

Большинство точек приводит к неосуществимому количеству векторов поддержки.

Улучшите скорость Байесовой оптимизации при помощи параллельной оценки целевой функции.

Подготовьте переменные и целевую функцию для Байесовой оптимизации.

Целевая функция является коэффициентом ошибок перекрестной проверки для данных об ионосфере, бинарной проблемы классификации. Используйте fitcsvm как классификатор, с BoxConstraint и KernelScale как параметры, чтобы оптимизировать.

load ionosphere
box = optimizableVariable('box',[1e-4,1e3],'Transform','log');
kern = optimizableVariable('kern',[1e-4,1e3],'Transform','log');
vars = [box,kern];
fun = @(vars)kfoldLoss(fitcsvm(X,Y,'BoxConstraint',vars.box,'KernelScale',vars.kern,...
    'Kfold',5));

Ищите параметры, которые дают самую низкую ошибку перекрестной проверки при помощи параллельной Байесовой оптимизации.

results = bayesopt(fun,vars,'UseParallel',true);
Copying objective function to workers...
Done copying objective function to workers.
|===============================================================================================================|
| Iter | Active  | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |          box |         kern |
|      | workers | result |             | runtime     | (observed)  | (estim.)    |              |              |
|===============================================================================================================|
|    1 |       2 | Accept |      0.2735 |     0.56171 |     0.13105 |     0.13108 |    0.0002608 |       0.2227 |
|    2 |       2 | Accept |     0.35897 |      0.4062 |     0.13105 |     0.13108 |       3.6999 |       344.01 |
|    3 |       2 | Accept |     0.13675 |     0.42727 |     0.13105 |     0.13108 |      0.33594 |      0.39276 |
|    4 |       2 | Accept |     0.35897 |      0.4453 |     0.13105 |     0.13108 |     0.014127 |       449.58 |
|    5 |       2 | Best   |     0.13105 |     0.45503 |     0.13105 |     0.13108 |      0.29713 |       1.0859 |
|    6 |       6 | Accept |     0.35897 |     0.16605 |     0.13105 |     0.13108 |       8.1878 |        256.9 |
|    7 |       5 | Best   |     0.11396 |     0.51146 |     0.11396 |     0.11395 |       8.7331 |       0.7521 |
|    8 |       5 | Accept |     0.14245 |     0.24943 |     0.11396 |     0.11395 |    0.0020774 |     0.022712 |
|    9 |       6 | Best   |     0.10826 |      4.0711 |     0.10826 |     0.10827 |    0.0015925 |    0.0050225 |
|   10 |       6 | Accept |     0.25641 |      16.265 |     0.10826 |     0.10829 |   0.00057357 |   0.00025895 |
|   11 |       6 | Accept |      0.1339 |      15.581 |     0.10826 |     0.10829 |       1.4553 |     0.011186 |
|   12 |       6 | Accept |     0.16809 |      19.585 |     0.10826 |     0.10828 |      0.26919 |   0.00037649 |
|   13 |       6 | Accept |     0.20513 |      18.637 |     0.10826 |     0.10828 |       369.59 |     0.099122 |
|   14 |       6 | Accept |     0.12536 |     0.11382 |     0.10826 |     0.10829 |       5.7059 |       2.5642 |
|   15 |       6 | Accept |     0.13675 |        2.63 |     0.10826 |     0.10828 |       984.19 |       2.2214 |
|   16 |       6 | Accept |     0.12821 |      2.0743 |     0.10826 |     0.11144 |    0.0063411 |    0.0090242 |
|   17 |       6 | Accept |      0.1339 |      0.1939 |     0.10826 |     0.11302 |   0.00010225 |    0.0076795 |
|   18 |       6 | Accept |     0.12821 |     0.20933 |     0.10826 |     0.11376 |       7.7447 |       1.2868 |
|   19 |       4 | Accept |     0.55556 |      17.564 |     0.10826 |     0.10828 |    0.0087593 |   0.00014486 |
|   20 |       4 | Accept |      0.1396 |      16.473 |     0.10826 |     0.10828 |     0.054844 |     0.004479 |
|===============================================================================================================|
| Iter | Active  | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |          box |         kern |
|      | workers | result |             | runtime     | (observed)  | (estim.)    |              |              |
|===============================================================================================================|
|   21 |       4 | Accept |      0.1339 |     0.17127 |     0.10826 |     0.10828 |       9.2668 |       1.2171 |
|   22 |       4 | Accept |     0.12821 |    0.089065 |     0.10826 |     0.10828 |       12.265 |       8.5455 |
|   23 |       4 | Accept |     0.12536 |    0.073586 |     0.10826 |     0.10828 |       1.3355 |       2.8392 |
|   24 |       4 | Accept |     0.12821 |     0.08038 |     0.10826 |     0.10828 |       131.51 |       16.878 |
|   25 |       3 | Accept |     0.11111 |      10.687 |     0.10826 |     0.10867 |       1.4795 |     0.041452 |
|   26 |       3 | Accept |     0.13675 |     0.18626 |     0.10826 |     0.10867 |       2.0513 |      0.70421 |
|   27 |       6 | Accept |     0.12821 |    0.078559 |     0.10826 |     0.10868 |       980.04 |        44.19 |
|   28 |       5 | Accept |     0.33048 |    0.089844 |     0.10826 |     0.10843 |      0.41821 |       10.208 |
|   29 |       5 | Accept |     0.16239 |     0.12688 |     0.10826 |     0.10843 |       172.39 |       141.43 |
|   30 |       5 | Accept |     0.11966 |     0.14597 |     0.10826 |     0.10846 |       639.15 |        14.75 |

__________________________________________________________
Optimization completed.
MaxObjectiveEvaluations of 30 reached.
Total function evaluations: 30
Total elapsed time: 48.2085 seconds.
Total objective function evaluation time: 128.3472

Best observed feasible point:
       box         kern   
    _________    _________

    0.0015925    0.0050225

Observed objective function value = 0.10826
Estimated objective function value = 0.10846
Function evaluation time = 4.0711

Best estimated feasible point (according to models):
       box         kern   
    _________    _________

    0.0015925    0.0050225

Estimated objective function value = 0.10846
Estimated function evaluation time = 2.8307

Возвратите лучшую допустимую точку в модели Bayesian results при помощи bestPoint функция. Используйте критерий по умолчанию min-visited-upper-confidence-interval, который определяет лучшую допустимую точку как посещаемую точку, которая минимизирует верхний доверительный интервал на значении целевой функции.

zbest = bestPoint(results)
zbest=1×2 table
       box         kern   
    _________    _________

    0.0015925    0.0050225

Таблица zbest содержит оптимальные ориентировочные стоимости для 'BoxConstraint' и 'KernelScale' аргументы в виде пар имя-значение. Используйте эти значения, чтобы обучить новый оптимизированный классификатор.

Mdl = fitcsvm(X,Y,'BoxConstraint',zbest.box,'KernelScale',zbest.kern);

Заметьте, что оптимальные параметры находятся в Mdl.

Mdl.BoxConstraints(1)
ans = 0.0016
Mdl.KernelParameters.Scale
ans = 0.0050

Входные параметры

свернуть все

Целевая функция в виде указателя на функцию или, когда UseParallel парой "имя-значение" является trueA parallel.pool.Constant (Parallel Computing Toolbox), чей Value указатель на функцию. Как правило, fun возвращает меру потери (такой как misclassification ошибка) для модели машинного обучения, которая имеет настраиваемые гиперпараметры, чтобы управлять ее обучением. fun имеет эти подписи:

objective = fun(x)
% or
[objective,constraints] = fun(x)
% or
[objective,constraints,UserData] = fun(x)

fun принимает x, 1 D таблица значений переменных, и возвращает objective, действительный скаляр, представляющий значение целевой функции fun(x).

Опционально, fun также возвращается:

  • constraints, вектор действительных чисел двойных нарушений ограничений. Для определения смотрите Двойные Ограничения. constraint(j) > 0 среднее ограничение j нарушен. constraint(j) < 0 среднее ограничение j удовлетворен.

  • UserData, сущность любого типа (такого как скаляр, матрица, структура или объект). Для примера пользовательской функции построения графика, которая использует UserData, смотрите Создают Пользовательскую Функцию построения графика.

Для получения дополнительной информации об использовании parallel.pool.Constant с bayesopt, смотрите Размещение Целевой функции на Рабочих.

Пример: @objfun

Типы данных: function_handle

Описания переменной в виде вектора из optimizableVariable объекты, задающие гиперпараметры, которые будут настроены.

Пример: [X1,X2], где X1 и X2 optimizableVariable объекты

Аргументы name-value

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: results = bayesopt(fun,vars,'AcquisitionFunctionName','expected-improvement-plus')
Управление алгоритмом

свернуть все

Функция, чтобы выбрать следующую точку оценки в виде одного из перечисленного выбора.

Захват функционирует, чьи имена включают per-second не приводите к восстанавливаемым результатам, потому что оптимизация зависит от времени выполнения целевой функции. Захват функционирует, чьи имена включают plus измените их поведение, когда они сверхиспользуют область. Для получения дополнительной информации смотрите Типы Функции Захвата.

Пример: 'AcquisitionFunctionName','expected-improvement-per-second'

Задайте детерминированную целевую функцию в виде false или true. Если fun является стохастическим (то есть, fun(x) может возвратить различные значения для того же x), затем установите IsObjectiveDeterministic к false. В этом случае, bayesopt оценивает уровень шума во время оптимизации.

Пример: 'IsObjectiveDeterministic',true

Типы данных: логический

Склонность исследовать в виде положительного действительного. Применяется к 'expected-improvement-plus' и 'expected-improvement-per-second-plus' функции захвата. Смотрите Плюс.

Пример: 'ExplorationRatio',0.2

Типы данных: double

Соответствуйте Гауссовой Модели процесса к GPActiveSetSize или меньше точек в виде положительного целого числа. Когда bayesopt посетил больше, чем GPActiveSetSize точки, последующие итерации, которые используют модель GP, подбирают модель к GPActiveSetSize 'points'. bayesopt выбирает точки однородно наугад без замены среди посещаемых точек. Используя меньшее количество точек приводит к более быстрому подбору кривой модели GP, за счет возможно менее точного подбора кривой.

Пример: 'GPActiveSetSize',80

Типы данных: double

Вычислите параллельно в виде false (не вычисляйте параллельно), или true (вычислите параллельно). Вычисление параллельно требует Parallel Computing Toolbox™.

bayesopt выполняет параллельные оценки целевой функции одновременно на параллельных рабочих. Для алгоритмических деталей смотрите Параллельную Байесовую Оптимизацию.

Пример: 'UseParallel',true

Типы данных: логический

Метод обвинения для параллельных значений целевой функции рабочего в виде 'clipped-model-prediction', 'model-prediction', 'max-observed', или 'min-observed'. Сгенерировать новую точку, чтобы оценить, bayesopt соответствует Гауссову процессу ко всем точкам, включая точки, оцениваемые на рабочих. Соответствовать процессу, bayesopt приписывает значения целевой функции для точек, которые находятся в настоящее время на рабочих. ParallelMethod задает метод, используемый для обвинения.

  • 'clipped-model-prediction' — Припишите максимум этих количеств:

    • Означайте Гауссово предсказание процесса в точке x

    • Минимальную наблюдаемую целевую функцию среди допустимых точек посещают

    • Минимальное предсказание модели среди всех допустимых точек

  • 'model-prediction' — Припишите среднее Гауссово предсказание процесса в точке x.

  • 'max-observed' — Припишите максимальное наблюдаемое значение целевой функции среди допустимых точек.

  • 'min-observed' — Припишите минимальное наблюдаемое значение целевой функции среди допустимых точек.

Пример: 'ParallelMethod','max-observed'

Допуск на количестве активных параллельных рабочих в виде положительного целого числа. После bayesopt присваивает точку, чтобы оценить, и прежде чем она вычислит новую точку, чтобы присвоить, она проверяет ли меньше, чем MinWorkerUtilization рабочие активны. Если так, bayesopt случайные точки присвоений внутри границ всем доступным рабочим. В противном случае, bayesopt вычисляет лучшую точку для одного рабочего. bayesopt создает случайные точки намного быстрее, чем подходящие точки, таким образом, это поведение приводит к более высокому использованию рабочих, за счет возможно более плохих точек. Для получения дополнительной информации смотрите Параллельную Байесовую Оптимизацию.

Пример: 'MinWorkerUtilization',3

Типы данных: double

Запуск и остановка

свернуть все

Оценка целевой функции ограничивает в виде положительного целого числа.

Пример: 'MaxObjectiveEvaluations',60

Типы данных: double

Ограничение по времени в виде положительного действительного. Ограничение по времени находится в секундах, как измерено tic и toc.

Время выполнения может превысить MaxTime потому что bayesopt не делает оценок функции обработки прерываний.

Пример: 'MaxTime',3600

Типы данных: double

Количество начальной оценки указывает в виде положительного целого числа. bayesopt выбирает эти точки случайным образом в переменных границах, согласно установке Transform установка для каждой переменной (универсальная форма для 'none', логарифмически распределенный для 'log').

Пример: 'NumSeedPoints',10

Типы данных: double

Ограничения

свернуть все

Детерминированные ограничения на переменные в виде указателя на функцию.

Для получения дополнительной информации смотрите Детерминированные Ограничения — XConstraintFcn.

Пример: 'XConstraintFcn',@xconstraint

Типы данных: function_handle

Условные переменные ограничения в виде указателя на функцию.

Для получения дополнительной информации смотрите Условные Ограничения — ConditionalVariableFcn.

Пример: 'ConditionalVariableFcn',@condfun

Типы данных: function_handle

Количество двойных ограничений в виде положительного целого числа. Для получения дополнительной информации смотрите Двойные Ограничения.

Примечание

NumCoupledConstraints требуется, когда вы связали ограничения.

Пример: 'NumCoupledConstraints',3

Типы данных: double

Индикация относительно того, детерминированы ли двойные ограничения в виде логического вектора из длины NumCoupledConstraints. Для получения дополнительной информации смотрите Двойные Ограничения.

Пример: 'AreCoupledConstraintsDeterministic',[true,false,true]

Типы данных: логический

Отчеты, графики и остановка

свернуть все

Уровень отображения командной строки в виде 0, 1, или 2.

  • 0 — Никакое отображение командной строки.

  • 1 — В каждой итерации отобразите номер итерации, отчет результата (см. следующий абзац), модель целевой функции, время оценки целевой функции, лучше всего (самое низкое) наблюдаемое значение целевой функции, лучше всего (самое низкое) предполагаемое значение целевой функции и наблюдаемые ограничительные значения (если таковые имеются). При оптимизации параллельно, отображение также включает столбец, показывающий количество активных рабочих, считаемых после присвоения задания следующему рабочему.

    Отчет результата для каждой итерации является одним из следующего:

    • Accept — Целевая функция возвращает конечное значение, и всем ограничениям удовлетворяют.

    • Best — Ограничениям удовлетворяют, и целевая функция возвращает самое низкое значение среди допустимых точек.

    • Error — Целевая функция возвращает значение, которое не является конечным действительным скаляром.

    • Infeas — По крайней мере одно ограничение нарушено.

  • 2 — То же самое как 1, добавляя диагностическую информацию, такую как время, чтобы выбрать следующий вопрос, модель подходящее время, индикация, которые "плюс" функции захвата объявляют сверхиспользование и параллельны рабочим, присваивается случайным точкам из-за низкого параллельного использования.

Пример: 'Verbose',2

Типы данных: double

Функция, вызванная после каждой итерации в виде указателя на функцию или cell-массива указателей на функцию. Выходная функция может остановить решатель и может выполнить произвольные вычисления, включая создание переменных или графический вывод. Задайте несколько выходных функций с помощью cell-массива указателей на функцию.

Существует две встроенных выходных функции:

  • @assignInBase — Создает BayesianOptimization экземпляр в каждой итерации и присвоениях это к переменной в базовом рабочем пространстве. Выберите имя переменной с помощью SaveVariableName пара "имя-значение".

  • @saveToFile — Создает BayesianOptimization экземпляр в каждой итерации и сохраняет его в файл в текущей папке. Выберите имя файла с помощью SaveFileName пара "имя-значение".

Можно записать собственные выходные функции. Для получения дополнительной информации смотрите Байесовы Выходные функции Оптимизации.

Пример: 'OutputFcn',{@saveToFile @myOutputFunction}

Типы данных: cell | function_handle

Имя файла для @saveToFile выходная функция в виде вектора символов или строкового скаляра. Имя файла может включать путь, такой как '../optimizations/September2.mat'.

Пример: 'SaveFileName','September2.mat'

Типы данных: char | string

Имя переменной для @assignInBase выходная функция в виде вектора символов или строкового скаляра.

Пример: 'SaveVariableName','September2Results'

Типы данных: char | string

Функция построения графика, названная после каждой итерации в виде 'all', указатель на функцию или cell-массив указателей на функцию. Функция построения графика может остановить решатель и может выполнить произвольные вычисления, включая создание переменных, в дополнение к графическому выводу.

Не задайте функцию построения графика как [].

'all' вызовы все встроенные функции построения графика. Задайте несколько функций построения графика с помощью cell-массива указателей на функцию.

Встроенные функции построения графика появляются в следующих таблицах.

Графики модели — применяются когда D ≤ 2Описание
@plotAcquisitionFunction

Постройте поверхность функции захвата.

@plotConstraintModels

Постройте каждую ограничительную поверхность модели. Отрицательные величины указывают на допустимые точки.

Также постройте P (выполнимая) поверхность.

Также постройте ошибочную модель, если она существует, который лежит в диапазоне от –1 к 1. Отрицательные величины означают, что модель, вероятно, не делает ошибки, положительные значения означают, что это, вероятно, делает ошибку. Модель:

Нанесенная на график ошибка = 2*Probability (ошибка) – 1.

@plotObjectiveEvaluationTimeModel

Постройте поверхность модели времени оценки целевой функции.

@plotObjectiveModel

Постройте fun поверхность модели, предполагаемое местоположение минимума и местоположение следующей предложенной точки, которая оценит. Для одномерных проблем постройте конверты один вероятный интервал выше и ниже средней функции и конвертов одно шумовое стандартное отклонение выше и ниже среднего значения.

Проследите графики — применяются ко всему DОписание
@plotObjective

Постройте каждое наблюдаемое значение функции по сравнению с количеством вычислений функции.

@plotObjectiveEvaluationTime

Постройте каждое наблюдаемое время выполнения вычисления функции по сравнению с количеством вычислений функции.

@plotMinObjective

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

@plotElapsedTime

График три кривые: общее прошедшее время оптимизации, общее время вычисления функции и общее моделирование и время выбора точки, все по сравнению с количеством вычислений функции.

Можно записать собственные функции построения графика. Для получения дополнительной информации смотрите Байесовы Функции построения графика Оптимизации.

Примечание

Когда существуют связанные ограничения, итеративное отображение и функции построения графика могут дать парадоксальные результаты, такие как:

  • Минимальный объективный график может увеличиться.

  • Оптимизация может объявить проблему, неосуществимую, даже когда она показала более раннюю допустимую точку.

Причина этого поведения состоит в том, что решение о том, выполнима ли точка, может измениться, в то время как оптимизация прогрессирует. bayesopt определяет выполнимость относительно ее ограничительной модели и этой модели изменения как bayesopt оценивает точки. Таким образом, “минимальный объективный” график может увеличиться, когда минимальную точку позже считают неосуществимой, и итеративное отображение может показать допустимую точку, которую позже считают неосуществимой.

Пример: 'PlotFcn','all'

Типы данных: char | string | cell | function_handle

Инициализация

свернуть все

Начальная оценка указывает в виде N- D таблица, где N количество точек оценки и D количество переменных.

Примечание

Если только InitialX обеспечивается, это интерпретировано, когда начальная буква указывает, чтобы оценить. Целевая функция выполнена в InitialX.

Если какие-либо другие параметры инициализации также обеспечиваются, InitialX интерпретирован как предшествующие данные о вычислении функции. Целевая функция не выполнена. Любые отсутствующие значения установлены к NaN.

Типы данных: table

Объективные значения, соответствующие InitialXВ виде длины-N вектор, где N количество точек оценки.

Пример: 'InitialObjective',[17;-3;-12.5]

Типы данных: double

Нарушения ограничений двойных ограничений в виде N- K матрица, где N количество точек оценки и K количество двойных ограничений. Для получения дополнительной информации смотрите Двойные Ограничения.

Типы данных: double

Ошибки для InitialXВ виде длины-N вектор с записями -1 или 1, где N количество точек оценки. Задайте -1 ни для какой ошибки и 1 для ошибки.

Пример: 'InitialErrorValues',[-1,-1,-1,-1,1]

Типы данных: double

Исходные данные, соответствующие InitialXВ виде длины-N вектор ячейки, где N количество точек оценки.

Пример: 'InitialUserData',{2,3,-1}

Типы данных: cell

Времена оценки целевой функции при InitialXВ виде длины-N вектор, где N количество точек оценки. Время измеряется в секундах.

Типы данных: double

Времена для первого N итерации в виде длины-N вектор, где N количество точек оценки. Время измеряется в секундах.

Типы данных: double

Выходные аргументы

свернуть все

Байесовы результаты оптимизации, возвращенные как BayesianOptimization объект.

Больше о

свернуть все

Двойные ограничения

Двойные ограничения являются теми ограничениями, значение которых прибывает из вычисления целевой функции. Смотрите Двойные Ограничения.

Советы

  • Байесова оптимизация не восстанавливаема, если одно из этих условий существует:

    • Вы задаете функцию захвата, имя которой включает per-second, такой как 'expected-improvement-per-second'. per-second модификатор указывает, что оптимизация зависит от времени выполнения целевой функции. Для получения дополнительной информации смотрите Типы Функции Захвата.

    • Вы задаете, чтобы запустить Байесовую оптимизацию параллельно. Из-за невоспроизводимости синхронизации параллели, параллельная Байесова оптимизация не обязательно приводит к восстанавливаемым результатам. Для получения дополнительной информации смотрите Параллельную Байесовую Оптимизацию.

Расширенные возможности

Введенный в R2017b