主要内容

贝叶斯优化情节功能

内置的绘图功能

有两套内置情节功能。

模型图,适用于D≤2时 描述
@plotAcquisitionFunction

情节收购功能表面。

@plotConstraintModels

绘制每个约束模型表面。负值表示可行点。

也画一个P(可行的)表面。

还绘制误差模型,如果它存在,范围从11。负值意味着模型可能没有错误,正值意味着它可能错误。该模型是:

绘制错误概率= 2 *(错误)- 1。

@plotObjectiveEvaluationTimeModel

画出目标函数评价模型表面。

@plotObjectiveModel

画出有趣的模型表面,估计最低的位置,和未来的位置提出评估。对于一维问题,情节信封一个可信区间上方和下方的意思是函数,和信封一个噪声标准差上方和下方的意思。

跟踪情节——适用于所有D 描述
@plotObjective

阴谋每个观测函数值的数量和功能评估。

@plotObjectiveEvaluationTime

阴谋每个观测函数评估运行时的数量和功能评估。

@plotMinObjective

图的最小观察和估计函数值的数量和功能评估。

@plotElapsedTime

情节三个曲线的总运行时间优化,总时间评估函数,和总建模和时间点的选择,所有的数量和功能评价。

请注意

当耦合约束时,迭代显示和情节功能可以给违反直觉的结果如:

  • 一个最低目标可以增加。

  • 优化可以声明一个问题不可行,即使它显示早期可行点。

这种行为的原因是,决定是否一个点是可行的可以改变的优化发展。bayesopt决定就其可行性约束模型,这个模型的变化bayesopt评估点。所以“最低目标”情节时可以增加最小点后认为不可行,并迭代显示可以显示一个可行点,后来被认为是不可行的。

自定义绘制函数语法

自定义绘制函数具有相同的语法作为一个自定义输出函数(见贝叶斯优化输出功能):

停止= plotfun(结果,状态)

bayesopt通过了结果状态变量的函数。你的函数返回停止,你设置真正的停止迭代,或继续迭代。

结果是一个对象的类BayesianOptimization包含信息的计算。

状态这些可能的值:

  • “初始”- - - - - -bayesopt即将开始迭代。使用这个国家建立一个情节或执行其他初始化。

  • “迭代”- - - - - -bayesopt刚刚完成一次迭代。一般来说,您执行大部分的策划或其他计算在这个状态。

  • “完成”- - - - - -bayesopt刚刚完成最后的迭代。清理情节或者准备情节功能关闭。

创建一个自定义的函数

这个例子展示了如何创建一个自定义函数bayesopt。它进一步展示了如何使用信息用户数据财产的BayesianOptimization对象。

问题陈述

问题是要找到参数的支持向量机(SVM)分类旨在损失降到最低。金宝app具体的模型是一样的优化旨在使用bayesopt分类器。因此,目标函数本质上是一样的,除了它还计算用户数据在这种情况下,支持向量的个数在一个SVM模型拟合当前参数。金宝app

创建一个定制的情节功能块支持向量的个数在SVM模型的优化发展。金宝app给情节函数访问支持向量的个数,创建一个第三输出,金宝app用户数据,回归支持向量的个数。金宝app

目标函数

创建一个目标函数计算交叉验证损失一个固定的交叉验证分区,并返回结果模型中支持向量的个数。金宝app

函数[f,弦乐器,nsupp] = mysvmminfn (x, cdata, grp, c) SVMModel = fitcsvm (grp cdata,“KernelFunction”,“rbf”,“KernelScale”x.sigma,“BoxConstraint”,x.box);f = kfoldLoss (crossval (SVMModel,“CVPartition”,c));开口= [];nsupp =总和(SVMModel.IsSu金宝apppportVector);结束

自定义绘制函数

创建一个自定义图函数,使用计算的信息用户数据。有函数同时绘制当前数量的限制和约束的数量最好的模型目标函数。

