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
に渡します。関数のパラメーター化を参照してください。
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')
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]
近似関数の使用によるBayesianOptimization
オブジェクトの作成
この例では、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 |
__________________________________________________________ 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]
バージョン履歴
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)