输出功能是在每次迭代结束时调用的函数Bayesopt.
.输出函数可以停止迭代。它还可以创建图表,将信息保存到您的工作区或文件,或执行您喜欢的任何其他计算。
除了停止迭代之外,输出函数不能改变贝叶斯优化的过程。他们只是监控优化的进度。
这些内置输出函数将优化结果保存到文件或工作空间中。
@assignInBase
-每次迭代后将结果保存到一个名为的变量中“BayesoptResults”
在你的工作空间。要选择一个不同的名字,请传递savevariablename.
名称-值参数。
@savetofile.
- 将每次迭代到命名的文件后保存结果'Bayesoptresults.mat'
在您当前的文件夹中。选择不同的名称或文件夹,通过savefilename.
名称-值参数。
例如,要在每个迭代到名为的工作空间变量后将结果保存到'贝叶森'
那
结果= bayesopt (var,有趣'outputfcn'@assignInBase,......'savevariablename'那'贝叶森'的)
用签名写一个自定义输出函数
停止= outputfun(结果,状态)
Bayesopt.
通过了结果
和状态
函数的变量。你的函数返回停止
,你设置为真正的
停止迭代,或者错误的
允许迭代继续。
结果
是类的对象吗BayesianOptimization
.结果
包含到目前为止有关计算的可用信息。
状态
有可能的价值观:
'最初的'
-Bayesopt.
即将开始迭代。
'迭代'
-Bayesopt.
刚刚完成了迭代。
“完成”
-Bayesopt.
刚完成最终迭代。
例如,请参见贝叶斯优化输出功能.
此示例显示如何使用贝叶斯优化的自定义输出功能。输出函数在目标函数是交叉验证错误率下降的低于13%时停止优化。输出函数也绘制每个迭代的时间。
函数停止= outputfun(结果,状态)执着的h stop = false;开关状态情况下'最初的'h =图;情况下'迭代'如果结果.MInjective <0.13停止=真;结尾图(h)tms = equest.IritationTimetrace;绘图(1:Numel(TMS),TMS')XLabel('迭代号') ylabel ('迭代的时间')标题(“每次迭代的时间”) drawnow结尾
目标函数是KNN分类的交叉验证损失电离层
数据。加载数据,为了重现性,设置默认的随机流。
加载电离层rng默认
优化邻域大小从1到30,以及三个距离指标。
num = optimizableVariable (“n”(1、30),“类型”那“整数”);DST =优化不变(dst的, {'chebychev'那“欧几里得”那闵可夫斯基的},“类型”那“分类”);vars = [num,dst];
设置交叉验证分区和目标函数。为了再现性,请设置获取功能名称
到“expected-improvement-plus”
.运行优化。
c = cvpartition(351,“Kfold”5);fun = @(x)kfoldloss(fitcknn(x,y,“CVPartition”c“NumNeighbors”,x.n,......“距离”char (x.dst),“NSMethod”那“详尽”));结果= bayesopt (var,有趣'outputfcn',@ outputfun,......'获取功能名称'那“expected-improvement-plus”);
| ===================================================================================================== ||磨练|eval |目标|目标|Bestsofar |Bestsofar |n |DST | | | result | | runtime | (observed) | (estim.) | | | |=====================================================================================================| | 1 | Best | 0.19943 | 0.31225 | 0.19943 | 0.19943 | 24 | chebychev | | 2 | Best | 0.16809 | 0.23873 | 0.16809 | 0.1747 | 9 | euclidean | | 3 | Best | 0.12536 | 0.2603 | 0.12536 | 0.12861 | 3 | chebychev | __________________________________________________________ Optimization completed. Total function evaluations: 3 Total elapsed time: 6.8981 seconds Total objective function evaluation time: 0.81127 Best observed feasible point: n dst _ _________ 3 chebychev Observed objective function value = 0.12536 Estimated objective function value = 0.12861 Function evaluation time = 0.2603 Best estimated feasible point (according to models): n dst _ _________ 3 chebychev Estimated objective function value = 0.12861 Estimated function evaluation time = 0.26869