BayesianMaximization[f,{conf1,conf2,…}]
関数 f の構成 confiについてのベイズ(Bayes)の最大化の結果を表すオブジェクトを与える.
BayesianMaximization[f,reg]
領域指定 reg によって表された領域について最大にする.
BayesianMaximization[f,sampler]
関数 sampler を適用して得られた構成について最大にする.
BayesianMaximization[f,{conf1,conf2,…}nsampler]
関数 nsampler を適用し,confiから始まって連続的に構成を生成する.
BayesianMaximization
BayesianMaximization[f,{conf1,conf2,…}]
関数 f の構成 confiについてのベイズ(Bayes)の最大化の結果を表すオブジェクトを与える.
BayesianMaximization[f,reg]
領域指定 reg によって表された領域について最大にする.
BayesianMaximization[f,sampler]
関数 sampler を適用して得られた構成について最大にする.
BayesianMaximization[f,{conf1,conf2,…}nsampler]
関数 nsampler を適用し,confiから始まって連続的に構成を生成する.
詳細とオプション
- BayesianMaximization[…]は,特性がBayesianMaximizationObject[…]["prop"]を使って得られるBayesianMaximizationObject[…]を返す.
- 可能な特性
-
"EvaluationHistory" 最大化の際に調べられる構成と値 "MaximumConfiguration" f からの結果を最大化すると判明した構成 "MaximumValue" f から得られた推定最大値 "Method" ベイズの最大化に使用されるメソッド "NextConfiguration" 最大化が続けられる場合に,次にサンプルする構成 "PredictorFunction" 関数 f について求まった最高の予測モデル "Properties" 使用可能な全特性のリスト - 構成はPredictで使える任意の形式(単一のデータ要素,データ要素のリスト,データ要素の連想等)と任意のタイプ(数値,テキスト,サウンド,画像等)でよい.
- 構成 conf に適用された場合の関数 f の出力は実数値でなければならない.
- BayesianMaximization[f,…]は f の評価回数は最低にして最高の最大値を求めようとする.
- BayesianMaximization[f,spec]の spec は関数 f の領域を定義する.領域は,構成のリスト,地理領域,あるいは構成生成関数で定義することができる.
- BayesianMaximization[f,sampler]では,sampler[]は f を適用するのに適した構成を出力しなければならない.
- BayesianMaximization[f,{conf1,conf2,…}nsampler]では,nsampler[conf]は f が適用するのに適した構成を出力しなければならない.
- BayesianMaximizationには次のオプションを使うことができる.
-
AssumeDeterministic False f が決定的であると仮定するかどうか InitialEvaluationHistory None 構成と値の初期集合 MaxIterations 100 最大反復回数 Method Automatic 評価する構成を決定するために使われたメソッド RandomSeeding 1234 どのような擬似乱数生成器のシードを内部的に使うべきか - Methodの可能な設定
-
Automatic メソッドを自動的に選ぶ "MaxExpectedImprovement" 現行の最高の値の期待される改良を最高にする "MaxImprovementProbability" 現行の最高の値についての確率の改良を最高にする - RandomSeedingの可能な設定
-
Automatic 関数が呼び出されるたびに自動的にシードを変える Inherited 外部シードの乱数を使う seed 明示的な整数または文字列をシードとして使う
例題
すべて開く すべて閉じる例 (3)
bo = BayesianMaximization[-((# - 2) ^ 2 + 1)&, Interval[{0, 4}]]結果のBayesianMaximizationObject[…]を使って推定最大構成を得る:
bo["MaximumConfiguration"]bo["MaximumValue"]bo = BayesianMaximization[(# ^ 2 - 3 * # + 2)&, {5.7, 1.1, 3.4, 6.8, 2.3, 1.2}]bo["MaximumConfiguration"]bo = BayesianMaximization[ -(# ^ 2 - 5 * # + 4)&, RandomReal[{0, 5}]&]bo["MaximumValue"]スコープ (3)
f[x_] := -(x - 4) ^ 2 - 1;
reg = Interval[{0., 7.}];bo = BayesianMaximization[f, reg]bo["Properties"]bo["EvaluationHistory"]試してみる構成の決定に使われたメソッドについての情報を得る:
bo["Method"]関数の現行の確率論モデル(これはPredictorFunctionである)を得る:
p = bo["PredictorFunction"]bo["NextConfiguration"]bo[{"ObjectiveFunction", "Method", "MaximumValue"}]関数が最小値近くでどの程度うまくモデル化されたかを可視化する:
Plot[{f[{x}], p[{x}]}, {x, 0, 7}, PlotLegends -> {"function", "model"}, Exclusions -> False ]ランダム近傍構成生成器で定義された領域上で最初の構成を使って関数を最大化する:
f[x_] := -x ^ 2 + 7 * x - 3;
neighborsampler[x_] := RandomReal[{x - 0.2, x + 0.2}];bo = BayesianMaximization[f, {1., 7., 2.} -> neighborsampler]p = bo["PredictorFunction"]Plot[{f[{x}], p[{x}]}, {x, 0, 7}, PlotLegends -> {"function", "model"}, Exclusions -> False]画像を取って画像が実体
であると認識するImageIdentifyが返す確率を計算する関数を定義する.領域は画像のコーパス上で乱数生成器によって定義されるものとする:
f[image_] := Module[{prob}, prob = ImageIdentify[image, Entity["Concept", "Fruit::855t9"], 5, "Probability"];
Lookup[prob, Entity["Concept", "Apple::857h7"], 0.]
];
images = WikipediaData["Apple", "ImageList"];
sampler[] := RandomChoice[images];bo = BayesianMaximization[f, sampler, AssumeDeterministic -> True]bo["MaximumConfiguration"]bo["EvaluationHistory"]オプション (4)
AssumeDeterministic (1)
f[x_] := x Sin[x] - 3 Cos[x] - x / 2;
sampler[] := RandomReal[{-6., 6.}];bo = BayesianMaximization[f, sampler]この関数は確率的であると仮定される.確率論的モデルからの値は同じ構成の関数値とは異なることが多い:
bo["MaximumValue"]f[bo["MaximumConfiguration"]]bo2 = BayesianMaximization[f, sampler, AssumeDeterministic -> True]決定的関数については,評価された構成についてのモデル値と関数値が高精度で一致する:
bo2["MaximumValue"]f[bo2["MaximumConfiguration"]]InitialEvaluationHistory (1)
f[{x_, y_}] := Cos[x] - Exp[(x - 0.5) * y];
reg = Disk[{0, 0}, 1.];bo = BayesianMaximization[f, reg, MaxIterations -> 5]evalhist = bo["EvaluationHistory"]bo2 = BayesianMaximization[f, reg, InitialEvaluationHistory -> evalhist]bo2["MaximumConfiguration"]MaxIterations (1)
f[x_] := Sin[x] + 4 * Cos[x] + x;
sampler [] := RandomReal[{-5, 5}];bo = BayesianMaximization[f, sampler]Length @ bo["EvaluationHistory"]bo2 = BayesianMaximization[f, sampler, MaxIterations -> 5]Length @ bo2["EvaluationHistory"]Method (1)
f[x_] := -x ^ 2 + 3 * x - 2;
int = Interval[{-5., 5.}];bo = BayesianMaximization[f, int, Method -> "MaxExpectedImprovement"]bo2 = BayesianMaximization[f, int, Method -> "MaxImprovementProbability"]アプリケーション (2)
Predict関数を使って予測関数を訓練する訓練集合とそのパフォーマンスを測るテスト集合を定義する:
trainingset = Table[n -> Sin[n], {n, 1, 15}];
testset = {3.9 -> Sin[3.9], 7.3 -> Sin[7.3]};「対数尤度」関数を作ってPredictにおけるさまざまなメソッドのテストデータの対数尤度をテストする:
func[method_] := PredictorMeasurements[Predict[trainingset, Method -> method], testset, "LogLikelihood"];
methods = {"LinearRegression", "NearestNeighbors", "NeuralNetwork", "GaussianProcess"};Predictについてのさまざまなメソッドのリストで定義された領域上で対数尤度関数を最大化する:
bo = BayesianMaximization[func, methods]bo["EvaluationHistory"]bo["NextConfiguration"]Fisherのアヤメに関するデータ集合をロードし,訓練集合と検証集合に分ける:
sampletest = RandomSample[ExampleData[{"MachineLearning", "FisherIris"}, "Data"]];
trainingsample = sampletest[[1 ;; 100]];
validationsample = sampletest[[101 ;; ]];「ブラックボックス」関数を作る.ここでのこの関数は,Classify関数が使う異なる2つのメソッドについての対数尤度関数である.この関数の引数はハイパーパラメータとして知られている.
正規化係数であるL1とL2の2つのハイパーパラメータを持つロジスティック回帰分類器を訓練する:
fLogisticReg[{l1_, l2_}] := Module[
{class},
class = Classify[trainingsample, Method -> {"LogisticRegression",
"L1Regularization" -> Exp[l1], "L2Regularization" -> Exp[l2]}];
ClassifierMeasurements[class, validationsample, "LogLikelihood"]
];
reg = Rectangle[{-3., -3.}, {3., 3.}];ロジスティック回帰分類器のための対数尤度関数を対数ハイパーパラメータの矩形領域で定義された領域上で最大化する:
boLogistic = BayesianMaximization[fLogisticReg, reg]pLogistic = boLogistic["PredictorFunction"]分類器の対数尤度関数のモデルを推定最大値とともに可視化する:
pt = {Append[boLogistic["MaximumConfiguration"], boLogistic["MaximumValue"]]}Show[Plot3D[pLogistic[{x, y}], {x, -3, 3}, {y, -3, 3}, PlotLegends -> {"Logistic Regression"}, Exclusions -> False], ListPointPlot3D[pt, PlotStyle -> Directive[Red, PointSize[Large]]]]次に,ソフトマージンパラメータとガンマスケーリングパラメータの2つのハイパーパラメータを持つ,サポートベクトルマシン(SVM)分類器を訓練する:
fSVMRBF[{c_, gamma_}] := Module[
{class},
class = Classify[trainingsample, Method -> {"SupportVectorMachine", "KernelType" ->
"RadialBasisFunction", "SoftMarginParameter" -> Exp[c], "GammaScalingParameter" -> Exp[gamma]}];
ClassifierMeasurements[class, validationsample, "LogLikelihood"]
];
reg2 = Rectangle[{-3., -3.}, {3., 3.}];SVM分類器についての対数尤度関数をハイパーパラメータの対数の矩形領域で定義された領域上で最大化する:
boSVM = BayesianMaximization[fSVMRBF, reg2]pSVM = boSVM["PredictorFunction"]分類器の対数尤度関数のモデルを推定最大値とともに可視化する:
pt2 = {Append[boSVM["MaximumConfiguration"], boSVM["MaximumValue"]]}Show[Plot3D[pSVM[{x, y}], {x, -3, 3}, {y, -3, 3}, PlotLegends -> "Support Vector Machine-RBF", ColorFunction -> "BlueGreenYellow", Exclusions -> False], ListPointPlot3D[pt2, PlotStyle -> Directive[Red, PointSize[Large]]]]考えられる問題 (2)
目的関数の領域が初期設定集合と近傍設定生成器によって定義されるとき,結果は与えられる生成器の品質に依存する.
f[x_] := Sin[x] - x * Cos[x];
ns[x_] := RandomReal[{x - 0.1, x + 0.1}];bo = BayesianMaximization[f, {0, 3.} -> ns, Method -> Automatic, AssumeDeterministic -> True]p = bo["PredictorFunction"]開始時の初期設定が大域的最大値よりから「はるかに」離れていて生成器の刻み幅が比較的小さいとき,アルゴリズムは極大値に収束ことができる:
Plot[{f[x], p[x]}, {x, -8, 8}, Exclusions -> False]近傍の設定生成器の刻み幅が「大きすぎる」または「小さすぎる」ときは問題が起こる可能性がある:
SeedRandom[2];
(bo = BayesianMaximization[# ^ 2 &, {1., 2., 3.} -> (RandomReal[{# - 0.01, # + 0.01}]&), AssumeDeterministic -> True])//AbsoluteTiming上記の評価には時間がかかる.生成器の刻み幅が非常に小さいので,アルゴリズムはデフォルト値の100回反復に達するまで実行し続ける:
bo["EvaluationHistory"]関連するガイド
-
▪
- 最適化
テキスト
Wolfram Research (2016), BayesianMaximization, Wolfram言語関数, https://reference.wolfram.com/language/ref/BayesianMaximization.html (2017年に更新).
CMS
Wolfram Language. 2016. "BayesianMaximization." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2017. https://reference.wolfram.com/language/ref/BayesianMaximization.html.
APA
Wolfram Language. (2016). BayesianMaximization. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/BayesianMaximization.html
BibTeX
@misc{reference.wolfram_2026_bayesianmaximization, author="Wolfram Research", title="{BayesianMaximization}", year="2017", howpublished="\url{https://reference.wolfram.com/language/ref/BayesianMaximization.html}", note=[Accessed: 10-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_bayesianmaximization, organization={Wolfram Research}, title={BayesianMaximization}, year={2017}, url={https://reference.wolfram.com/language/ref/BayesianMaximization.html}, note=[Accessed: 10-August-2026]}