ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

ベイズ最適化の目的関数

目的関数の構文

bayesopt は目的関数を最小化しようとします。代わりに関数を最大化するには、最大化する関数の負数を目的関数として設定します。関数を最大化 (MATLAB)を参照してください。

bayesopt は変数のテーブルを目的関数に渡します。変数は宣言された名前と型をもちます。ベイズ最適化用の変数を参照してください。

目的関数のシグネチャは次のとおりです。

[objective,coupledconstraints,userdata] = fun(x)
  1. objectivex における目的関数の値、実数スカラー。

  2. coupledconstraints — 存在する場合は連結制約の値 (オプションの出力)、実数値のベクトル。負の値は制約が満たされることを、正の値は満たされないことを示します。詳細は、連結制約を参照してください。

  3. userdata — プロットや対数化などでさらに使用するために関数で返すことができるオプション データ (オプションの出力)。例については、ベイズ最適化のプロット関数を参照してください。

目的関数の例

この目的関数は、box および sigma というパラメーターがある SVM モデルの交差検証近似における損失を返します。また、サポート ベクターの個数が 100 を超える場合に正 (実行不可能) になる連結制約関数も返します (100 は実行可能、101 は実行不可能)。

function [objective,constraint] = mysvmfun(x,cdata,grp)
SVMModel = fitcsvm(cdata,grp,'KernelFunction','rbf',...
    'BoxConstraint',x.box,...
    'KernelScale',x.sigma);
objective = kfoldLoss(crossval(SVMModel));
constraint = sum(SVMModel.SupportVectors) - 100.5;

目的関数のエラー

目的関数が有限の実数スカラー以外を返した場合、bayesopt は目的関数がエラーを返したと見なします。たとえば、複素数値、NaNInf、または複数のエントリが含まれている行列を目的関数が返した場合、bayesopt は目的関数でエラーが発生したと見なします。エラーに遭遇した場合、bayesopt は最適化を続行し、エラー発生点のベイズ モデルを自動的に更新します。このベイズ モデルは "誤差モデル" です。bayesopt はは誤差モデルを連結制約として組み込みます。連結制約を参照してください。

誤差が存在する場合、bayesopt の名前と値のペア PlotFcn@plotConstraintModels に設定すると誤差モデルをプロットできます。または、ベイズ最適化の結果に対して遡及的に plot を呼び出して @plotConstraintModels を含めることができます。

関連するトピック