BayesianMaximization[f,{conf1,conf2,…}]
给出一个对象,表示对函数 f 在配置 confi 上进行贝叶斯最大化的结果.
BayesianMaximization[f,reg]
在由区域规范 reg 表示的区域上最大化.
BayesianMaximization[f,sampler]
在通过应用函数 sampler 得到的配置上最大化.
BayesianMaximization[f,{conf1,conf2,…}nsampler]
应用函数 nsampler 依次生成由 confi 开始的配置.
BayesianMaximization
BayesianMaximization[f,{conf1,conf2,…}]
给出一个对象,表示对函数 f 在配置 confi 上进行贝叶斯最大化的结果.
BayesianMaximization[f,reg]
在由区域规范 reg 表示的区域上最大化.
BayesianMaximization[f,sampler]
在通过应用函数 sampler 得到的配置上最大化.
BayesianMaximization[f,{conf1,conf2,…}nsampler]
应用函数 nsampler 依次生成由 confi 开始的配置.
更多信息和选项
- BayesianMaximization[…] 返回 BayesianMaximizationObject[…],其属性可以通过使用 BayesianMaximizationObject[…]["prop"] 获得.
- 可能的属性包括:
-
"EvaluationHistory" 最大化过程中所尝试的配置和值 "MaximumConfiguration" 所得到的使 f 结果最大化的配置 "MaximumValue" 从 f 获得的估计最大值 "Method" 用于贝叶斯最大化的方法 "NextConfiguration" 如果最大化继续,下一个要尝试的配置 "PredictorFunction" 所得到的函数 f 的最佳预测模型 "Properties" 所有可用属性的列表 - 配置可以是 Predict 所接受的任何形式(单数据元素、数据元素列表、数据元素的关联,等)和 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"]sampletest = RandomSample[ExampleData[{"MachineLearning", "FisherIris"}, "Data"]];
trainingsample = sampletest[[1 ;; 100]];
validationsample = sampletest[[101 ;; ]];创建“黑箱”函数. 这里函数是 Classify 函数中所用的两种不同方法下的对数似然函数. 函数参数被称为超级参数.
训练具有两个超级参数( L1 和 L2 的正则化系数)的 logistic 回归分类器:
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.}];对超级参数取对数,在由矩形区域定义的域上最大化 logistic 回归分类器的对数似然函数:
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]]]]现在训练一个具有超级参数(软边缘参数和伽马缩放参数)的支持向量机 (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 语言. 2016. "BayesianMaximization." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2017. https://reference.wolfram.com/language/ref/BayesianMaximization.html.
APA
Wolfram 语言. (2016). BayesianMaximization. Wolfram 语言与系统参考资料中心. 追溯自 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: 14-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: 14-August-2026]}