このペ,ジの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
ベ@ @ズ最適化のプロット関数
組み込みプロット関数
2組の組み込みプロット関数があります。
モデルプロット- d≤2の場合に適用 | 説明 |
---|---|
@plotAcquisitionFunction |
獲得関数の表面をプロットします。 |
@plotConstraintModels |
各制約モデルの表面をプロットします。負の値は実行可能点を示します。 P(実行可能)表面もプロットします。 存在する場合は 绘制误差= 2*概率(误差)- 1。 |
@plotObjectiveEvaluationTimeModel |
目的関数の評価時間モデルの表面をプロットします。 |
@plotObjectiveModel |
|
トレ,スプロット-すべてのdに適用 | 説明 |
---|---|
@plotObjective |
観測された各関数値と関数評価の個数の関係をプロットします。 |
@plotObjectiveEvaluationTime |
観測された各関数評価の実行時間と関数評価の個数の関係をプロットします。 |
@plotMinObjective |
観測および推定された最小の関数値と関数評価の個数の関係をプロットします。 |
@plotElapsedTime |
最適化の合計経過時間,関数評価の合計時間,モデリングおよび点選択の合計時間という3つの曲線を関数評価の個数に対する関係としてプロットします。 |
メモ
連結制約がある場合,反復表示とプロット関数は次のような直観的ではない結果を与える可能性があります。
"最小目的"のプロットが増加する。
最適化において,以前に実行可能点が示された場合でも,問題が実行不可能であると宣言される場合がある。
このようになるのは,点が実行可能かどうかの判断が最適化の進行に応じて変化する可能性があるためです。bayesopt
は制約モデルに関して実行可能性を判断しますが,このモデルはbayesopt
が点を評価すると変化します。したがって,最小の点が後から実行不可能と判断された場合は”最小目的“プロットが増加し,反復表示には,後から実行不可能と判断される実行可能点が表示される可能性があります。
カスタムプロット関数の構文
カスタムプロット関数の構文はカスタム出力関数(ベ@ @ズ最適化の出力関数を参照)と同じで,次のようになります:
Stop = plotfun(结果,状态)
bayesopt
は変数结果
および状态
をカスタム関数に渡します。カスタム関数では,反復を停止する場合は真正的
,継続する場合は假
に設定した停止
を返します。
结果
は,計算に関して使用できる情報が含まれているBayesianOptimization
クラスのオブジェクトです。
状态
の取り得る値は次の3です:
“初始”
- - - - - -bayesopt
は反復を開始しようとしています。プロットの設定や他の初期化の実行にはこの状態を使用します。“迭代”
- - - - - -bayesopt
は反復を1回完了したところです。一般に,ほとんどのプロットや他の計算はこの状態で実行します。“完成”
- - - - - -bayesopt
で最後の反復が完了しました。プロットをクリ,ンアップするか,プロット関数を停止する準備をします。
カスタムプロット関数の作成
この例では,bayesopt
のカスタムプロット関数を作成する方法を示します。さらに,BayesianOptimization
オブジェクトの用户数据
プロパティに含まれている情報を使用する方法を示します。
問題の定義
問題は,交差検証損失を最小化するサポートベクターマシン(SVM)分類のパラメーターを求めることです。具体的なモデルはBayesoptを使用した交差検証分類器の最適化の場合と同じです。したがって,目的関数は基本的に同じですが,用户数据
(このケースでは,現在のパラメーターにあてはめるSVMモデル内のサポートベクターの個数)も計算する点が異なります。
最適化の進行に応じてSVMモデル内のサポートベクターの個数をプロットするカスタムプロット関数を作成します。プロット関数でサポートベクターの個数にアクセスできるようにするため,サポートベクターの個数を返す3番目の出力用户数据
を作成します。
目的関数
目的関数を作成します。この関数では,固定された交差検証分割に対する交差検証損失を計算し,生成されたモデル内のサポートベクターの個数を返します。
函数[f,viol,nsupp] = mysvmminfn(x,cdata,grp,c) SVMModel = fitcsvm(cdata,grp, c)“KernelFunction”,“rbf”,...“KernelScale”x.sigma,“BoxConstraint”, x.box);f = kfoldLoss(crossval(svm模型,“CVPartition”, c));Viol = [];nsupp = sum(svm . issup金宝appportvector);结束
カスタムプロット関数
用户数据
で計算される情報を使用するカスタムプロット関数を作成します。現在の制約の個数と最良の目的関数が見つかった状態におけるモデルの制約の個数の両方を関数にプロットさせます。
函数停止= svmsuppvec(结果,状态)持续的h nbest bestist nsupptrace stop = false;开关状态情况下“初始”Hs =数字;bestist = [];Nbest = 0;Nsupptrace = [];情况下“迭代”figure(hs) nsupp = results.UserDataTrace{end};从UserDataTrace属性获取nsupp。Nsupptrace (end+1) = nsupp;%在vector中累积nsupp值。如果(results.ObjectiveTrace(end) == min(results.ObjectiveTrace)) || (length(results.ObjectiveTrace) == 1)%电流为最佳Nbest = nsupp;结束best = [best,nbest];阴谋(1:长度(nsupptrace) nsupptrace,“b”1:长度(besthist)、besthist“r——”)包含的迭代次数ylabel支持向量的数量金宝app标题每次迭代的支持向量数金宝app传奇(当前迭代的,“最好的目标”,“位置”,“最佳”) drawnow结束
モデルの設定
各クラスにいて10個ずの基底点を生成します。
rng默认的Grnpop = mvnrnd([1,0],eye(2),10);Redpop = mvnrnd([0,1],eye(2),10);
各クラスにいて100。
Redpts = 0 (100,2);为i = 1:10 0 grnpts(我:)= mvnrnd (grnpop(兰迪(10):)、眼睛(2)* 0.02);redpts(我)= mvnrnd (redpop(兰迪(10):)、眼睛(2)* 0.02);结束
デタを1の行列に格納し,grp
を作成します。
Cdata = [grnpts;redpts];GRP = ones(200,1);%绿色标签1,红色标签-1Grp (101:200) = -1;
既定のSVMパラメ,タ,を使用して,すべてのデ,タの基本分類をチェックします。
SVMModel = fitcsvm(cdata,grp,“KernelFunction”,“rbf”,“类名”[1]);
交差検証を固定する分割を設定します。この手順を行わないと,交差検証がランダムになるので,目的関数が確定的ではなくなります。
C = cvpartition(200,“KFold”10);
元のあてはめたモデルの交差検証の精度をチェックします。
损失= kfoldLoss(fitcsvm(cdata,grp,“CVPartition”c...“KernelFunction”,“rbf”,“BoxConstraint”SVMModel.BoxConstraints (1)...“KernelScale”, SVMModel.KernelParameters.Scale))
损失= 0.1350
最適化用の変数の準備
目的関数は,入力Z = [rbf_sigma,boxconstraint]
を受け入れ,交差検証損失値z
を返します。z
の成分を1 e-5
~1 e5
の範囲で正の変数に対数変換します。どの値が適切であるかがわからないので,広い範囲を選択します。
sigma = optimizableVariable(“σ”(1 e-5, 1 e5),“转换”,“日志”);box = optimizableVariable(“盒子”(1 e-5, 1 e5),“转换”,“日志”);
プロット関数の設定とオプティマ▪▪ザ▪▪の呼び出し
bayesopt
を使用して最良のパラメタ(σ,盒子)
を求めます。再現性を得るために,“expected-improvement-plus”
の獲得関数を選択します。既定の獲得関数は実行時に決定されるので,結果が異なる場合があります。
反復回数の関数としてサポートベクターの個数をプロットし,見つかった最良のパラメーターに対するサポートベクターの個数をプロットします。
Obj = @(x)mysvmminfn(x,cdata,grp,c);结果= bayesopt(obj,[sigma,box],...“IsObjectiveDeterministic”,真的,“详细”0,...“AcquisitionFunctionName”,“expected-improvement-plus”,...“PlotFcn”, {@svmsuppvec、@plotObjectiveModel @plotMinObjective})
results = BayesianOptimization with properties: ObjectiveFcn: @(x)mysvmminfn(x,cdata,grp,c) variabledescription: [1x2 optimizableVariable] Options: [1x1 struct] MinObjective: 0.0750 XAtMinObjective: [1x2 table] minestimatedobjobjective: 0.0750 xatminestimatedobjobjective: [1x2 table] numobjectiveevaluation: 30 TotalElapsedTime: 84.1549 NextPoint: [1x2 table] XTrace: [30x2 table] ObjectiveTrace: [30x1 double] ConstraintsTrace: [] UserDataTrace: {30x1 cell} ObjectiveEvaluationTimeTrace:[30x1 double] IterationTimeTrace: [30x1 double] ErrorTrace: [30x1 double]可行性trace: [30x1 logical]可行性probabilitytrace: [30x1 double] IndexOfMinimumTrace: [30x1 double] objectivminimumtrace: [30x1 double] estimatedobjectivminimumtrace: [30x1 double]