Выберите оптимальные гиперпараметры машинного обучения с помощью байесовской оптимизации
пытается найти значения 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'
.
Для воспроизводимости установите случайный 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')
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
fun
- Целевая функцияparallel.pool.Constant
чьи Value
является указателем на функциюЦелевая функция, заданная как указатель на функцию или, когда 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
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
(по умолчанию) | положительный реальныйСклонность к исследованиям, заданная как положительное действительное. Применяется к 'expected-improvement-plus'
и 'expected-improvement-per-second-plus'
функции сбора. См. Плюс.
Пример: 'ExplorationRatio',0.2
Типы данных: double
'GPActiveSetSize'
- Подгонка модели Гауссова процесса к GPActiveSetSize
или меньше точек300
(по умолчанию) | положительное целое числоПодгонка модели Гауссова процесса к GPActiveSetSize
или меньше точек в виде положительного целого числа. Когда bayesopt
посетил более GPActiveSetSize
точки, последующие итерации, которые используют модель GP, соответствуют модели, чтобы GPActiveSetSize
точки. bayesopt
выбирает точки равномерно случайным образом без замены среди посещаемых точек. Использование меньшего количества точек приводит к более быстрым подборам кривой модели GP за счет, возможно, менее точных подборов кривой.
Пример: 'GPActiveSetSize',80
Типы данных: double
'UseParallel'
- Вычислите параллельноfalse
(по умолчанию) | true
Вычислите параллельно, задайте как false
(не вычислять параллельно) или true
(вычислите параллельно). Для параллельных вычислений требуется Parallel Computing Toolbox™.
bayesopt
выполняет параллельные целевые вычисления функции одновременно с параллельными рабочими. Для подробностей алгоритма см. Parallel Bayesian Optimization.
Пример: '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'
- Детерминированные ограничения на переменные[]
(по умолчанию) | указатель на функциюДетерминированные ограничения на переменные, заданные как указатель на функцию.
Для получения дополнительной информации смотрите Детерминированные ограничения - XConstraintFcn.
Пример: 'XConstraintFcn',@xconstraint
Типы данных: function_handle
'ConditionalVariableFcn'
- Условные ограничения переменной[]
(по умолчанию) | указатель на функциюУсловные ограничения переменной, заданные как указатель на функцию.
Для получения дополнительной информации смотрите Условные ограничения - ConditionalVariableFcn.
Пример: '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'
- Функция вызывается после каждой итерации{}
(по умолчанию) | указатель на функцию | cell-массив указателей на функциюФункция, вызываемая после каждой итерации, задается как указатель на функцию или cell-массив указателей на функцию. Выходная функция может остановить решатель и может выполнить произвольные вычисления, включая создание переменных или графическое изображение. Задайте несколько выходных функций с помощью cell-массива указателей на функцию.
Существует две встроенные выходные функции:
@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'
| указатель на функцию | cell-массив указателей на функциюФункция построения графика, вызываемый после каждой итерации, задаётся как 'all'
, указатель на функцию или cell-массив указателей на функцию. Функция построения графика может остановить решатель и может выполнять произвольные вычисления, включая создание переменных, в дополнение к графическому изображению.
Не задайте функцию построения графика как []
.
'all'
вызывает все встроенные функции построения графика. Задайте несколько функций построения графика с помощью cell-массива указателей на функцию.
Встроенные функции построения графика появляются в следующих таблицах.
Модели графиков - Применить Когда D ≤ 2 | Описание |
---|---|
@plotAcquisitionFunction | Постройте график поверхности функции захвата. |
@plotConstraintModels | Постройте график каждой поверхности модели ограничений. Отрицательные значения указывают на допустимые точки. Также постройте график P (допустимой) поверхности. Также постройте график модели ошибки, если она существует, который варьируется от Нанесенная ошибка = 2 * Вероятность (ошибка) - 1. |
@plotObjectiveEvaluationTimeModel | Постройте график поверхности вычисления функции модели времени. |
@plotObjectiveModel | Постройте график |
Графики трассировки - Применить ко всем D | Описание |
---|---|
@plotObjective | Постройте график каждого наблюдаемого значения функции в зависимости от количества вычислений функции. |
@plotObjectiveEvaluationTime | Постройте график времени запуска каждой наблюдаемой оценки функции в зависимости от количества вычислений функции. |
@plotMinObjective | Постройте график минимальных наблюдаемых и оцененных значений функции от количества вычислений функции. |
@plotElapsedTime | Постройте график трех кривых: общее истекшее время оптимизации, общее время оценки функции и общее время моделирования и выбора точки, все в зависимости от количества вычислений функции. |
Можно написать свои собственные функции построения графика. Для получения дополнительной информации см. Bayesian Optimization Plot Functions.
Примечание
Когда существуют связанные ограничения, итеративное отображение и функции построения графика могут дать контринтуитивные результаты, такие как:
Минимальный целевой график может увеличиться.
Оптимизация может объявить задачу недопустимой, даже когда она показала более раннюю допустимую точку.
Причиной такого поведения является то, что решение о том, является ли точка допустимой, может измениться по мере прогрессирования оптимизации. bayesopt
определяет выполнимость относительно своей ограничительной модели, и эта модель изменяется как bayesopt
вычисляет точки. Таким образом, график «минимальной цели» может увеличиться, когда минимальная точка позже считается недопустимой, и итерационное отображение может показать допустимую точку, которая позже считается недопустимой.
Пример: 'PlotFcn','all'
Типы данных: char
| string
| cell
| function_handle
'InitialX'
- Начальные точки оценкиNumSeedPoints
-by- D
случайные начальные точки в границах (по умолчанию) | N
-by- D
таблицаНачальные точки оценки, заданные как N
-by- D
таблица, где N
количество точек оценки и D
- количество переменных.
Примечание
Если только InitialX
При этом он интерпретируется как исходные точки для оценки. Целевая функция оценивается как InitialX
.
Если также предусмотрены какие-либо другие параметры инициализации, InitialX
интерпретируется как предыдущие данные вычисления функции. Целевая функция не оценивается. Для всех отсутствующих значений задано значение NaN
.
Типы данных: table
'InitialObjective'
- Целевые значения, соответствующие InitialX
[]
(по умолчанию) | длину - N
векторЦелевые значения, соответствующие InitialX
, заданный в виде N
вектор, где N
количество точек оценки.
Пример: 'InitialObjective',[17;-3;-12.5]
Типы данных: double
'InitialConstraintViolations'
- Нарушения ограничений связанных ограничений[]
(по умолчанию) | N
-by- K
матрицаНарушения ограничений связанных ограничений, заданные как N
-by- K
матрица, где N
количество точек оценки и K
- количество связанных ограничений. Для получения дополнительной информации см. раздел «Сопряженные ограничения».
Типы данных: double
'InitialErrorValues'
- Ошибки для InitialX
[]
(по умолчанию) | длину - N
вектор с записями -1
или 1
Ошибки для InitialX
, заданный в виде N
вектор с записями -1
или 1
, где N
количество точек оценки. Задайте -1
без ошибок и 1
для ошибки.
Пример: 'InitialErrorValues',[-1,-1,-1,-1,1]
Типы данных: double
'InitialUserData'
- Исходные данные, соответствующие InitialX
[]
(по умолчанию) | длину - N
вектор камерыИсходные данные, соответствующие InitialX
, заданный в виде N
вектор камеры, где N
количество точек оценки.
Пример: 'InitialUserData',{2,3,-1}
Типы данных: cell
'InitialObjectiveEvaluationTimes'
- Время оценки целевой функции в InitialX
[]
(по умолчанию) | длину - N
векторВремя оценки целевой функции в InitialX
, заданный в виде N
вектор, где N
количество точек оценки. Время измеряется в секундах.
Типы данных: double
'InitialIterationTimes'
- Время для первого N
итерации{}
(по умолчанию) | длину - N
векторВремена для первого N
итерации, заданные как N
вектор, где N
количество точек оценки. Время измеряется в секундах.
Типы данных: double
results
- Результаты байесовской оптимизацииBayesianOptimization
объектРезультаты оптимизации, возвращенные как BayesianOptimization
объект.
Связанные ограничения являются теми ограничениями, значение которых происходит от вычисления целевой функции. См. «Сопряженные ограничения».
Байесовская оптимизация не воспроизводима, если существует одно из следующих условий:
Вы задаете функцию приобретения, имя которой включает per-second
, таких как 'expected-improvement-per-second'
. The per-second
модификатор указывает, что оптимизация зависит от времени запуска целевой функции. Для получения дополнительной информации см. Типы функций приобретения.
Вы задаете, чтобы запустить байесовскую оптимизацию параллельно. Из-за непродуктивности параллельной синхронизации параллельная байесовская оптимизация не обязательно приводит к воспроизводимым результатам. Для получения дополнительной информации см. Parallel Bayesian Optimization.
Чтобы запустить параллельно, установите 'UseParallel'
аргумент имя-значение в true
в вызове этой функции.
Для получения дополнительной общей информации о параллельных вычислениях смотрите Запуск функций MATLAB с поддержкой автоматических параллелей (Parallel Computing Toolbox).
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.