メインコンテンツ

BayesianOptimization

ベイズ最適化の結果

説明

BayesianOptimization オブジェクトは bayesopt 関数の出力であり、ベイズ最適化の結果が格納されます。さらに、このオブジェクトには、プロット関数または出力関数でアクセスできる bayesopt の各反復のデータも格納されます。

作成

BayesianOptimization オブジェクトの作成には bayesopt 関数を使用します。詳細については、ベイズ最適化を実行する方法を参照してください。

プロパティ

すべて展開する

問題定義のプロパティ

この プロパティ は読み取り専用です。

bayesopt で使用した引数 ObjectiveFcn。関数ハンドルとして返されます。bayesopt を直接呼び出す場合、ObjectiveFcnbayesopt の目的関数引数になります。

データ型: function_handle

この プロパティ は読み取り専用です。

bayesopt で使用した引数 VariableDescriptionsoptimizableVariable オブジェクトのベクトルとして返されます。bayesopt を直接呼び出す場合、VariableDescriptionsbayesopt の変数説明引数になります。

この プロパティ は読み取り専用です。

bayesopt で使用したオプション。構造体として返されます。bayesopt を直接呼び出す場合、Optionsbayesopt で使用したオプションのセット (名前と値の引数に対応) になります。bayesopt入力引数を参照してください。

Options には次のフィールドが含まれます。

オプション名意味
AcquisitionFunctionName獲得関数名 (ダッシュを削除)。獲得関数のタイプを参照してください。
IsObjectiveDeterministic目的関数が確定的な場合は true、それ以外の場合は false
ExplorationRatioAcquisitionFunctionName'expectedimprovementplus' または 'expectedimprovement-persecondplus' の場合のみ使用。プラスを参照してください。
  
MaxObjectiveEvaluations目的関数の評価制限。
MaxTime制限時間。
  
XConstraintFcn変数の確定的制約。確定的制約 — XConstraintFcnを参照してください。
ConditionalVariableFcn変数の条件付き制約。条件付き制約 — ConditionalVariableFcnを参照してください。
NumCoupledConstraints連結制約の個数。連結制約を参照してください。
CoupledConstraintTolerances連結制約の許容誤差。連結制約を参照してください。
AreCoupledConstraintsDeterministic各連結制約が確定的であるかどうかを指定する logical ベクトル。
  
Verboseコマンド ラインの表示レベル。
OutputFcn各反復後に呼び出される関数。ベイズ最適化の出力関数を参照してください。
SaveVariableName出力関数 @assignInBase の変数名。
SaveFileName出力関数 @saveToFile のファイル名。
PlotFcn各反復後に呼び出されるプロット関数。ベイズ最適化のプロット関数を参照してください。
  
InitialXbayesopt で目的関数を評価した点。
InitialObjectiveInitialX における目的関数の値。
InitialConstraintViolationsInitialX における連結制約関数の値。
InitialErrorValuesInitialX における誤差値。
InitialObjectiveEvaluationTimesInitialX における目的関数の評価時間。
InitialIterationTimes目的関数の評価および他の計算を含む、各反復の時間。

データ型: struct

解のプロパティ

この プロパティ は読み取り専用です。

観測された目的関数の最小値。実数スカラーとして返されます。最適化に連結制約または評価誤差が含まれる場合、この値は、最終的な制約および誤差モデルに準じて実行可能であるすべての観測点における最小値になります。

データ型: double

この プロパティ は読み取り専用です。

目的関数最小値の観測点。1D 列の table として返されます。D は変数の個数です。

データ型: table

この プロパティ は読み取り専用です。

XAtMinEstimatedObjective における目的関数の推定値。実数スカラーとして返されます。

MinEstimatedObjective は、最終的な目的モデルの事後分布の平均値です。MinEstimatedObjective の値は、XAtMinEstimatedObjective をオブジェクト関数 predictObjective に渡して推定されます。

データ型: double

この プロパティ は読み取り専用です。

探索点内において目的関数値の信頼限界の上限が最小になる点。1D 列の table として返されます。D は変数の個数です。探索点の信頼限界の上限は、最終的な目的モデルを使用して求められます。

XAtMinEstimatedObjective は、関数 bestPoint によって既定の基準 ('min-visited-upper-confidence-interval') で返される最適な点と同じです。

データ型: table

この プロパティ は読み取り専用です。

目的関数の評価回数。正の整数として返されます。この回数には、事後モデルを形成するために使用した初期評価と最適化反復時の評価が含まれます。

データ型: double

この プロパティ は読み取り専用です。

秒単位の最適化の合計経過時間。正のスカラーとして返されます。

データ型: double

この プロパティ は読み取り専用です。

最適化継続時の次の評価点。1D 列の table として返されます。D は変数の個数です。

データ型: table

トレースのプロパティ

この プロパティ は読み取り専用です。

目的関数の評価点。TD 列の table として返されます。T は評価点の個数、D は変数の個数です。

データ型: table

この プロパティ は読み取り専用です。

目的関数の値。長さ T の列ベクトルとして返されます。T は評価点の個数です。ObjectiveTrace には目的関数評価の履歴が格納されます。

データ型: double

この プロパティ は読み取り専用です。

目的関数の評価時間。長さ T の列ベクトルとして返されます。T は評価点の個数です。目的関数は連結制約を計算するので、ObjectiveEvaluationTimeTrace には連結制約を評価するために必要な時間が含まれます。

データ型: double

この プロパティ は読み取り専用です。

