问题贝叶斯优化在早期的研发研究中,我成功地使用了一个 4 因素混合 DOE(3 个混合因素和一个 3 级分类“异构体”效应)来找到具有三个质量属性 Y1、Y2 和 Y3 的化学配方的最佳设置。
我在 DOE 课程中使用该案例,并使用模拟公式计算响应 Y123。获得了良好的模型,优化过程也很简单顺利,请参阅附件中的“DOE 化学配方分析混合物”。
我从一个包含 12 个运行的 Kowalski 混合模型 DOE 开始,在进行贝叶斯优化时遇到了困难(参见附件“贝叶斯优化”)。它一直失败,原因是 Y2 模型非常不可靠。为什么贝叶斯方法在 Y2 模型如此不可靠的情况下仍然推荐“最大期望值”?从其他筛选和空间填充 DOE 开始,我仍然得到同样的不可靠 Y2 模型。
问题是什么?如何解决?
实验设计回复:贝叶斯优化问题嗨@frankderuyck ,
虽然与您的具体用例无关,但如果您在使用贝叶斯优化平台根据数据拟合高斯过程模型时遇到问题,我建议您考虑以下两种方法:
- 使用MaxPro 准则创建候选点,强制探索设计空间。该与模型无关的准则确保先前存在的点与新的候选点之间的距离最大,从而能够高效地覆盖实验空间。
- 您还可以更改基于模型增强的 R 平方阈值的默认设置(例如,如果您将此阈值从 0.25(默认值)增加到 0.7,则会增加探索部分),并且可能还需要在 BO 循环开始时调整相关性类型(高斯、Mattern 3/2 和 5/2 或指数),以防其中某种相关性类型更适合您的用例。Mattern 5/2 是一个不错的默认选择,但高斯相关性可能在 Y2 上提供略好的结果。
在任何情况下,实践者都应掌控平台及其结果,并选择最符合实际情况的选项(探索/利用)。我曾在法国的一次商业智能探索研讨会上展示过一个用例,其中“自动”模式(盲目地遵循平台默认设置的建议)会导致次优结果。一旦通过添加一些探索点来强制执行探索(因为模型拟合不足且不可靠),模型就能理解输入和输出之间的关系,从而使利用变得更有意义。
查看你的响应公式,可以看出它们之间存在很大差异:
- Y1 模型包含主效应和交互效应,二者大小大致相同(主效应略大)。
- Y2 模型包含主效应和一些较大的交互效应(X1*X3 和 X2*X3)。
- Y3 模型具有较大的主效应和一些较小的交互效应。
Y1 和 Y3 的公式格式是“正常的”,很容易用高斯过程进行拟合。
对于 Y2,由于交互作用效应非常大,高斯过程 (GP) 的拟合变得更加复杂。核方程涉及点之间的距离(参见高斯核示例)和带宽(也称为长度尺度)参数。GP 会针对每个因子/维度学习该参数,并以此来描述每个因子的相对变化如何影响响应。但是,由于在距离计算(欧氏距离)和该参数的学习过程中,各个维度是解耦的,因此 GP 模型很难为强交互作用中的每个因子找到合理的带宽/长度尺度参数,因为它无法很好地评估每个因子如何独立地影响响应。
在实践中,当面临类似的可能存在非常大的交互作用的情况时,加性核或多项式核会更合适,因为加性核可以解耦 1 阶、2 阶、3 阶……效应,而多项式核则明确地设置为固定阶数(在本例中为 2 或 3)。
鉴于 JMP 贝叶斯优化平台的选项,我建议强制平台使用 MaxPro 准则生成更多探索点。附件是我的测试结果,在平台使用“最大化预期改进”选项进行优化之前,强制平台使用 MaxPro 准则进行了 4 次新的探索运行。找到的最优解似乎比您目前得到的最优解更接近您的目标。
希望这个回答对您有所帮助。
回复:贝叶斯优化问题感谢Victor的详细解释,但是仍然存在一些问题:
(1)Y2 分析器显示 Y2 模型仍然非常不可靠。(2)重要提示:此处异构体的最佳设置是异构体 2,这与 DOE 的正确解决方案(异构体 1)不符。
很难理解为什么贝叶斯在这里会遇到困难……
回复:贝叶斯优化问题我看到 Y2 的 R2 值接近或高于 0.7,所以我认为这个模型并非非常不可靠?
贝叶斯优化不一定能提供全局最优解(如果存在),但可以提供最优解。
由于混合设计属于优化设计,且您的分类异构体因子相对于混合因子影响不大,因此可能存在其他使用不同异构体(以及不同混合比例)的解。造成差异的原因可能有多种:存在多个性能相近的最优解,和/或添加到 Y2 中的噪声可能“隐藏”了 GP 模型的最优解。您可以尝试从 Y2 公式中移除噪声,看看最优解是否相同,同时还可以使用 DoE 模型检查 BO 解与您在 DoE 背景下得到的最优解的接近程度。
希望这个回答对您有所帮助。
回复:贝叶斯优化问题Profiler Y2 的表现不佳;DOE 模型则非常出色。
frankderuyck_0-1786094852833.pngfrankderuyck_0-1786094852833.pngfrankderuyck_0-1786094852833.pngfrankderuyck_0-1786094852833.png
回复:贝叶斯优化问题经过几次额外的运行,贝叶斯方法始终能得出最优异构体 1 解决方案,而 Y2 分析器仍然非常灰暗。
解决方案与我得到的结果非常相似,我的 Y2 R² 更低 = 0.52。
回复:贝叶斯优化问题Y2 分析器告诉我,预期范围是 -0.48 < Y2 < 1,对吗?是否应该忽略这个结果,只关注 R²?
回复:贝叶斯优化问题查看您的 BO 文件,打开 JMP BO 平台后,我发现 R² = 0.7999,第二年的 Profiler 结果也还不错:
Victor_G_0-1786175430051.pngVictor_G_0-1786175430051.pngVictor_G_0-1786175430051.pngVictor_G_0-1786175430051.png
我的 BO 文件测试结果相同:R² = 0.7321,Profiler 看起来没问题:
Victor_G_1-1786175585108.pngVictor_G_1-1786175585108.pngVictor_G_1-1786175585108.pngVictor_G_1-1786175585108.png
那么,您展示的是哪个分析器或哪个步骤中的“错误”预测分析器结果?
您可以使用“最大化多元模型标准差”(如果批次大小大于 1,则使用“最大化贝叶斯期望值标准差”)来增加一些运行次数,以降低预测的不确定性。这会有所帮助,但由于这种极端情况(交互效应非常大),高斯过程很难与包含交互效应的 DoE 多元回归模型相媲美。您可以通过“叠加交互”选项查看每个模型如何处理交互效应;您会发现,由于我在第一篇文章中解释的限制,(DoE)回归模型的交互效应轨迹比高斯过程的轨迹“更加多样化”。
- 回归模型:
Victor_G_2-1786175872322.pngVictor_G_2-1786175872322.pngVictor_G_2-1786175872322.pngVictor_G_2-1786175872322.png
- 高斯过程:
Victor_G_3-1786175927453.pngVictor_G_3-1786175927453.pngVictor_G_3-1786175927453.pngVictor_G_3-1786175927453.png
高斯过程根据数据点的邻近程度对响应变量的行为进行插值,而回归分析则使用特定的效应(主效应、交互效应等)来描述现象。模型拟合和“理念”也不同:回归分析假设存在一个待验证的模型,而高斯过程则是在实验过程中“构建模型”。
请注意,即使您使用的是贝叶斯优化平台,如果您在添加探索点后仍然难以拟合高斯过程模型,您可以使用该平台的模型筛选功能(K折交叉验证)来探索更多模型选项,您会发现回归方法出现在最佳模型拟合选项的顶部(以下结果仅使用数据表中的第一个构建点):
Victor_G_4-1786176393503.pngVictor_G_4-1786176393503.pngVictor_G_4-1786176393503.pngVictor_G_4-1786176393503.png
希望这个回答对您仍然有所帮助。
回复:贝叶斯优化问题奇怪,当我点击上次 BO 测试时,预测分析器得到了不同的结果,但图表是一样的。
我使用的是 JMP 18 Pro,会不会是 19 版本(我猜你用的是最新的 JMP 版本)有所不同?
frankderuyck_0-1786349462076.pngfrankderuyck_0-1786349462076.pngfrankderuyck_0-1786349462076.pngfrankderuyck_0-1786349462076.png
回复:贝叶斯优化问题好吧,这很奇怪,你应该有相同的分析器,因为“实际值与预测值”图似乎表明 GP 模型已经学习了你数据中的模式。
当您仅在 JMP BO 平台中查看 Y2 响应的模型面板时,是否也得到了相同的分析结果?
您是否尝试过使用“普通”高斯过程平台进行建模,看看是否会出现同样的问题?
您是否尝试过直接从菜单(而不是从已保存的脚本)和脚本中重新运行平台?结果有何不同?
最后,您能否升级到 JMP 19?
希望这些建议能帮助你解决问题。
回复:贝叶斯优化问题Victor,您好。我尝试了您提出的方案,但在我的 JMP 18 中没有成功。附件中是针对全部 24 次 DOE 实验结果的 Scheffé 模型和高斯模型对比:高斯模型效果不佳,Y1 拟合度不足,Y2 的结果非常差;Y3 的结果尚可接受;使用这些高斯模型,无法通过分析器找到最佳混合比例,期望值等于 0。您在 JMP 19 中是否获得了更好的结果?希望能够找到解决方案,我非常想使用贝叶斯优化,但我的团队对此持怀疑态度。
回复:贝叶斯优化问题高斯预测公式的结果非常糟糕,与刀切法预测的结果截然不同?
frankderuyck_0-1786435375218.pngfrankderuyck_0-1786435375218.pngfrankderuyck_0-1786435375218.pngfrankderuyck_0-1786435375218.png
难怪我的贝叶斯优化算法不起作用,结果非常不稳定且不一致。
回复:贝叶斯优化问题如果 JMP 19 的结果没问题,那么是什么发生了变化?
回复:贝叶斯优化问题我使用 JMP 19 中的 BO 平台,采用默认设置,不同响应的模型看起来都不错:
Victor_G_0-1786477092346.pngVictor_G_0-1786477092346.pngVictor_G_0-1786477092346.pngVictor_G_0-1786477092346.png
我已经将 JMP19 中贝叶斯优化平台(高斯过程模型)的预测公式和脚本保存到您的表格中。
关于“基本”高斯过程模型,我对 Y1 也得到了类似的结果,但您可以通过在启动平台时选中“ 估计块金参数”选项来改进建模:
Victor_G_1-1786477388650.pngVictor_G_1-1786477388650.pngVictor_G_1-1786477388650.pngVictor_G_1-1786477388650.png
由于响应变量 Y1 的噪声似乎比其他变量略大,因此使用此选项可以避免使用高斯过程对数据进行完美插值,从而改进建模。即使模型的预测值可能与测量值相差甚远,但模型的结果仍然更易于解释,并且与回归模型更为相似。
Victor_G_2-1786477805428.pngVictor_G_2-1786477805428.pngVictor_G_2-1786477805428.pngVictor_G_2-1786477805428.png
我还保存了脚本,以便重新运行您表格中的分析和预测公式。
最后,高斯过程预测公式和刀切法预测公式是不同的,您可以参考 JMP 帮助文档中的“实际值与预测值对比图”部分。刀切法预测值是排除特定 X 行后得到的 Y 值预测值,而高斯过程模型预测值则是通过对使用留一法(刀切法)训练的每个模型进行平均得到的。
希望这个回答对您有所帮助。
回复:贝叶斯优化问题好的,Victor,谢谢。看来我需要切换到 JMP 19 了。我想知道为什么 JMP 18 不能用,以及到底发生了什么变化?另外,当我添加另一个 BO 批次时,我的 18 版本会报错,如果我忽略这个错误,第二年的预测结果又像以前一样完全变成模糊的灰色了。
frankderuyck_0-1786523679953.pngfrankderuyck_0-1786523679953.pngfrankderuyck_0-1786523679953.pngfrankderuyck_0-1786523679953.png
frankderuyck_1-1786523771369.pngfrankderuyck_1-1786523771369.pngfrankderuyck_1-1786523771369.pngfrankderuyck_1-1786523771369.png
您能否根据所附的初始 DOE,基于 12 次运行的 Kowalski 模型进行贝叶斯优化?
回复:贝叶斯优化问题你好@frankderuyck ,
出于好奇,请问在 JMP 18 中哪里可以找到贝叶斯优化功能?这个功能好像是 JMP 19 才引入的: https://www.jmp.com/en/software/new-release/new-in-jmp
最好的
弗洛里安
回复:贝叶斯优化问题抱歉,我弄错了,我使用的是 19.0.1 版本。
frankderuyck_0-1786550520590.pngfrankderuyck_0-1786550520590.pngfrankderuyck_0-1786550520590.pngfrankderuyck_0-1786550520590.png
回复:贝叶斯优化问题为什么我的结果和维克托的结果不一样?
回复:贝叶斯优化问题早上好@frankderuyck和@Victor_G ,
我可以确认,最新版本中的一些改进解决了这个问题:
JMP 19.1.4 之前的版本:
Florian_Vogt_0-1786605432509.pngFlorian_Vogt_0-1786605432509.pngFlorian_Vogt_0-1786605432509.pngFlorian_Vogt_0-1786605432509.png
使用 JMP 19.1.4(当前最新版本):
Florian_Vogt_1-1786605459011.pngFlorian_Vogt_1-1786605459011.pngFlorian_Vogt_1-1786605459011.pngFlorian_Vogt_1-1786605459011.png
更新到最新版本后,平台得到了改进,从而获得了更好的结果(正如 Victor 所展示的那样)。
最好的
弗洛里安
回复:贝叶斯优化问题谢谢Florian,请问如何升级到最新版本?
回复:贝叶斯优化问题在你分享的这个屏幕上,点击“检查更新”(左侧的蓝色文字),会弹出一个窗口,你会得到一个链接来下载更新版本。
感谢@Florian_Vogt提供的信息。关于 19.1.x 版本的发布说明不够详细,无法看出 BO 平台的算法/计算方式是否有所更改: https://community.jmp.com/t5/JMP-Knowledge-Base/JMP-New-Features-and-Release-Notes/ta-p/575202
回复:贝叶斯优化问题
Florian_Vogt_0-1786610753240.pngFlorian_Vogt_0-1786610753240.pngFlorian_Vogt_0-1786610753240.pngFlorian_Vogt_0-1786610753240.png
回复:贝叶斯优化问题亲爱的 Victor 和 Florian,非常感谢你们的建议。我已经升级到最新的 JMP 版本,最终得到了不错的结果(见附件)。唯一不明白的是,为什么在处理了几批数据后,添加原因的步骤似乎卡在了“最大预期改进”阶段,没有切换到重复迭代,所以看起来好像找不到最优解,是这样吗?然而,当我优化最后一批数据时,结果却很好,但在第一次达到最大预期改进后就出现了这种情况。问题是,在达到多少次最大预期改进后,回归模型才能达到最佳状态?对于高斯分布来说,最重要的指标是什么?
frankderuyck_0-1786694503916.pngfrankderuyck_0-1786694503916.pngfrankderuyck_0-1786694503916.pngfrankderuyck_0-1786694503916.png
回复:贝叶斯优化问题嗨@frankderuyck ,
它其实并没有卡住……你有一个包含三个响应的优化任务,它试图实现三个目标。由于它仍然看到改进的潜力,所以会继续尝试改进。这在期望值运行图中有所体现,因为已实现的期望值仍在提高。当你持续请求运行时,它最终会尝试复制当前的最佳结果。
Florian_Vogt_0-1787142341723.pngFlorian_Vogt_0-1787142341723.pngFlorian_Vogt_0-1787142341723.pngFlorian_Vogt_0-1787142341723.png
何时停止训练很难一概而论——简单来说,你可以随时停止,也就是当你觉得目标已经达成时。BayesOpt 会根据数据尝试优化并验证结果(“复制最佳训练运行”)。
希望这能帮到你!
弗洛里安
回复:贝叶斯优化问题我猜最后几行的设置并非最优,因此我需要查看模型摘要和最大期望值,对吗?我发现性能分析器没有模拟器;当我保存预测公式并转到“图表”>“性能分析器”时,它无法正常工作,我只能看到一个空白的性能分析器工作表。如何在优化设置下进行模拟并检查其在随机噪声下的性能?
回复:贝叶斯优化问题从 10 次运行的快速灵活空间填充 DOE(参见附件)开始,我得到了与 12 次运行的 Kowalski 起始模型以及 24 次运行的 Sheffé 模型(参见第一篇帖子)不同的结果;X1、X2 和 X3 的最优设置几乎相同,但空间填充模型的结果却是异构体 2 而不是异构体 1。与异构体 2 一样,Scheffé 模型和 12 次运行的 Kowalski 起始模型得到的期望值都很差。我猜想从 10 次运行的空间填充模型开始是不合适的,运行次数太少了?贝叶斯优化是否存在可接受的起始 DOE 的标准?
回复:贝叶斯优化问题我认为问题在于空间填充实验设计无法在三种异构体之间实现均衡覆盖。此外,观察每种异构体的散点图,覆盖率看起来也不太理想。我想,如果存在分类效应,那么在选择空间填充实验作为初始实验时,这一点需要特别注意,对吗?