Main Content

BayesianOptimization

ベイズ最適化の結果

説明

BayesianOptimizationオブジェクトには、ベイズ最適化の結果が格納されます。これは、bayesopt、またはfitcdiscrのような名前と値のペアOptimizeHyperparametersを受け入れる近似関数の出力です。さらに、プロット関数または出力関数でアクセスできるbayesoptの各反復のデータもBayesianOptimizationオブジェクトに格納されます。

作成

BayesianOptimizationオブジェクトを作成するには、関数bayesoptを使用するか、名前と値の引数OptimizeHyperparametersを指定して次のいずれかの近似関数を使用します。

プロパティ

すべて展開する

問題定義のプロパティ

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

bayesoptで使用した引数ObjectiveFcn。関数ハンドルとして指定されます。

  • bayesoptを直接呼び出した場合、ObjectiveFcnbayesoptの目的関数引数です。

  • 名前と値のペアの引数'OptimizeHyperparameters'が含まれる近似関数を呼び出す場合、ObjectiveFcnは、分類の場合は誤分類率を返す関数のハンドル、回帰の場合は 5 分割交差検証で測定した交差検証損失に 1 を加算した値の対数を返す関数のハンドルです。

データ型:function_handle

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

bayesoptで使用した引数VariableDescriptionsoptimizableVariableオブジェクトのベクトルとして指定されます。

  • bayesoptを直接呼び出した場合、VariableDescriptionsbayesoptの変数説明引数になります。

  • 名前と値のペアOptimizeHyperparametersを使用して近似関数を呼び出した場合、VariableDescriptionsはハイパーパラメーターのベクトルになります。

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

bayesoptで使用したオプション。構造体として指定されます。

  • bayesoptを直接呼び出した場合、Optionsbayesoptで使用したオプション (名前と値のペア) になります。bayesopt入力引数を参照してください。

  • 名前と値のペアOptimizeHyperparametersを使用して近似関数を呼び出した場合、Optionsは既定のbayesoptオプションを名前と値のペアHyperparameterOptimizationOptionsで修正したものになります。

Optionsは、以下のフィールドが含まれている読み取り専用の構造体です。

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

データ型:struct

解のプロパティ

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

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

データ型:double

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

目的関数最小値の観測点。1D列のテーブルとして指定されます。Dは変数の個数です。

データ型:table

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

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

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

データ型:double

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

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

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

データ型:table

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

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

データ型:double

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

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

データ型:double

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

最適化継続時の次の評価点。1D列のテーブルとして指定されます。Dは変数の個数です。

データ型:table

トレースのプロパティ

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

目的関数が評価された点。TD列のテーブルとして指定されます。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の論理列ベクトルとして指定されます。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に渡します。関数のパラメーター化を参照してください。

loadionosphererngdefaultnum = 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 contains 5 objects of type line, surface, contour. 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 contains 2 objects of type line. These objects represent Min observed objective, Estimated min objective.

results = BayesianOptimization with properties: ObjectiveFcn: [function_handle] VariableDescriptions: [1x2 optimizableVariable] Options: [1x1 struct] MinObjective: 0.1197 XAtMinObjective: [1x2 table] MinEstimatedObjective: 0.1213 XAtMinEstimatedObjective: [1x2 table] NumObjectiveEvaluations: 30 TotalElapsedTime: 50.7622 NextPoint: [1x2 table] XTrace: [30x2 table] ObjectiveTrace: [30x1 double] ConstraintsTrace: [] UserDataTrace: {30x1 cell} ObjectiveEvaluationTimeTrace: [30x1 double] IterationTimeTrace: [30x1 double] ErrorTrace: [30x1 double] FeasibilityTrace: [30x1 logical] FeasibilityProbabilityTrace: [30x1 double] IndexOfMinimumTrace: [30x1 double] ObjectiveMinimumTrace: [30x1 double] EstimatedObjectiveMinimumTrace: [30x1 double]

この例では、SVM 分類器のベイズ最適化を使用してionosphereデータの交差検証損失を最小化する方法を示します。

データを読み込みます。

loadionosphere

'auto'パラメーターを使用して分類を最適化します。

