BayesianOptimization
ベイズ最適化の結果
説明
作成
BayesianOptimization オブジェクトを作成するには、関数 bayesopt を使用するか、名前と値の引数 OptimizeHyperparameters を指定して次のいずれかの近似関数を使用します。
分類近似関数:
fitcdiscr、fitcecoc、fitcensemble、fitcgam、fitckernel、fitcknn、fitclinear、fitcnb、fitcnet、fitcsvm、fitctree回帰近似関数:
fitrensemble、fitrgam、fitrgp、fitrkernel、fitrlinear、fitrnet、fitrsvm、fitrtree分位点回帰近似関数:
fitrqlinear、fitrqnet
fitcauto 関数と fitrauto 関数を使用するか、分類学習器アプリと回帰学習器アプリを使用して、BayesianOptimization オブジェクトを作成することもできます。詳細については、ベイズ最適化を実行する方法を参照してください。
プロパティ
問題定義のプロパティ
この プロパティ は読み取り専用です。
bayesopt で使用した引数 ObjectiveFcn。関数ハンドルとして指定されます。
bayesoptを直接呼び出した場合、ObjectiveFcnはbayesoptの目的関数引数です。名前と値のペアの引数
'OptimizeHyperparameters'が含まれる近似関数を呼び出す場合、ObjectiveFcnは、分類の場合は誤分類率を返す関数のハンドル、回帰の場合は 5 分割交差検証で測定した交差検証損失に 1 を加算した値の対数を返す関数のハンドルです。
データ型: function_handle
この プロパティ は読み取り専用です。
bayesopt で使用した引数 VariableDescriptions。optimizableVariable オブジェクトのベクトルとして指定されます。
bayesoptを直接呼び出した場合、VariableDescriptionsはbayesoptの変数説明引数になります。名前と値のペア
OptimizeHyperparametersを使用して近似関数を呼び出した場合、VariableDescriptionsはハイパーパラメーターのベクトルになります。
この プロパティ は読み取り専用です。
bayesopt で使用したオプション。構造体として指定されます。
bayesoptを直接呼び出した場合、Optionsはbayesoptで使用したオプション (名前と値のペア) になります。bayesoptの入力引数を参照してください。名前と値のペア
OptimizeHyperparametersを使用して近似関数を呼び出した場合、Optionsは既定のbayesoptオプションを名前と値のペアHyperparameterOptimizationOptionsで修正したものになります。
Options は、以下のフィールドが含まれている読み取り専用の構造体です。
| オプション名 | 意味 |
|---|---|
AcquisitionFunctionName | 獲得関数名 (ダッシュを削除)。獲得関数のタイプを参照してください。 |
IsObjectiveDeterministic | 目的関数が確定的な場合は true、それ以外の場合は false。 |
ExplorationRatio | AcquisitionFunctionName が 'expectedimprovementplus' または 'expectedimprovement-persecondplus' の場合のみ使用。プラスを参照してください。 |
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
この プロパティ は読み取り専用です。
目的関数最小値の観測点。1 行 D 列のテーブルとして指定されます。D は変数の個数です。
データ型: table
この プロパティ は読み取り専用です。
XAtMinEstimatedObjective における目的関数の推定値。実数スカラーとして指定されます。
MinEstimatedObjective は、最終的な目的モデルの事後分布の平均値です。MinEstimatedObjective の値は、XAtMinEstimatedObjective をオブジェクト関数 predictObjective に渡して推定されます。
データ型: double
この プロパティ は読み取り専用です。
探索点内において目的関数値の信頼限界の上限が最小になる点。1 行 D 列のテーブルとして指定されます。D は変数の個数です。探索点の信頼限界の上限は、最終的な目的モデルを使用して求められます。
XAtMinEstimatedObjective は、関数 bestPoint によって既定の基準 ('min-visited-upper-confidence-interval') で返される最適な点と同じです。
データ型: table
この プロパティ は読み取り専用です。
目的関数の評価回数。正の整数として指定されます。これには、事後モデルを形成するための初期評価と最適化反復時の評価が含まれます。
データ型: double
この プロパティ は読み取り専用です。
秒単位の最適化の合計経過時間。正のスカラーとして指定されます。
データ型: double
この プロパティ は読み取り専用です。
最適化継続時の次の評価点。1 行 D 列のテーブルとして指定されます。D は変数の個数です。
データ型: table
トレースのプロパティ
この プロパティ は読み取り専用です。
目的関数が評価された点。T 行 D 列のテーブルとして指定されます。T は評価点の個数、D は変数の個数です。
データ型: table
この プロパティ は読み取り専用です。
目的関数の値。長さ T の列ベクトルとして指定されます。T は評価点の個数です。ObjectiveTrace には目的関数評価の履歴が格納されます。
データ型: double
この プロパティ は読み取り専用です。
目的関数の評価時間。長さ T の列ベクトルとして指定されます。T は評価点の個数です。目的関数は連結制約を計算するので、ObjectiveEvaluationTimeTrace には連結制約を評価する時間が含まれます。
データ型: double
この プロパティ は読み取り専用です。
反復時間。長さ T の列ベクトルとして指定されます。T は評価点の個数です。IterationTimeTrace には目的関数の評価時間とその他のオーバーヘッドの両方が含まれます。
データ型: double
この プロパティ は読み取り専用です。
連結制約の値。T 行 K 列の配列として指定されます。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 に渡します。関数のパラメーター化 を参照してください。
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: @(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: 28.1247
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]
この例では、SVM 分類器のベイズ最適化を使用して ionosphere データの交差検証損失を最小化する方法を示します。
データを読み込みます。
load ionosphere'auto' パラメーターを使用して分類を最適化します。
rng default % For reproducibility Mdl = fitcsvm(X,Y,'OptimizeHyperparameters','auto')
|====================================================================================================================|
| Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | BoxConstraint| KernelScale | Standardize |
| | result | | runtime | (observed) | (estim.) | | | |
|====================================================================================================================|
| 1 | Best | 0.35897 | 0.51273 | 0.35897 | 0.35897 | 3.8653 | 961.53 | true |
| 2 | Best | 0.12821 | 8.3473 | 0.12821 | 0.15646 | 429.99 | 0.2378 | false |
| 3 | Accept | 0.35897 | 0.094839 | 0.12821 | 0.1315 | 0.11801 | 8.9479 | false |
| 4 | Accept | 0.1339 | 3.9479 | 0.12821 | 0.12965 | 0.0010694 | 0.0032063 | true |
| 5 | Accept | 0.15954 | 9.3649 | 0.12821 | 0.12824 | 973.65 | 0.15179 | false |
| 6 | Accept | 0.1339 | 0.82477 | 0.12821 | 0.12824 | 0.011845 | 0.01326 | false |
| 7 | Best | 0.12536 | 0.068854 | 0.12536 | 0.12553 | 0.091384 | 0.21792 | false |
| 8 | Accept | 0.1339 | 7.0173 | 0.12536 | 0.12549 | 0.0818 | 0.0063772 | false |
| 9 | Accept | 0.1339 | 0.12407 | 0.12536 | 0.12549 | 0.052876 | 0.52938 | false |
| 10 | Accept | 0.12821 | 0.10645 | 0.12536 | 0.12431 | 0.068655 | 0.33181 | false |
| 11 | Accept | 0.12821 | 0.13897 | 0.12536 | 0.12559 | 0.12944 | 0.31691 | false |
| 12 | Accept | 0.30199 | 0.05339 | 0.12536 | 0.12557 | 0.0055638 | 1.1147 | false |
| 13 | Accept | 0.12821 | 0.091317 | 0.12536 | 0.12555 | 0.0021299 | 0.046722 | false |
| 14 | Accept | 0.12536 | 0.14363 | 0.12536 | 0.12535 | 0.0058444 | 0.031942 | false |
| 15 | Accept | 0.1396 | 0.064684 | 0.12536 | 0.12536 | 0.0010099 | 0.24513 | false |
| 16 | Best | 0.12251 | 0.1207 | 0.12251 | 0.12253 | 0.0055451 | 0.11511 | false |
| 17 | Accept | 0.35897 | 0.061031 | 0.12251 | 0.12253 | 0.018773 | 97.797 | false |
| 18 | Accept | 0.35897 | 0.052671 | 0.12251 | 0.12253 | 0.011832 | 994.88 | false |
| 19 | Accept | 0.13105 | 0.080093 | 0.12251 | 0.12259 | 0.0010199 | 0.082337 | false |
| 20 | Accept | 0.21652 | 9.8298 | 0.12251 | 0.12258 | 994.44 | 0.0076414 | true |
|====================================================================================================================|
| Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | BoxConstraint| KernelScale | Standardize |
| | result | | runtime | (observed) | (estim.) | | | |
|====================================================================================================================|
| 21 | Accept | 0.1396 | 0.057347 | 0.12251 | 0.12263 | 0.001068 | 0.14555 | false |
| 22 | Accept | 0.1339 | 0.099034 | 0.12251 | 0.12477 | 0.049585 | 0.080674 | false |
| 23 | Best | 0.11681 | 0.15163 | 0.11681 | 0.11876 | 0.0010257 | 0.025064 | false |
| 24 | Accept | 0.12536 | 0.12273 | 0.11681 | 0.12115 | 0.0010259 | 0.022348 | false |
| 25 | Accept | 0.13105 | 0.12201 | 0.11681 | 0.12144 | 1.953 | 0.41785 | false |
| 26 | Accept | 0.12821 | 0.078167 | 0.11681 | 0.12273 | 0.001009 | 0.03141 | false |
| 27 | Accept | 0.11681 | 0.095384 | 0.11681 | 0.12104 | 0.0010254 | 0.025556 | false |
| 28 | Accept | 0.11966 | 0.10051 | 0.11681 | 0.12045 | 0.001003 | 0.024111 | false |
| 29 | Accept | 0.24217 | 0.047196 | 0.11681 | 0.12145 | 0.0010271 | 0.42734 | false |
| 30 | Accept | 0.12251 | 0.044716 | 0.11681 | 0.12127 | 0.011981 | 0.1732 | false |
__________________________________________________________
Optimization completed.
MaxObjectiveEvaluations of 30 reached.
Total function evaluations: 30
Total elapsed time: 54.8432 seconds
Total objective function evaluation time: 41.964
Best observed feasible point:
BoxConstraint KernelScale Standardize
_____________ ___________ ___________
0.0010257 0.025064 false
Observed objective function value = 0.11681
Estimated objective function value = 0.12127
Function evaluation time = 0.15163
Best estimated feasible point (according to models):
BoxConstraint KernelScale Standardize
_____________ ___________ ___________
0.0010257 0.025064 false
Estimated objective function value = 0.12127
Estimated function evaluation time = 0.1114

