Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

ベイズ最適化の目的関数

目的関数の構文

bayesoptは目的関数を最小化しようとします。代わりに関数を最大化するには、最大化する関数の負数を目的関数として設定します。関数を最大化を参照してください。目的関数に追加のパラメーターを含めるには、関数のパラメーター化を参照してください。

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

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

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

  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;

目的関数を使用するには、ワークスペースにcdatagrpが存在すると仮定して、データを組み込む無名関数を作成します (関数のパラメーター化を参照)。

fun = @(x)mysvmfun(x,cdata,grp); results = bayesopt(fun,vars)% Assumes vars exists

目的関数のエラー

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

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

関連するトピック