exponenta event banner

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'.

Для воспроизводимости задайте случайное начальное число, задайте раздел и установите значение 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. The axes 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. The axes 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: 85.9010
                         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. Подробности модели приведены в разделе Оптимизация кросс-проверенного классификатора SVM с использованием байесопта.

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

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

Возврат наиболее подходящей точки в байесовской модели 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 пара имя-значение true, a parallel.pool.Constant(Панель инструментов параллельных вычислений), Value является дескриптором функции. Как правило, fun возвращает меру потери (например, ошибку неправильной классификации) для модели машинного обучения, которая имеет настраиваемые гиперпараметры для управления ее обучением. 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 должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как 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

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

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

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

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

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

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

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

Параллельное вычисление, указанное как false (не вычислять параллельно) или true (вычислять параллельно). Параллельные вычисления требуют Toolbox™ параллельных вычислений.

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

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

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

Метод вменения для значений параллельных целевых функций работника, указанных как '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

Ограничения

свернуть все

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

Дополнительные сведения см. в разделе Детерминированные ограничения - XConstringFcn.

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

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

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

Дополнительные сведения см. в разделе Условные зависимости - УсловияFcn.

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

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

Число связанных ограничений, указанное как положительное целое число. Дополнительные сведения см. в разделе Связанные зависимости.

Примечание

NumCoupledConstraints требуется при наличии связанных зависимостей.

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

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

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

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

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

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

свернуть все

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

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

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

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

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

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

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

    • Infeas - Нарушено по крайней мере одно ограничение.

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

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

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

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

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

  • @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', дескриптор функции или массив ячеек дескрипторов функции. Функция графика может остановить решатель и выполнять произвольные вычисления, включая создание переменных, в дополнение к печати.

Не указывать функцию печати как [].

'all' вызывает все встроенные функции печати. Укажите несколько функций печати, используя массив ячеек дескрипторов функций.

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

Графики модели - Применить при D ≤ 2Описание
@plotAcquisitionFunction

Постройте график поверхности функции сбора данных.

@plotConstraintModels

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

Также постройте график P (осуществимой) поверхности.

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

Ошибка на графике = 2 * Вероятность (ошибка) - 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, указывается как lengt-N вектор, где N - количество точек оценки.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

свернуть все

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

Подробнее

свернуть все

Связанные зависимости

Связанные ограничения - это ограничения, значение которых является результатом вычисления целевой функции. См. раздел Связанные зависимости.

Совет

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

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

    • Задается параллельное выполнение байесовской оптимизации. Из-за непродуктивности параллельной синхронизации параллельная байесовская оптимизация не обязательно дает воспроизводимые результаты. Дополнительные сведения см. в разделе Параллельная байесовская оптимизация.

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

Представлен в R2016b