函数停止= svmsuppvec(结果,状态)持续的hs nb besthist nsupptrace停止= false;开关状态情况下“初始”hs =图;besthist = [];nb = 0;nsupptrace = [];情况下“迭代”图(hs) nsupp = results.UserDataTrace{结束};%得到nsupp UserDataTrace财产。nsupptrace结束(+ 1)= nsupp;%积累nsupp值在一个向量。如果(results.ObjectiveTrace(结束)= = min (results.ObjectiveTrace)) | |(长度(results.ObjectiveTrace) = = 1)%目前是最好的nb = nsupp;结束besthist = (besthist, nb);阴谋(1:长度(nsupptrace) nsupptrace,“b”1:长度(besthist)、besthist“r——”)包含的迭代次数ylabel支持向量的数量金宝app标题支持向量的数量在每一次金宝app迭代的传奇(当前迭代的,“最好的目标”,“位置”,“最佳”)drawnow结束

建立了模型

为每个类生成10个基础点。

rng默认的grnpop = mvnrnd((1,0)、眼睛(2),10);redpop = mvnrnd([0, 1],眼(2),10);

生成100数据点的每个类。

redpts = 0 (100 2); grnpts = redpts;i = 1:10 0 grnpts(我:)= mvnrnd (grnpop(兰迪(10):)、眼睛(2)* 0.02);redpts(我)= mvnrnd (redpop(兰迪(10):)、眼睛(2)* 0.02);结束

把数据转换成一个矩阵,向量grp标签类的每一个点。

cdata = [grnpts; redpts];grp = 1 (200 1);%绿色标签1,红色标签1grp (101:200) = 1;

检查所有的数据使用默认的基本分类支持向量机参数。

SVMModel = fitcsvm (grp cdata,“KernelFunction”,“rbf”,“类名”[1]);

建立一个分区修复交叉验证。没有这一步,交叉验证是随机的,所以目标函数不是确定的。

c = cvpartition (200“KFold”10);

检查原拟合模型的交叉验证的准确性。

损失= kfoldLoss (fitcsvm (grp cdata,“CVPartition”c“KernelFunction”,“rbf”,“BoxConstraint”SVMModel.BoxConstraints (1)“KernelScale”,SVMModel.KernelParameters.Scale))
损失= 0.1350

准备为优化变量

目标函数需要一个输入z = [rbf_sigma boxconstraint]并返回交叉验证的价值损失z。的组件z积极的,对数转换变量之间1 e-51 e5。选择广泛,因为你不知道哪值可能会好。

σ= optimizableVariable (“σ”(1 e-5, 1 e5),“转换”,“日志”);盒= optimizableVariable (“盒子”(1 e-5, 1 e5),“转换”,“日志”);

设置情节函数和调用优化器

寻找最佳参数(σ,盒子)使用bayesopt。再现性,选择“expected-improvement-plus”采集功能。默认采集函数依赖于运行时,它可以给不同的结果。

图支持向量的个数的函数迭代数,和情节的金宝app最佳参数的支持向量的个数。

obj = @ (x) mysvmminfn (x, cdata, grp, c);结果= bayesopt (obj,σ,盒子,“IsObjectiveDeterministic”,真的,“详细”0,“AcquisitionFunctionName”,“expected-improvement-plus”,“PlotFcn”,{@svmsuppvec、@plotObjectiveModel @plotMinObjective})
结果= BayesianOptimization属性:ObjectiveFcn: @ (x) mysvmminfn (x, cdata, grp, c) VariableDescriptions: [1 x2 optimizableVariable]选项:[1 x1 struct] MinObjective: 0.0750 XAtMinObjective: [1 x2表]MinEstimatedObjective: 0.0750 XAtMinEstimatedObjective: [1 x2表]NumObjectiveEvaluations: 30 TotalElapsedTime: 36.3900 NextPoint: [1 x2表]XTrace: [30 x2表]ObjectiveTrace: [30 x1双]ConstraintsTrace: [] UserDataTrace: {30 x1细胞}ObjectiveEvaluationTimeTrace: [30 x1双]IterationTimeTrace: [30 x1双]ErrorTrace: [30 x1双]FeasibilityTrace: [30 x1逻辑]FeasibilityProbabilityTrace: [30 x1双]IndexOfMinimumTrace: [30 x1双]ObjectiveMinimumTrace: [30 x1双]EstimatedObjectiveMinimumTrace: [30 x1双]

相关的话题