このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
ベイズ最適化の出力関数
ベイズ最適化の出力関数とは
出力関数とは、bayesopt
の各反復の最後に呼び出される関数です。出力関数は反復を停止させることができます。また、プロットの作成、ワークスペースまたはファイルへの情報の保存、その他の任意の計算が行えます。
反复出のませませませんするする监视するするだけだけするするするするするするするするするするするするするするするするするするするするするするするするするするするするするするするするするするするするだけするするする〗
組み込み出力関数
これらの組み込み出力関数は、最適化の結果をファイルまたはワークスペースに保存します。
@assignInBase
- - - - - -各反復後にワークスペース内の'BayesoptResults'
という名前の変数に結果を保存します。別の名前を選択するには、名前と値の引数SaveVariableName
を渡します。@saveToFile
- - - - - -各反復後に現在のフォルダー内の'BayesoptResults.mat'
という名前のファイルに結果を保存します。別の名前またはフォルダーを選択するには、名前と値の引数SaveFileName
を渡します。
たとえば,各各反复后后に结果'BayesIterations'
という名前のワークスペース変数に保存するには、次のようにします。
results = bayesopt(fun,vars,'OutputFcn',@assignInBase,...'SaveVariableName','BayesIterations')
カスタム出力関数
次のシグネチャを使用してカスタム出力関数を記述します。
stop = outputfun(结果,状态)
bayesopt
は変数results
および年代tate
をカスタム関数に渡します。カスタム関数では、反復を停止する場合はtrue
、継続を許可する場合はfalse
に設定した年代top
を返します。
results
はBayesianOptimization
クラスのオブジェクトです。results
には、それまでの計算に関して使用できる情報が含まれています。
年代tate
は次の値が可能です。
'initial'
- - - - - -bayesopt
は反復を開始しようとしています。'iteration'
- - - - - -bayesopt
は反復を 1 回完了したところです。'done'
- - - - - -bayesopt
で最後の反復が完了しました。
たとえば、ベイズ最適化の出力関数を参照してください。
ベイズ最適化の出力関数
この例では、ベイズ最適化でカスタム出力関数を使用する方法を示します。この出力関数は、交差検証誤差率である目的関数が 13% 未満になると最適化を停止させます。また、各反復の時間もプロットします。
functionstop = outputfun(结果,状态)persistenth stop = false;年代witch年代tatecase'initial'h = figure;case'iteration'ifresults.MinObjective < 0.13 stop = true;endfigure(h) tms = results.IterationTimeTrace; plot(1:numel(tms),tms') xlabel('Iteration Number') ylabel('Time for Iteration') title('Time for Each Iteration') drawnowend
目的関数はionosphere
データの KNN 分類の交差検証損失です。データを読み込み、再現性を得るために既定の乱数ストリームを設定します。
loadionosphererngdefault
3 つの距離計量について 1 ~ 30 の近傍サイズで最適化します。
num = optimizableVariable('n',[1,30],'Type','integer'); dst = optimizableVariable('DST',{'chebychev','euclidean','minkowski'},'Type','categorical'); vars = [num,dst];
交差検証分割と目的関数を設定します。再現性を得るために、AcquisitionFunctionName
を'expected-improvement-plus'
に設定します。最適化を実行します。
c = cvpartition(351,'Kfold',5); fun = @(x)kfoldLoss(fitcknn(X,Y,'CVPartition',c,'NumNeighbors',x.n,...'Distance',char(x.dst),'NSMethod','exhaustive')); results = bayesopt(fun,vars,'OutputFcn',@outputfun,...'AcquisitionFunctionName','expected-improvement-plus');
|=====================================================================================================| | Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | n | dst | | | result | | runtime | (observed) | (estim.) | | | |=====================================================================================================| | 1 | Best | 0.19943 | 0.32044 | 0.19943 | 0.19943 | 24 | chebychev | | 2 | Best | 0.16809 | 0.21594 | 0.16809 | 0.1747 | 9 | euclidean | | 3 | Best | 0.12536 | 0.19448 | 0.12536 | 0.12861 | 3 | chebychev | __________________________________________________________ Optimization completed. Total function evaluations: 3 Total elapsed time: 6.6604 seconds Total objective function evaluation time: 0.73086 Best observed feasible point: n dst _ _________ 3 chebychev Observed objective function value = 0.12536 Estimated objective function value = 0.12861 Function evaluation time = 0.19448 Best estimated feasible point (according to models): n dst _ _________ 3 chebychev Estimated objective function value = 0.12861 Estimated function evaluation time = 0.23776