このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
BayesianOptimization
ベイズ最適化の結果
説明
作成
BayesianOptimization
オブジェクトを作成するには、関数 bayesopt
を使用するか、名前と値の引数 OptimizeHyperparameters
を指定して次のいずれかの近似関数を使用します。
プロパティ
問題定義のプロパティ
ObjectiveFcn
— bayesopt
で使用した引数 ObjectiveFcn
関数ハンドル
この プロパティ は読み取り専用です。
bayesopt
で使用した引数 ObjectiveFcn
。関数ハンドルとして指定されます。
bayesopt
を直接呼び出した場合、ObjectiveFcn
はbayesopt
の目的関数引数です。名前と値のペアの引数
'OptimizeHyperparameters'
が含まれる近似関数を呼び出す場合、ObjectiveFcn
は、分類の場合は誤分類率を返す関数のハンドル、回帰の場合は 5 分割交差検証で測定した交差検証損失に 1 を加算した値の対数を返す関数のハンドルです。
データ型: function_handle
VariableDescriptions
— bayesopt
で使用した引数 VariableDescriptions
optimizableVariable
オブジェクトのベクトル
この プロパティ は読み取り専用です。
bayesopt
で使用した引数 VariableDescriptions
。optimizableVariable
オブジェクトのベクトルとして指定されます。
bayesopt
を直接呼び出した場合、VariableDescriptions
はbayesopt
の変数説明引数になります。名前と値のペア
OptimizeHyperparameters
を使用して近似関数を呼び出した場合、VariableDescriptions
はハイパーパラメーターのベクトルになります。
Options
— bayesopt
で使用したオプション
構造体
この プロパティ は読み取り専用です。
bayesopt
で使用したオプション。構造体として指定されます。
bayesopt
を直接呼び出した場合、Options
はbayesopt
で使用したオプション (名前と値のペア) になります。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
解のプロパティ
MinObjective
— 観測された目的関数の最小値
実数スカラー
この プロパティ は読み取り専用です。
観測された目的関数の最小値。実数スカラーとして指定されます。連結制約または評価誤差がある場合、この値は、最終的な制約および誤差モデルに準じて実行可能であるすべての観測点における最小値になります。
データ型: double
XAtMinObjective
— 目的関数最小値の観測点
1
行 D
列のテーブル
この プロパティ は読み取り専用です。
目的関数最小値の観測点。1
行 D
列のテーブルとして指定されます。D
は変数の個数です。
データ型: table
MinEstimatedObjective
— 目的関数の推定値
実数スカラー
この プロパティ は読み取り専用です。
XAtMinEstimatedObjective
における目的関数の推定値。実数スカラーとして指定されます。
MinEstimatedObjective
は、最終的な目的モデルの事後分布の平均値です。MinEstimatedObjective
の値は、XAtMinEstimatedObjective
をオブジェクト関数 predictObjective
に渡して推定されます。
データ型: double
XAtMinEstimatedObjective
— 目的関数値の信頼限界の上限が最小になる点
1
行 D
列のテーブル
この プロパティ は読み取り専用です。
探索点内において目的関数値の信頼限界の上限が最小になる点。1
行 D
列のテーブルとして指定されます。D
は変数の個数です。探索点の信頼限界の上限は、最終的な目的モデルを使用して求められます。
XAtMinEstimatedObjective
は、関数 bestPoint
によって既定の基準 ('min-visited-upper-confidence-interval'
) で返される最良の点と同じです。
データ型: table
NumObjectiveEvaluations
— 目的関数の評価回数
正の整数
この プロパティ は読み取り専用です。
目的関数の評価回数。正の整数として指定されます。これには、事後モデルを形成するための初期評価と最適化反復時の評価が含まれます。
データ型: double
TotalElapsedTime
— 秒単位の最適化の合計経過時間
正のスカラー
この プロパティ は読み取り専用です。
秒単位の最適化の合計経過時間。正のスカラーとして指定されます。
データ型: double
NextPoint
— 最適化継続時の次の評価点
1
行 D
列のテーブル
この プロパティ は読み取り専用です。
最適化継続時の次の評価点。1
行 D
列のテーブルとして指定されます。D
は変数の個数です。
データ型: table
トレースのプロパティ
XTrace
— 目的関数が評価された点
T
行 D
列のテーブル
この プロパティ は読み取り専用です。
目的関数が評価された点。T
行 D
列のテーブルとして指定されます。T
は評価点の個数、D
は変数の個数です。
データ型: table
ObjectiveTrace
— 目的関数の値
長さ T
の列ベクトル
この プロパティ は読み取り専用です。
目的関数の値。長さ T
の列ベクトルとして指定されます。T
は評価点の個数です。ObjectiveTrace
には目的関数評価の履歴が格納されます。
データ型: double
ObjectiveEvaluationTimeTrace
— 目的関数の評価時間
長さ T
の列ベクトル
この プロパティ は読み取り専用です。
目的関数の評価時間。長さ T
の列ベクトルとして指定されます。T
は評価点の個数です。目的関数は連結制約を計算するので、ObjectiveEvaluationTimeTrace
には連結制約を評価する時間が含まれます。
データ型: double
IterationTimeTrace
— 反復時間
長さ T
の列ベクトル
この プロパティ は読み取り専用です。
反復時間。長さ T
の列ベクトルとして指定されます。T
は評価点の個数です。IterationTimeTrace
には目的関数の評価時間とその他のオーバーヘッドの両方が含まれます。
データ型: double
ConstraintsTrace
— 連結制約の値
T
行 K
列の配列
この プロパティ は読み取り専用です。
連結制約の値。T
行 K
列の配列として指定されます。T
は評価点の個数、K
は連結制約の個数です。
データ型: double
ErrorTrace
— 誤差指標
入力が -1
または 1
である長さ T
の列ベクトル
この プロパティ は読み取り専用です。
誤差指標。入力が -1
または 1
である長さ T
の列ベクトルとして指定されます。T
は評価点の個数です。1
の入力はそれぞれ、XTrace
内の対応する点で目的関数がエラーになったか NaN
を返したことを示します。-1
の入力はそれぞれ、目的関数の値が計算されたことを示します。
データ型: double
FeasibilityTrace
— 実行可能性の指標
長さ T
の論理列ベクトル
この プロパティ は読み取り専用です。
実行可能性の指標。長さ T
の論理列ベクトルとして指定されます。T
は評価点の個数です。1
の入力はそれぞれ、XTrace
内の対応する点において最終的な制約モデルが実行可能性を予測することを示します。
データ型: logical
FeasibilityProbabilityTrace
— 評価点が実行可能である確率
長さ T
の列ベクトル
この プロパティ は読み取り専用です。
評価点が実行可能である確率。長さ T
の列ベクトルとして指定されます。T
は評価点の個数です。この確率は、XTrace
内の対応する点における、誤差制約モデルを含む最終的な制約モデルに由来します。
データ型: double
IndexOfMinimumTrace
— 最小実行可能目的関数を与える評価
整数インデックスが格納されている長さ T
の列ベクトル
この プロパティ は読み取り専用です。
最小実行可能目的関数を与える評価。整数インデックスが格納されている長さ T
の列ベクトルとして指定されます。T
は評価点の個数です。実行可能性は、誤差制約モデルを含む、各反復で存在した制約モデルに関して決定されます。
データ型: double
ObjectiveMinimumTrace
— 観測された目的関数の最小値
長さ T
の列ベクトル
この プロパティ は読み取り専用です。
観測された目的関数の最小値。長さ T
の列ベクトルとして指定されます。T
は評価点の個数です。
データ型: double
EstimatedObjectiveMinimumTrace
— 推定された目的関数の値
長さ T
の列ベクトル
この プロパティ は読み取り専用です。
推定された目的関数の値。長さ T
の列ベクトルとして指定されます。T
は評価点の個数です。各反復で推定される目的関数の値は、その反復における目的モデルを基準に決定されます。各反復で、オブジェクト関数 predictObjective
を使用して、探索点内において目的関数値の信頼限界の上限が最小になる点における目的関数の値が推定されます。
データ型: double
UserDataTrace
— 目的関数の補助データ
長さ T
の cell 配列
この プロパティ は読み取り専用です。
目的関数の補助データ。長さ T
の cell 配列として指定されます。T
は評価点の個数です。cell 配列の各エントリは、目的関数の 3 番目の出力で返される UserData
です。
データ型: cell
オブジェクト関数
bestPoint | 基準に従った、ベイズ最適化における最良の点 |
plot | ベイズ最適化の結果のプロット |
predictConstraints | 一連の点における連結制約違反の予測 |
predictError | 一連の点における誤差値の予測 |
predictObjective | 一連の点における目的関数の予測 |
predictObjectiveEvaluationTime | 一連の点における目的関数の実行回数の予測 |
resume | ベイズ最適化の再開 |
例
bayesopt
の使用による BayesianOptimization
オブジェクトの作成
この例では、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')
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: 54.5620 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]
近似関数の使用による BayesianOptimization
オブジェクトの作成
この例では、SVM 分類器のベイズ最適化を使用して ionosphere
データの交差検証損失を最小化する方法を示します。
データを読み込みます。
load ionosphere
'auto'
パラメーターを使用して分類を最適化します。
rng default % For reproducibility Mdl = fitcsvm(X,Y,'OptimizeHyperparameters','auto')
|=====================================================================================================| | Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | BoxConstraint| KernelScale | | | result | | runtime | (observed) | (estim.) | | | |=====================================================================================================| | 1 | Best | 0.25926 | 16.249 | 0.25926 | 0.25926 | 64.836 | 0.0015729 | | 2 | Accept | 0.35897 | 0.13301 | 0.25926 | 0.26547 | 0.036335 | 5.5755 | | 3 | Best | 0.13105 | 5.9487 | 0.13105 | 0.14588 | 0.0022147 | 0.0023957 | | 4 | Accept | 0.35897 | 0.25363 | 0.13105 | 0.13108 | 5.1259 | 98.62 | | 5 | Best | 0.12251 | 0.29264 | 0.12251 | 0.12253 | 0.0010264 | 0.042908 | | 6 | Accept | 0.12536 | 0.29354 | 0.12251 | 0.1239 | 0.0010316 | 0.017593 | | 7 | Accept | 0.1396 | 0.31595 | 0.12251 | 0.12389 | 968.54 | 6.9219 | | 8 | Accept | 0.35897 | 0.20109 | 0.12251 | 0.12256 | 0.0013737 | 5.6105 | | 9 | Accept | 0.1339 | 4.8564 | 0.12251 | 0.12259 | 992.35 | 1.4952 | | 10 | Accept | 0.13105 | 1.4952 | 0.12251 | 0.12263 | 0.033714 | 0.025699 | | 11 | Accept | 0.12821 | 0.26909 | 0.12251 | 0.12449 | 0.0026766 | 0.032949 | | 12 | Accept | 0.12821 | 0.19516 | 0.12251 | 0.12537 | 0.0010192 | 0.0305 | | 13 | Best | 0.11681 | 0.5898 | 0.11681 | 0.1225 | 0.0010116 | 0.024726 | | 14 | Accept | 0.12536 | 0.25986 | 0.11681 | 0.12319 | 0.0010123 | 0.015705 | | 15 | Accept | 0.12536 | 0.40543 | 0.11681 | 0.12345 | 0.0010044 | 0.017502 | | 16 | Accept | 0.1339 | 0.48968 | 0.11681 | 0.12347 | 999.37 | 75.105 | | 17 | Accept | 0.35897 | 0.38627 | 0.11681 | 0.12329 | 984.97 | 967.71 | | 18 | Accept | 0.12536 | 0.19703 | 0.11681 | 0.12338 | 995.61 | 28.126 | | 19 | Accept | 0.1339 | 0.48402 | 0.11681 | 0.12341 | 0.0010283 | 0.08703 | | 20 | Accept | 0.13105 | 0.20344 | 0.11681 | 0.12343 | 963.1 | 35.084 | |=====================================================================================================| | Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | BoxConstraint| KernelScale | | | result | | runtime | (observed) | (estim.) | | | |=====================================================================================================| | 21 | Accept | 0.12821 | 0.24821 | 0.11681 | 0.12424 | 0.0010227 | 0.032459 | | 22 | Accept | 0.35897 | 0.28452 | 0.11681 | 0.12418 | 0.0010042 | 71.059 | | 23 | Accept | 0.13675 | 0.56361 | 0.11681 | 0.12409 | 0.0044236 | 0.012831 | | 24 | Accept | 0.13675 | 0.40366 | 0.11681 | 0.12408 | 0.075914 | 0.076242 | | 25 | Accept | 0.1339 | 12.884 | 0.11681 | 0.12407 | 25.269 | 0.091529 | | 26 | Accept | 0.1396 | 0.48028 | 0.11681 | 0.12397 | 8.39 | 12.849 | | 27 | Accept | 0.12251 | 0.59167 | 0.11681 | 0.12392 | 28.778 | 4.0023 | | 28 | Accept | 0.12251 | 0.27185 | 0.11681 | 0.12393 | 80.46 | 11.997 | | 29 | Accept | 0.12251 | 0.2828 | 0.11681 | 0.12051 | 30.439 | 7.5606 | | 30 | Accept | 0.11681 | 0.19951 | 0.11681 | 0.11862 | 73.776 | 6.9122 |
__________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 92.1608 seconds Total objective function evaluation time: 49.7289 Best observed feasible point: BoxConstraint KernelScale _____________ ___________ 0.0010116 0.024726 Observed objective function value = 0.11681 Estimated objective function value = 0.12394 Function evaluation time = 0.5898 Best estimated feasible point (according to models): BoxConstraint KernelScale _____________ ___________ 73.776 6.9122 Estimated objective function value = 0.11862 Estimated function evaluation time = 0.30927
Mdl = ClassificationSVM ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'none' NumObservations: 351 HyperparameterOptimizationResults: [1x1 BayesianOptimization] Alpha: [99x1 double] Bias: -4.5775 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.1186 XAtMinEstimatedObjective: [1x2 table] NumObjectiveEvaluations: 30 TotalElapsedTime: 92.1608 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 で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)