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. 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 с перекрестной проверкой с использованием 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

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

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

fun принимает x, a 1-by- 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 (вычислите параллельно). Для параллельных вычислений требуется Parallel Computing Toolbox™.

bayesopt выполняет параллельные целевые вычисления функции одновременно с параллельными рабочими. Для подробностей алгоритма см. Parallel Bayesian Optimization.

Пример: '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

Ограничения

свернуть все

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

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

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

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

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

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

Пример: '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

Функция, вызываемая после каждой итерации, задается как указатель на функцию или 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 * Вероятность (ошибка) - 1.

@plotObjectiveEvaluationTimeModel

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

@plotObjectiveModel

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

Графики трассировки - Применить ко всем DОписание
@plotObjective

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

@plotObjectiveEvaluationTime

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

@plotMinObjective

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

@plotElapsedTime

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

Можно написать свои собственные функции построения графика. Для получения дополнительной информации см. Bayesian Optimization Plot Functions.

Примечание

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

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

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

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

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

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

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

свернуть все

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

Примечание

Если только InitialX При этом он интерпретируется как исходные точки для оценки. Целевая функция оценивается как InitialX.

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

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

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

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

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

Нарушения ограничений связанных ограничений, заданные как N-by- 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'. The per-second модификатор указывает, что оптимизация зависит от времени запуска целевой функции. Для получения дополнительной информации см. Типы функций приобретения.

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

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

Введенный в R2016b