Выберите оптимальные гиперпараметры машинного обучения с помощью байесовской оптимизации
пытается найти значения results = bayesopt(fun,vars)vars которые минимизируют fun(vars).
Примечание
Сведения о включении дополнительных параметров в целевую функцию см. в разделе Параметризация функций.
изменяет процесс оптимизации в соответствии с results = bayesopt(fun,vars,Name,Value)Name,Value аргументы.
BayesianOptimization Использование объекта bayesoptВ этом примере показано, как создать 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')


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
fun - Целевая функцияparallel.pool.Constant чей Value является дескриптором функцииЦелевая функция, указанная как дескриптор функции или, если 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
vars - Описания переменныхoptimizableVariable объекты, определяющие гиперпараметры для настройкиОписания переменных, указанные как вектор optimizableVariable объекты, определяющие гиперпараметры для настройки.
Пример: [X1,X2], где X1 и X2 являются optimizableVariable объекты
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
results = bayesopt(fun,vars,'AcquisitionFunctionName','expected-improvement-plus')'AcquisitionFunctionName' - Функция для выбора следующей точки оценки'expected-improvement-per-second-plus' (по умолчанию) | 'expected-improvement' | 'expected-improvement-plus' | 'expected-improvement-per-second' | 'lower-confidence-bound' | 'probability-of-improvement'Функция для выбора следующей точки вычисления, указанной как один из перечисленных вариантов.
Функции приобретения, имена которых включают per-second не дают воспроизводимых результатов, поскольку оптимизация зависит от времени выполнения целевой функции. Функции приобретения, имена которых включают plus изменять их поведение при чрезмерной эксплуатации области. Для получения дополнительной информации см. Типы функций сбора данных.
Пример: 'AcquisitionFunctionName','expected-improvement-per-second'
'IsObjectiveDeterministic' - Определение детерминированной целевой функцииfalse (по умолчанию) | trueУказать детерминированную целевую функцию, указанную как false или true. Если fun является стохастическим (то есть fun(x) может возвращать различные значения для одного и того же x), затем установите IsObjectiveDeterministic кому false. В этом случае bayesopt оценивает уровень шума во время оптимизации.
Пример: 'IsObjectiveDeterministic',true
Типы данных: logical
'ExplorationRatio' - Склонность к исследованию0.5 (по умолчанию) | положительный вещественный'GPActiveSetSize' - Подогнать модель Гауссова процесса к GPActiveSetSize или меньше баллов300 (по умолчанию) | положительное целое числоПодогнать модель Гауссова процесса к GPActiveSetSize или меньше точек, указанных как положительное целое число. Когда bayesopt посетил более GPActiveSetSize точки, последующие итерации, которые используют модель GP, соответствуют модели GPActiveSetSize точки. bayesopt выбирает точки равномерно случайным образом без замены среди посещаемых точек. Использование меньшего количества точек приводит к более быстрой установке модели GP за счет, возможно, менее точной установки.
Пример: 'GPActiveSetSize',80
Типы данных: double
'UseParallel' - Параллельное вычислениеfalse (по умолчанию) | trueПараллельное вычисление, указанное как false (не вычислять параллельно) или true (вычислять параллельно). Параллельные вычисления требуют Toolbox™ параллельных вычислений.
bayesopt выполняет параллельные оценки объективных функций параллельно с параллельными работниками. Алгоритмические сведения см. в разделе Параллельная байесовская оптимизация.
Пример: 'UseParallel',true
Типы данных: logical
'ParallelMethod' - Метод вменения для параллельных значений целевой функции работника'clipped-model-prediction' (по умолчанию) | 'model-prediction' | 'max-observed' | 'min-observed'Метод вменения для значений параллельных целевых функций работника, указанных как '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'
'MinWorkerUtilization' - Допуск по количеству активных параллельных работниковfloor(0.8*Nworkers) (по умолчанию) | положительное целое числоДопуск по количеству активных параллельных работников, указанный как положительное целое число. После bayesopt назначает точку для вычисления и перед вычислением новой точки для назначения проверяет, меньше ли MinWorkerUtilization рабочие активны. Если да, bayesopt назначает случайные точки в пределах границ всем доступным работникам. В противном случае bayesopt вычисляет наилучшую точку для одного работника. bayesopt создает случайные точки гораздо быстрее, чем подогнанные точки, поэтому такое поведение приводит к более высокому использованию работников, ценой возможно более бедных точек. Дополнительные сведения см. в разделе Параллельная байесовская оптимизация.
Пример: 'MinWorkerUtilization',3
Типы данных: double
'MaxObjectiveEvaluations' - Предел оценки целевой функции30 (по умолчанию) | положительное целое числоПредел вычисления целевой функции, заданный как положительное целое число.
Пример: 'MaxObjectiveEvaluations',60
Типы данных: double
'MaxTime' - Ограничение по времениInf (по умолчанию) | положительный вещественный'NumSeedPoints' - Количество пунктов первоначальной оценки4 (по умолчанию) | положительное целое числоКоличество начальных точек оценки, указанных как положительное целое число. bayesopt выбирает эти точки случайным образом в пределах переменных границ в соответствии с настройкой Transform установка для каждой переменной (равномерная для 'none', логарифмически разнесенные для 'log').
Пример: 'NumSeedPoints',10
Типы данных: double
'XConstraintFcn' - Детерминированные ограничения для переменных[] (по умолчанию) | дескриптор функцииДетерминированные ограничения для переменных, заданные как дескриптор функции.
Дополнительные сведения см. в разделе Детерминированные ограничения - XConstringFcn.
Пример: 'XConstraintFcn',@xconstraint
Типы данных: function_handle
'ConditionalVariableFcn' - Условные переменные ограничения[] (по умолчанию) | дескриптор функцииОграничения условной переменной, заданные как дескриптор функции.
Дополнительные сведения см. в разделе Условные зависимости - УсловияFcn.
Пример: 'ConditionalVariableFcn',@condfun
Типы данных: function_handle
'NumCoupledConstraints' - Количество связанных ограничений0 (по умолчанию) | положительное целое числоЧисло связанных ограничений, указанное как положительное целое число. Дополнительные сведения см. в разделе Связанные зависимости.
Примечание
NumCoupledConstraints требуется при наличии связанных зависимостей.
Пример: 'NumCoupledConstraints',3
Типы данных: double
'AreCoupledConstraintsDeterministic' - Указание того, являются ли связанные ограничения детерминированнымиtrue для всех связанных ограничений (по умолчанию) | логический векторИндикация того, являются ли связанные ограничения детерминированными, заданными как логический вектор длины NumCoupledConstraints. Дополнительные сведения см. в разделе Связанные зависимости.
Пример: 'AreCoupledConstraintsDeterministic',[true,false,true]
Типы данных: logical
'Verbose' - Уровень отображения командной строки1 (по умолчанию) | 0 | 2Уровень отображения командной строки, указанный как 0, 1, или 2.
0 - Нет отображения командной строки.
1 - при каждой итерации отображать номер итерации, отчет о результатах (см. следующий абзац), модель целевой функции, время оценки целевой функции, наилучшее (наименьшее) значение наблюдаемой целевой функции, наилучшее (наименьшее) оцененное значение целевой функции и наблюдаемые значения ограничений (если таковые имеются). При параллельной оптимизации дисплей также содержит столбец, показывающий количество активных работников, подсчитанное после назначения задания следующему работнику.
Отчет о результатах для каждой итерации является одним из следующих:
Accept - целевая функция возвращает конечное значение, и все ограничения удовлетворяются.
Best - Ограничения выполняются, и целевая функция возвращает наименьшее значение среди возможных точек.
Error - целевая функция возвращает значение, которое не является конечным действительным скаляром.
Infeas - Нарушено по крайней мере одно ограничение.
2 - То же, что и 1добавление диагностической информации, такой как время выбора следующей точки, время подгонки модели, указание на то, что «плюс» функции сбора объявляют чрезмерную эксплуатацию, а параллельные работники назначаются случайным точкам из-за низкого параллельного использования.
Пример: 'Verbose',2
Типы данных: double
'OutputFcn' - Функция, вызываемая после каждой итерации{} (по умолчанию) | дескриптор функции | массив ячеек дескрипторов функцииФункция, вызываемая после каждой итерации, заданная как дескриптор функции или массив ячеек дескрипторов функции. Функция вывода может остановить решатель и выполнять произвольные вычисления, включая создание переменных или печать. Укажите несколько выходных функций, используя массив ячеек дескрипторов функций.
Существует две встроенные функции вывода:
@assignInBase - Конструирует BayesianOptimization в каждой итерации и назначает ее переменной в базовой рабочей области. Выберите имя переменной с помощью SaveVariableName пара имя-значение.
@saveToFile - Конструирует BayesianOptimization в каждой итерации и сохраняет его в файл в текущей папке. Выберите имя файла с помощью SaveFileName пара имя-значение.
Можно создать собственные функции вывода. Дополнительные сведения см. в разделе Функции вывода байесовской оптимизации.
Пример: 'OutputFcn',{@saveToFile @myOutputFunction}
Типы данных: cell | function_handle
'SaveFileName' - Имя файла для @saveToFile функция вывода'BayesoptResults.mat' (по умолчанию) | символьный вектор | строковый скалярИмя файла для @saveToFile функция вывода, заданная как вектор символа или скаляр строки. Имя файла может содержать путь, например: '../optimizations/September2.mat'.
Пример: 'SaveFileName','September2.mat'
Типы данных: char | string
'SaveVariableName' - Имя переменной для @assignInBase функция вывода'BayesoptResults' (по умолчанию) | символьный вектор | строковый скалярИмя переменной для @assignInBase функция вывода, заданная как вектор символа или скаляр строки.
Пример: 'SaveVariableName','September2Results'
Типы данных: char | string
'PlotFcn' - Функция печати, вызываемая после каждой итерации{@plotObjectiveModel,@plotMinObjective} (по умолчанию) | 'all' | дескриптор функции | массив ячеек дескрипторов функцииФункция печати, вызываемая после каждой итерации, указанная как 'all', дескриптор функции или массив ячеек дескрипторов функции. Функция графика может остановить решатель и выполнять произвольные вычисления, включая создание переменных, в дополнение к печати.
Не указывать функцию печати как [].
'all' вызывает все встроенные функции печати. Укажите несколько функций печати, используя массив ячеек дескрипторов функций.
Встроенные функции печати отображаются в следующих таблицах.
| Графики модели - Применить при D ≤ 2 | Описание |
|---|---|
@plotAcquisitionFunction | Постройте график поверхности функции сбора данных. |
@plotConstraintModels | Постройте график каждой поверхности модели зависимости. Отрицательные значения указывают на возможные точки. Также постройте график P (осуществимой) поверхности. Также постройте график модели ошибки, если она существует, которая находится в диапазоне от Ошибка на графике = 2 * Вероятность (ошибка) - 1. |
@plotObjectiveEvaluationTimeModel | Постройте график поверхности модели времени оценки целевой функции. |
@plotObjectiveModel | Постройте график |
| Графики трассировки - применить ко всем D | Описание |
|---|---|
@plotObjective | Постройте график каждого наблюдаемого значения функции в зависимости от количества оценок функции. |
@plotObjectiveEvaluationTime | Постройте график времени выполнения оценки каждой наблюдаемой функции в зависимости от количества оценок функций. |
@plotMinObjective | Постройте график между минимальными наблюдаемыми и оцененными значениями функций и количеством оценок функций. |
@plotElapsedTime | Постройте график трех кривых: общее прошедшее время оптимизации, общее время оценки функции и общее время моделирования и выбора точки, все в зависимости от количества оценок функции. |
Можно написать собственные функции графика. Дополнительные сведения см. в разделе Функции графика байесовской оптимизации.
Примечание
При наличии связанных ограничений функции итеративного отображения и графика могут давать противоположные результаты, такие как:
Минимальный целевой график может увеличиться.
Оптимизация может объявить проблему неосуществимой, даже если она показала более раннюю осуществимую точку.
Причиной такого поведения является то, что решение о том, является ли точка осуществимой, может изменяться по мере продвижения оптимизации. bayesopt определяет выполнимость в отношении своей модели ограничения, и эта модель изменяется как bayesopt вычисляет точки. Таким образом, график «минимальной цели» может увеличиваться, когда минимальная точка позже считается неосуществимой, а итерационный дисплей может показывать осуществимую точку, которая позже считается неосуществимой.
Пример: 'PlotFcn','all'
Типы данных: char | string | cell | function_handle
'InitialX' - Начальные оценочные баллыNumSeedPointsоколо-D случайные начальные точки в пределах границ (по умолчанию) | Nоколо-D столНачальные точки оценки, указанные как Nоколо-D таблица, где N - количество точек оценки, и D - количество переменных.
Примечание
Если только InitialX обеспечивается, оно интерпретируется как исходные точки для оценки. Целевая функция оценивается в InitialX.
Если также предусмотрены какие-либо другие параметры инициализации, InitialX интерпретируется как предшествующие данные оценки функции. Целевая функция не оценивается. Для всех отсутствующих значений устанавливается значение NaN.
Типы данных: table
'InitialObjective' - Целевые значения, соответствующие InitialX[] (по умолчанию) | length-N векторЦелевые значения, соответствующие InitialX, указывается как lengt-N вектор, где N - количество точек оценки.
Пример: 'InitialObjective',[17;-3;-12.5]
Типы данных: double
'InitialConstraintViolations' - Нарушения зависимостей связанных зависимостей[] (по умолчанию) | Nоколо-K матрицаНарушения зависимостей связанных зависимостей, указанные как Nоколо-K матрица, где N - количество точек оценки и K - количество связанных ограничений. Дополнительные сведения см. в разделе Связанные зависимости.
Типы данных: double
'InitialErrorValues' - Ошибки для InitialX[] (по умолчанию) | length-N вектор с записями -1 или 1Ошибки для InitialX, указывается как lengt-N вектор с записями -1 или 1, где N - количество точек оценки. Определить -1 без ошибок, и 1 за ошибку.
Пример: 'InitialErrorValues',[-1,-1,-1,-1,1]
Типы данных: double
'InitialUserData' - Исходные данные, соответствующие InitialX[] (по умолчанию) | length-N вектор ячейкиИсходные данные, соответствующие InitialX, указывается как lengt-N клеточный вектор, где N - количество точек оценки.
Пример: 'InitialUserData',{2,3,-1}
Типы данных: cell
'InitialObjectiveEvaluationTimes' - Время оценки целевой функции при InitialX[] (по умолчанию) | length-N векторВремя оценки целевой функции при InitialX, указывается как lengt-N вектор, где N - количество точек оценки. Время измеряется в секундах.
Типы данных: double
'InitialIterationTimes' - Время для первого N повторения{} (по умолчанию) | length-N векторВремя для первого N итерации, указанные как lengt-N вектор, где N - количество точек оценки. Время измеряется в секундах.
Типы данных: double
results - Байесовские результаты оптимизацииBayesianOptimization объектРезультаты байесовской оптимизации, возвращенные как BayesianOptimization объект.
Связанные ограничения - это ограничения, значение которых является результатом вычисления целевой функции. См. раздел Связанные зависимости.
Байесовская оптимизация не воспроизводима, если существует одно из следующих условий:
Указывается функция приобретения, имя которой включает: per-second, такие как 'expected-improvement-per-second'. per-second модификатор указывает, что оптимизация зависит от времени выполнения целевой функции. Для получения дополнительной информации см. Типы функций сбора данных.
Задается параллельное выполнение байесовской оптимизации. Из-за непродуктивности параллельной синхронизации параллельная байесовская оптимизация не обязательно дает воспроизводимые результаты. Дополнительные сведения см. в разделе Параллельная байесовская оптимизация.
Для параллельного выполнения установите 'UseParallel' аргумент «имя-значение» для true в вызове этой функции.
Дополнительные общие сведения о параллельных вычислениях см. в разделе Запуск функций MATLAB с автоматической параллельной поддержкой (панель инструментов параллельных вычислений).
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.