Выберите оптимальные гиперпараметры машинного обучения с помощью Байесовой оптимизации
попытки найти значения results
= bayesopt(fun
,vars
)vars
это минимизирует fun(vars)
.
Чтобы включать дополнительные параметры в целевую функцию, смотрите Функции Параметризации (MATLAB).
изменяет процесс оптимизации согласно 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
как анонимная функция, которая включает эти данные. Смотрите Функции Параметризации (MATLAB).
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: 39.6974 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
как анонимная функция, которая включает эти данные. Смотрите Функции Параметризации (MATLAB).
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 | 3 | Accept | 0.35897 | 0.10852 | 0.27066 | 0.27066 | 0.40251 | 972.28 | | 2 | 3 | Best | 0.27066 | 0.10422 | 0.27066 | 0.27066 | 0.0073203 | 1.1872 | | 3 | 3 | Accept | 0.35897 | 0.11258 | 0.27066 | 0.27066 | 0.63346 | 220.31 | | 4 | 3 | Accept | 0.35897 | 0.10982 | 0.27066 | 0.27066 | 0.24185 | 444.02 | | 5 | 6 | Best | 0.15385 | 0.099978 | 0.15385 | 0.15386 | 0.00011168 | 0.093528 | | 6 | 6 | Best | 0.12821 | 0.12967 | 0.12821 | 0.12818 | 0.00063866 | 0.018135 | | 7 | 6 | Accept | 0.19373 | 0.10296 | 0.12821 | 0.12776 | 0.0001005 | 0.11991 | | 8 | 6 | Accept | 0.37322 | 20.593 | 0.12821 | 0.13249 | 8.7031 | 0.00011125 | | 9 | 6 | Accept | 0.1339 | 0.086394 | 0.12821 | 0.13216 | 0.00010824 | 0.023311 | | 10 | 6 | Accept | 0.5812 | 19.209 | 0.12821 | 0.13415 | 237.89 | 0.00010012 | | 11 | 6 | Accept | 0.14245 | 0.10978 | 0.12821 | 0.1376 | 0.00010041 | 0.022664 | | 12 | 6 | Accept | 0.17664 | 23.135 | 0.12821 | 0.1289 | 0.30037 | 0.0014962 | | 13 | 5 | Accept | 0.23647 | 22.508 | 0.12821 | 0.12809 | 876.57 | 0.012627 | | 14 | 5 | Accept | 0.35897 | 0.099327 | 0.12821 | 0.12809 | 0.0001005 | 988.9 | | 15 | 5 | Accept | 0.35897 | 0.083674 | 0.12821 | 0.12814 | 990.27 | 985.91 | | 16 | 6 | Best | 0.12251 | 0.13437 | 0.12251 | 0.12571 | 0.00093129 | 0.033266 | | 17 | 6 | Best | 0.11966 | 0.18898 | 0.11966 | 0.12289 | 0.0011252 | 0.011984 | | 18 | 6 | Accept | 0.1339 | 0.16574 | 0.11966 | 0.12306 | 0.0028325 | 0.036476 | | 19 | 6 | Best | 0.10541 | 0.29174 | 0.10541 | 0.1142 | 0.0022156 | 0.013997 | | 20 | 5 | Accept | 0.11681 | 3.4201 | 0.10541 | 0.1179 | 0.00019144 | 0.004792 | |===============================================================================================================| | Iter | Active | Eval | Objective | Objective | BestSoFar | BestSoFar | box | kern | | | workers | result | | runtime | (observed) | (estim.) | | | |===============================================================================================================| | 21 | 5 | Accept | 0.13675 | 0.21393 | 0.10541 | 0.1179 | 0.00081046 | 0.01568 | | 22 | 5 | Accept | 0.12821 | 0.49429 | 0.10541 | 0.12063 | 0.0031922 | 0.0095725 | | 23 | 6 | Accept | 0.1453 | 0.49944 | 0.10541 | 0.12027 | 0.038828 | 0.026798 | | 24 | 6 | Accept | 0.12251 | 0.44988 | 0.10541 | 0.12041 | 0.0034879 | 0.012684 | | 25 | 5 | Accept | 0.11111 | 1.7729 | 0.10256 | 0.11523 | 206.59 | 1.1184 | | 26 | 5 | Best | 0.10256 | 0.32152 | 0.10256 | 0.11523 | 0.00083077 | 0.0090062 | | 27 | 5 | Accept | 0.1339 | 0.094543 | 0.10256 | 0.1178 | 999.01 | 81.922 | | 28 | 6 | Accept | 0.11681 | 0.20018 | 0.10256 | 0.11785 | 987.2 | 13.241 | | 29 | 6 | Accept | 0.11681 | 0.14953 | 0.10256 | 0.11787 | 995.8 | 22.417 | | 30 | 6 | Accept | 0.11681 | 0.71489 | 0.10256 | 0.11786 | 962.75 | 4.0028 | __________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 38.2851 seconds. Total objective function evaluation time: 95.7048 Best observed feasible point: box kern __________ _________ 0.00083077 0.0090062 Observed objective function value = 0.10256 Estimated objective function value = 0.11786 Function evaluation time = 0.32152 Best estimated feasible point (according to models): box kern _________ ________ 0.0011252 0.011984 Estimated objective function value = 0.11786 Estimated function evaluation time = 0.28326
Возвратите лучшую допустимую точку в модели Bayesian results
при помощи bestPoint
функция. Используйте критерий по умолчанию min-visited-upper-confidence-interval
, который определяет лучшую допустимую точку как посещаемую точку, которая минимизирует верхний доверительный интервал на значении целевой функции.
zbest = bestPoint(results)
zbest=1×2 table
box kern
_________ ________
0.0011252 0.011984
Таблица zbest
содержит оптимальные ориентировочные стоимости для 'BoxConstraint'
и 'KernelScale'
аргументы в виде пар имя-значение. Используйте эти значения, чтобы обучить новый оптимизированный классификатор.
Mdl = fitcsvm(X,Y,'BoxConstraint',zbest.box,'KernelScale',zbest.kern);
Заметьте, что оптимальные параметры находятся в Mdl
.
Mdl.BoxConstraints(1)
ans = 0.0011
Mdl.KernelParameters.Scale
ans = 0.0120
fun
— Целевая функцияparallel.pool.Constant
чей Value
указатель на функциюЦелевая функция, определенный функцией указатель или, когда UseParallel
парой "имя-значение" является true
, parallel.pool.Constant
чей Value
указатель на функцию. Как правило, fun
возвращает меру потери (такой как misclassification ошибка) для модели машинного обучения, которая имеет настраиваемые гиперпараметры, чтобы управлять ее обучением. fun
имеет эти подписи:
objective = fun(x) % or [objective,constraints] = fun(x) % or [objective,constraints,UserData] = fun(x)
fun
принимает x
, 1 D
таблица значений переменных, и возвращает objective
, действительный скаляр, представляющий значение целевой функции fun(x)
.
Опционально, fun
также возвращается:
constraints
, вектор действительных чисел двойных ограничительных нарушений. Для определения смотрите Двойные Ограничения. constraint(j) > 0
среднее ограничение j
нарушен. constraint(j) < 0
среднее ограничение j
удовлетворен.
UserData
, сущность любого типа (такого как скаляр, матрица, структура или объект). Для примера пользовательской функции построения графика, которая использует UserData
, смотрите Создают Пользовательскую Функцию построения графика.
Для получения дополнительной информации об использовании parallel.pool.Constant
с bayesopt
, смотрите Размещение Целевой функции на Рабочих.
Пример: @objfun
Типы данных: function_handle
vars
VariableDescriptions 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
Типы данных: логический
'ExplorationRatio'
— Склонность исследовать
(значение по умолчанию) | положительный действительныйСклонность исследовать, заданный как положительное действительное. Применяется к 'expected-improvement-plus'
и 'expected-improvement-per-second-plus'
функции приобретения. Смотрите Плюс.
Пример: 'ExplorationRatio',0.2
Типы данных: double
'GPActiveSetSize'
— Соответствуйте Гауссовой Модели процесса к GPActiveSetSize
или меньше точек
(значение по умолчанию) | положительное целое числоСоответствуйте Гауссовой Модели процесса к GPActiveSetSize
или меньше точек, заданных как положительное целое число. Когда bayesopt
посетил больше, чем GPActiveSetSize
точки, последующие итерации, которые используют модель GP, подбирают модель к GPActiveSetSize
'points'. bayesopt
выбирает точки однородно наугад без замены среди посещаемых точек. Используя меньшее количество точек приводит к более быстрому подбору кривой модели GP, за счет возможно менее точного подбора кривой.
Пример: 'GPActiveSetSize',80
Типы данных: double
'UseParallel'
— Вычислите параллельноfalse
(значение по умолчанию) | true
Вычислите параллельно, заданный как false
(не вычисляйте параллельно), или true
(вычислите параллельно). bayesopt
выполняет параллельные оценки целевой функции одновременно на параллельных рабочих. Для алгоритмических деталей смотрите Параллельную Байесовую Оптимизацию.
Пример: 'UseParallel',true
Типы данных: логический
'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'
— Предел оценки целевой функции
(значение по умолчанию) | положительное целое числоПредел оценки целевой функции, заданный как положительное целое число.
Пример: 'MaxObjectiveEvaluations',60
Типы данных: double
'MaxTime'
— Ограничение по времениInf
(значение по умолчанию) | положительный действительный'NumSeedPoints'
— Количество начальных точек оценки
(значение по умолчанию) | положительное целое числоКоличество начальных точек оценки, заданных как положительное целое число. bayesopt
выбирает эти точки случайным образом в переменных границах, согласно установке Transform
установка для каждой переменной (универсальная форма для 'none'
, логарифмически распределенный для 'log'
).
Пример: 'NumSeedPoints',10
Типы данных: double
'XConstraintFcn'
— Детерминированные ограничения на переменные[]
(значение по умолчанию) | указатель на функциюДетерминированные ограничения на переменные, определенный функцией указатель.
Для получения дополнительной информации смотрите Детерминированные Ограничения — XConstraintFcn.
Пример: 'XConstraintFcn',@xconstraint
Типы данных: function_handle
'ConditionalVariableFcn'
— Условные переменные ограничения[]
(значение по умолчанию) | указатель на функциюУсловные переменные ограничения, определенный функцией указатель.
Для получения дополнительной информации смотрите Условные Ограничения — ConditionalVariableFcn.
Пример: 'ConditionalVariableFcn',@condfun
Типы данных: function_handle
'NumCoupledConstraints'
— Количество двойных ограничений
(значение по умолчанию) | положительное целое числоКоличество двойных ограничений, заданных как положительное целое число. Для получения дополнительной информации смотрите Двойные Ограничения.
NumCoupledConstraints
требуется, когда вы связали ограничения.
Пример: 'NumCoupledConstraints',3
Типы данных: double
'AreCoupledConstraintsDeterministic'
— Индикация относительно того, детерминированы ли двойные ограниченияtrue
для всех двойных ограничений (значение по умолчанию) | логический векторИндикация относительно того, детерминированы ли двойные ограничения, заданы как логический вектор длины NumCoupledConstraints
. Для получения дополнительной информации смотрите Двойные Ограничения.
Пример: 'AreCoupledConstraintsDeterministic',[true,false,true]
Типы данных: логический
'Verbose'
— Уровень отображения командной строки
(значение по умолчанию) | 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*Probability (ошибка) – 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
[]
(значение по умолчанию) | длина-N
векторОбъективные значения, соответствующие InitialX
, заданный как длина-N
вектор, где N
количество точек оценки.
Пример: 'InitialObjective',[17;-3;-12.5]
Типы данных: double
'InitialConstraintViolations'
— Ограничительные нарушения двойных ограничений[]
(значение по умолчанию) | N
- K
матрицаОграничительные нарушения двойных ограничений, заданных как N
- 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'
. per-second
модификатор указывает, что оптимизация зависит от времени выполнения целевой функции. Для получения дополнительной информации смотрите Типы Функции Приобретения.
Вы задаете, чтобы запустить Байесовую оптимизацию параллельно. Из-за невоспроизводимости синхронизации параллели, параллельная Байесова оптимизация не обязательно дает к восстанавливаемым результатам. Для получения дополнительной информации смотрите Параллельную Байесовую Оптимизацию.
Чтобы запуститься параллельно, установите 'UseParallel'
опция к true
.
Установите 'UseParallel',true
аргумент пары "имя-значение" в вызове этой функции.
Для более общей информации о параллельных вычислениях смотрите функции MATLAB Запуска с Автоматической Параллельной Поддержкой (Parallel Computing Toolbox).
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.