rngdefault% For reproducibilityMdl = fitcsvm(X,Y,'OptimizeHyperparameters','auto')
|=====================================================================================================| | Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | BoxConstraint| KernelScale | | | result | | runtime | (observed) | (estim.) | | | |=====================================================================================================| | 1 | Best | 0.20513 | 18.245 | 0.20513 | 0.20513 | 64.836 | 0.0015729 | | 2 | Accept | 0.35897 | 0.18958 | 0.20513 | 0.21471 | 0.036335 | 5.5755 | | 3 | Best | 0.13105 | 6.2731 | 0.13105 | 0.14133 | 0.0022147 | 0.0023957 | | 4 | Accept | 0.35897 | 0.33082 | 0.13105 | 0.13109 | 5.1259 | 98.62 | | 5 | Best | 0.12536 | 0.40178 | 0.12536 | 0.12538 | 0.0010035 | 0.022328 | | 6 | Accept | 0.13105 | 0.26876 | 0.12536 | 0.12624 | 0.0010683 | 0.010111 | | 7 | Accept | 0.1339 | 0.43142 | 0.12536 | 0.12546 | 0.0010422 | 0.0092339 | | 8 | Accept | 0.12821 | 5.6298 | 0.12536 | 0.12544 | 0.073628 | 0.014339 | | 9 | Accept | 0.13675 | 0.55972 | 0.12536 | 0.12553 | 0.035987 | 0.046296 | | 10 | Accept | 0.13675 | 12.959 | 0.12536 | 0.12562 | 0.001151 | 0.0010009 | | 11 | Accept | 0.13105 | 0.41699 | 0.12536 | 0.12811 | 0.0044333 | 0.022395 | | 12 | Accept | 0.12536 | 0.34166 | 0.12536 | 0.12533 | 0.001004 | 0.027453 | | 13 | Accept | 0.12536 | 0.37955 | 0.12536 | 0.125 | 0.0010544 | 0.049896 | | 14 | Accept | 0.15385 | 17.08 | 0.12536 | 0.12501 | 959.03 | 0.10538 | | 15 | Accept | 0.1339 | 0.23794 | 0.12536 | 0.12784 | 0.0010051 | 0.035194 | | 16 | Best | 0.12251 | 0.23722 | 0.12251 | 0.1268 | 0.0010126 | 0.023131 | | 17 | Accept | 0.1396 | 0.19424 | 0.12251 | 0.12597 | 0.018032 | 0.54074 | | 18 | Accept | 0.1339 | 0.23041 | 0.12251 | 0.12622 | 0.004112 | 0.20821 | | 19 | Accept | 0.17094 | 0.29339 | 0.12251 | 0.12622 | 0.001033 | 0.35011 | | 20 | Accept | 0.12536 | 0.43526 | 0.12251 | 0.1266 | 0.22624 | 0.2874 | |=====================================================================================================| | Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | BoxConstraint| KernelScale | | | result | | runtime | (observed) | (estim.) | | | |=====================================================================================================| | 21 | Accept | 0.12821 | 0.48706 | 0.12251 | 0.12643 | 0.039407 | 0.22791 | | 22 | Accept | 0.12251 | 0.29639 | 0.12251 | 0.12627 | 0.23615 | 0.41645 | | 23 | Accept | 0.12536 | 0.25093 | 0.12251 | 0.12287 | 0.87866 | 0.49296 | | 24 | Best | 0.11681 | 0.20622 | 0.11681 | 0.12095 | 0.2277 | 0.39665 | | 25 | Accept | 0.11966 | 0.23424 | 0.11681 | 0.12051 | 0.22872 | 0.39248 | | 26 | Accept | 0.12821 | 0.28114 | 0.11681 | 0.12202 | 0.19152 | 0.40794 | | 27 | Accept | 0.12821 | 0.6465 | 0.11681 | 0.1224 | 0.8114 | 0.35523 | | 28 | Accept | 0.13105 | 0.16554 | 0.11681 | 0.12264 | 6.7083 | 5.67 | | 29 | Accept | 0.14245 | 0.53824 | 0.11681 | 0.12249 | 741.3 | 5.5065 | | 30 | Accept | 0.12536 | 0.28253 | 0.11681 | 0.12223 | 24.782 | 2.325 |

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

Figure contains an axes object. The axes object with title Objective function model contains 5 objects of type line, surface, contour. These objects represent Observed points, Model mean, Next point, Model minimum feasible.

__________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 110.7223 seconds Total objective function evaluation time: 68.5248 Best observed feasible point: BoxConstraint KernelScale _____________ ___________ 0.2277 0.39665 Observed objective function value = 0.11681 Estimated objective function value = 0.1222 Function evaluation time = 0.20622 Best estimated feasible point (according to models): BoxConstraint KernelScale _____________ ___________ 0.22872 0.39248 Estimated objective function value = 0.12223 Estimated function evaluation time = 0.28795
Mdl = ClassificationSVM ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'none' NumObservations: 351 HyperparameterOptimizationResults: [1x1 BayesianOptimization] Alpha: [100x1 double] Bias: -4.5586 KernelParameters: [1x1 struct] BoxConstraints: [351x1 double] ConvergenceInfo: [1x1 struct] IsSupportVector: [351x1 logical] Solver: 'SMO' Properties, Methods

この当てはめでは、既定の 5 分割交差検証について損失が約 12% になりました。

返されたモデルのHyperparameterOptimizationResultsプロパティで返されたBayesianOptimizationオブジェクトを確認します。

disp(Mdl.HyperparameterOptimizationResults)
BayesianOptimization with properties: ObjectiveFcn: @createObjFcn/inMemoryObjFcn VariableDescriptions: [5x1 optimizableVariable] Options: [1x1 struct] MinObjective: 0.1168 XAtMinObjective: [1x2 table] MinEstimatedObjective: 0.1222 XAtMinEstimatedObjective: [1x2 table] NumObjectiveEvaluations: 30 TotalElapsedTime: 110.7223 NextPoint: [1x2 table] XTrace: [30x2 table] ObjectiveTrace: [30x1 double] ConstraintsTrace: [] UserDataTrace: {30x1 cell} ObjectiveEvaluationTimeTrace: [30x1 double] IterationTimeTrace: [30x1 double] ErrorTrace: [30x1 double] FeasibilityTrace: [30x1 logical] FeasibilityProbabilityTrace: [30x1 double] IndexOfMinimumTrace: [30x1 double] ObjectiveMinimumTrace: [30x1 double] EstimatedObjectiveMinimumTrace: [30x1 double]

バージョン履歴

R2016b で導入