このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
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: 22.5336 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.55068 | 0.35897 | 0.35897 | 3.8653 | 961.53 | true | | 2 | Best | 0.12821 | 8.937 | 0.12821 | 0.15646 | 429.99 | 0.2378 | false | | 3 | Accept | 0.35897 | 0.080821 | 0.12821 | 0.1315 | 0.11801 | 8.9479 | false | | 4 | Accept | 0.1339 | 4.3802 | 0.12821 | 0.12965 | 0.0010694 | 0.0032063 | true | | 5 | Accept | 0.15954 | 10.212 | 0.12821 | 0.12824 | 973.65 | 0.15179 | false | | 6 | Accept | 0.13105 | 0.85587 | 0.12821 | 0.12824 | 0.020515 | 0.01138 | false | | 7 | Best | 0.12536 | 0.069402 | 0.12536 | 0.12553 | 0.091384 | 0.21792 | false | | 8 | Accept | 0.1339 | 8.434 | 0.12536 | 0.12549 | 0.088519 | 0.0054531 | false | | 9 | Accept | 0.1339 | 0.052871 | 0.12536 | 0.12549 | 0.061486 | 0.54498 | false | | 10 | Accept | 0.12821 | 0.05382 | 0.12536 | 0.12418 | 0.02717 | 0.33435 | false | | 11 | Best | 0.12251 | 0.065479 | 0.12251 | 0.1245 | 0.038981 | 0.3315 | false | | 12 | Accept | 0.12251 | 0.053891 | 0.12251 | 0.12477 | 0.0011259 | 0.052658 | false | | 13 | Best | 0.11681 | 0.073661 | 0.11681 | 0.11708 | 0.0010027 | 0.024565 | false | | 14 | Accept | 0.14245 | 0.17818 | 0.11681 | 0.11732 | 0.0010009 | 0.0075154 | false | | 15 | Accept | 0.2906 | 10.238 | 0.11681 | 0.11727 | 979.26 | 0.02028 | true | | 16 | Accept | 0.13675 | 0.21964 | 0.11681 | 0.11822 | 1.9733 | 0.38946 | false | | 17 | Accept | 0.12821 | 0.066743 | 0.11681 | 0.12263 | 0.001006 | 0.030975 | false | | 18 | Accept | 0.1339 | 7.9797 | 0.11681 | 0.12274 | 0.0010127 | 0.0010426 | false | | 19 | Accept | 0.1339 | 8.7074 | 0.11681 | 0.12269 | 0.0010861 | 0.0010317 | true | | 20 | Accept | 0.13675 | 0.063674 | 0.11681 | 0.12189 | 0.001002 | 0.23902 | false | |====================================================================================================================| | Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | BoxConstraint| KernelScale | Standardize | | | result | | runtime | (observed) | (estim.) | | | | |====================================================================================================================| | 21 | Accept | 0.12251 | 0.066291 | 0.11681 | 0.12186 | 0.001003 | 0.027317 | false | | 22 | Accept | 0.12821 | 0.062326 | 0.11681 | 0.12323 | 0.0010185 | 0.030548 | false | | 23 | Accept | 0.11966 | 0.091185 | 0.11681 | 0.12249 | 0.0010061 | 0.026187 | false | | 24 | Accept | 0.151 | 0.053297 | 0.11681 | 0.1171 | 0.055134 | 2.1942 | false | | 25 | Accept | 0.1396 | 0.068534 | 0.11681 | 0.11717 | 0.025994 | 1.1409 | false | | 26 | Accept | 0.1339 | 0.13741 | 0.11681 | 0.11726 | 0.0010044 | 0.087741 | false | | 27 | Accept | 0.12251 | 0.081239 | 0.11681 | 0.11857 | 0.001003 | 0.018287 | false | | 28 | Accept | 0.13105 | 0.20438 | 0.11681 | 0.12355 | 0.0052604 | 0.022691 | false | | 29 | Accept | 0.12251 | 0.047222 | 0.11681 | 0.1235 | 0.0010272 | 0.041927 | false | | 30 | Accept | 0.12251 | 0.049391 | 0.11681 | 0.12305 | 0.0010012 | 0.041882 | false | __________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 72.8542 seconds Total objective function evaluation time: 62.1341 Best observed feasible point: BoxConstraint KernelScale Standardize _____________ ___________ ___________ 0.0010027 0.024565 false Observed objective function value = 0.11681 Estimated objective function value = 0.12279 Function evaluation time = 0.073661 Best estimated feasible point (according to models): BoxConstraint KernelScale Standardize _____________ ___________ ___________ 0.0010061 0.026187 false Estimated objective function value = 0.12305 Estimated function evaluation time = 0.06941
Mdl = ClassificationSVM ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'none' NumObservations: 351 HyperparameterOptimizationResults: [1×1 BayesianOptimization] Alpha: [100×1 double] Bias: -4.5478 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.1230 XAtMinEstimatedObjective: [1×3 table] NumObjectiveEvaluations: 30 TotalElapsedTime: 72.8542 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)