Mdl =
ClassificationSVM
ResponseName: 'Y'
CategoricalPredictors: []
ClassNames: {'b' 'g'}
ScoreTransform: 'none'
NumObservations: 351
HyperparameterOptimizationResults: [1×1 BayesianOptimization]
Alpha: [100×1 double]
Bias: -4.6628
KernelParameters: [1×1 struct]
BoxConstraints: [351×1 double]
ConvergenceInfo: [1×1 struct]
IsSupportVector: [351×1 logical]
Solver: 'SMO'
Properties, Methods
この当てはめでは、既定の 5 分割交差検証について損失が約 12% になりました。
返されたモデルの HyperparameterOptimizationResults プロパティで返された BayesianOptimization オブジェクトを確認します。
disp(Mdl.HyperparameterOptimizationResults)
BayesianOptimization with properties:
ObjectiveFcn: @createObjFcn/inMemoryObjFcn
VariableDescriptions: [5×1 optimizableVariable]
Options: [1×1 struct]
MinObjective: 0.1168
XAtMinObjective: [1×3 table]
MinEstimatedObjective: 0.1213
XAtMinEstimatedObjective: [1×3 table]
NumObjectiveEvaluations: 30
TotalElapsedTime: 54.8432
NextPoint: [1×3 table]
XTrace: [30×3 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 で導入
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)