反復時間。長さ T の列ベクトルとして返されます。T は評価点の個数です。IterationTimeTrace には目的関数の評価時間とその他のオーバーヘッドが含まれます。

データ型: double

この プロパティ は読み取り専用です。

連結制約の値。TK 列の配列として返されます。T は評価点の個数、K は連結制約の個数です。

データ型: double

この プロパティ は読み取り専用です。

誤差指標。-1 または 1 の入力が格納された長さ T の列ベクトルとして返されます。T は評価点の個数です。1 の入力はそれぞれ、XTrace 内の対応する点で目的関数がエラーを発行するか NaN を返すことを示します。-1 の入力はそれぞれ、目的関数の値が計算されることを示します。

データ型: double

この プロパティ は読み取り専用です。

実行可能性の指標。長さ T の logical 列ベクトルとして返されます。T は評価点の個数です。1 の入力はそれぞれ、XTrace 内の対応する点において最終的な制約モデルが実行可能性を予測することを示します。

データ型: logical

この プロパティ は読み取り専用です。

評価点が実行可能である確率。長さ T の列ベクトルとして返されます。T は評価点の個数です。この確率は、XTrace 内の対応する点における、誤差制約モデルを含む最終的な制約モデルに由来します。

データ型: double

この プロパティ は読み取り専用です。

最小実行可能目的関数を与える評価。整数インデックスが格納されている長さ T の列ベクトルとして返されます。T は評価点の個数です。実行可能性は、誤差制約モデルを含む、各反復での制約モデルに関して決定されます。

データ型: double

この プロパティ は読み取り専用です。

観測された目的関数の最小値。長さ T の列ベクトルとして返されます。T は評価点の個数です。

データ型: double

この プロパティ は読み取り専用です。

推定された目的関数の値。長さ T の列ベクトルとして返されます。T は評価点の個数です。各反復で推定される目的関数の値は、その反復における目的モデルを基準に決定されます。各反復で、オブジェクト関数 predictObjective を使用して、探索点内において目的関数値の信頼限界の上限が最小になる点における目的関数の値が推定されます。

データ型: double

この プロパティ は読み取り専用です。

目的関数の補助データ。長さ T の cell 配列として返されます。T は評価点の個数です。cell 配列の各エントリは、目的関数の 3 番目の出力で返される UserData の値です。

データ型: cell

オブジェクト関数

bestPoint基準に従った、ベイズ最適化における最適点
plotベイズ最適化の結果のプロット
predictConstraints一連の点における連結制約違反の予測
predictError一連の点における誤差値の予測
predictObjective一連の点における目的関数の予測
predictObjectiveEvaluationTime一連の点における目的関数の実行回数の予測
resumeベイズ最適化の再開

すべて折りたたむ

この例では、bayesopt を使用して交差検証損失を最小化することにより BayesianOptimization オブジェクトを作成する方法を示します。

ionosphere データに対し、KNN 分類器のハイパーパラメーターを最適化、つまり、交差検証損失が最小になる KNN のハイパーパラメーターを求めます。bayesopt で次のハイパーパラメーターに対する最小化を行います。

  • 1 ~ 30 の最近傍サイズ。

  • 距離関数 'chebychev''euclidean' および 'minkowski'

再現性を得るため、乱数シードと分割を設定し、AcquisitionFunctionName オプションを 'expected-improvement-plus' に設定します。反復表示を非表示にするには 'Verbose'0 に設定します。このデータを組み込む無名関数として fun を作成して、区分 c と近似データ X および Y を目的関数 fun に渡します。関数のパラメーター化 を参照してください。

load ionosphere
rng default
num = optimizableVariable('n',[1,30],'Type','integer');
dst = optimizableVariable('dst',{'chebychev','euclidean','minkowski'},'Type','categorical');
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,[num,dst],'Verbose',0,...
    'AcquisitionFunctionName','expected-improvement-plus')

Figure contains an axes object. The axes object with title Objective function model, xlabel n, ylabel dst contains 5 objects of type line, surface, contour. One or more of the lines displays its values using only markers These objects represent Observed points, Model mean, Next point, Model minimum feasible.

Figure contains an axes object. The axes object with title Min objective vs. Number of function evaluations, xlabel Function evaluations, ylabel Min objective contains 2 objects of type line. These objects represent Min observed objective, Estimated min objective.

results = 
  BayesianOptimization with properties:

                      ObjectiveFcn: @(x)kfoldLoss(fitcknn(X,Y,'CVPartition',c,'NumNeighbors',x.n,'Distance',char(x.dst),'NSMethod','exhaustive'))
              VariableDescriptions: [1×2 optimizableVariable]
                           Options: [1×1 struct]
                      MinObjective: 0.1197
                   XAtMinObjective: [1×2 table]
             MinEstimatedObjective: 0.1213
          XAtMinEstimatedObjective: [1×2 table]
           NumObjectiveEvaluations: 30
                  TotalElapsedTime: 30.3867
                         NextPoint: [1×2 table]
                            XTrace: [30×2 table]
                    ObjectiveTrace: [30×1 double]
                  ConstraintsTrace: []
                     UserDataTrace: {30×1 cell}
      ObjectiveEvaluationTimeTrace: [30×1 double]
                IterationTimeTrace: [30×1 double]
                        ErrorTrace: [30×1 double]
                  FeasibilityTrace: [30×1 logical]
       FeasibilityProbabilityTrace: [30×1 double]
               IndexOfMinimumTrace: [30×1 double]
             ObjectiveMinimumTrace: [30×1 double]
    EstimatedObjectiveMinimumTrace: [30×1 double]

バージョン履歴

R2016b で導入