贝叶斯选择算法使用连续描述符来描述分类输入你好,
一位客户询问,在只有一个分类输入(例如催化剂类型)且可以使用多个连续变量(例如化学描述符)来描述的情况下,如何使用贝叶斯选择算法。
我知道他们可以通过利用描述符表作为候选集来实现这一点。有人见过客户这样做的例子吗?或者有系统工程师用模拟示例做过实验吗?
谢谢
菲尔
回复:使用连续描述符描述分类输入的贝叶斯选择嗨@Phil_Kay ,
他们是否试图了解催化剂的组成对整个过程的影响(建立模型),以期控制/调整催化剂的组成?
我从客户那里也遇到过类似的情况(例如在香水开发中),他们可以使用化合物 A、B 或 C,他们知道它的成分(例如 10% 的油,5% 的酒精),但无法对其进行有目的的实验,因为他们无法调整比例,这意味着 BayesOpt 没什么用处。
干杯,
本
回复:使用连续描述符描述分类输入的贝叶斯选择嗨@Phil_Kay ,如果这有帮助的话,附件表格来自 Assistant,提示如下:“使用化学描述符模拟 QSAR 数据以预测催化剂类型。使用真实的化学关系,并确保某些描述符具有显著性。”
此外,还有一个用于 XGBoost 模型的脚本,看起来运行良好。
回复:使用连续描述符描述分类输入的贝叶斯选择谢谢,本。我认为他们最终的目标是选出能获得最佳产率的催化剂。可能有多达 50 种催化剂可供选择。每种催化剂的描述符变量值都各不相同,反映了它们不同的化学性质。他们不可能全部测试,因为那样反应次数太多了,所以他们的想法是利用这些描述符变量作为贝叶斯选择算法的因子,以合理的方式探索催化剂的性质空间,并最终找到最佳催化剂。
回复:使用连续描述符描述分类输入的贝叶斯选择谢谢@russ_wolfinger 。看起来很不错。但我考虑的是一个包含 50 种不同催化剂的候选集。抱歉,我之前对“催化剂类型”的描述可能不太准确。每种催化剂的描述符值都是独一无二的。
回复:使用连续描述符描述分类输入的贝叶斯选择谢谢你的解释,菲尔。
是否存在一个连续的目标值 Y(例如产率),需要根据描述符进行优化?催化剂名称则用作行标签?
假设情况属实,可以通过 BayesOpt 处理数据,找到使 Y 最优的描述符值。一旦找到,我认为这需要能够合成具有最优描述符组合(或至少非常接近最优描述符组合)的催化剂。
或者,QSAR(定量构效关系)建模可以拟合一个预测模型,该模型将 Y 表示为描述符的函数。XGBoost 或 Torch 都是不错的选择,然后您可以使用分析器来优化 Y,或者使用拟合的模型来预测具有已知描述符但目前尚未测量的催化剂。
如果你恰好有催化剂的 SMILES 字符串,那么 Torch 的图神经网络模型通常效果非常好。
我随后在模拟数据中添加了“收益率”列。
拉斯
回复:使用连续描述符描述分类输入的贝叶斯选择是的,产率通常是响应变量,尽管杂质含量和成本也可以作为附加变量。产率是未知的,只能通过实际反应来确定。而你不可能对所有50种催化剂都进行反应测试。因此,你会使用贝叶斯方法(希望如此)来高效地探索催化剂的性质空间。我认为你最终会选择效果最好的催化剂,但如果模型预测的最佳性质与任何一种催化剂都不相似,你或许可以考虑增加候选催化剂的数量。
我认为这应该是可行且相当简单的。
但我不太确定是否可以加入其他工艺变量,例如温度或 pH 值。我认为这很重要。我认为唯一的方法是为催化剂描述符创建一个候选集,为工艺因子创建一个候选集(例如使用空间填充设计),然后将两者相乘。这样就会得到一个庞大的候选集,其中包含每种催化剂及其描述符的多种工艺因子处理方案。
回复:使用连续描述符描述分类输入的贝叶斯选择在使用 BayesOpt 算法以产量作为响应变量时,我遇到一个值得注意的问题:如果产量的目标值设置为“最大化”,并且产量是以百分比而非绝对单位(例如 g/L)表示,那么算法可能会像普通最小二乘法 (OLS) 那样预测非物理输出(例如 103% 的产量)。这可能会导致一些奇怪的实验建议。回复:使用连续描述符描述分类输入的贝叶斯选择嗨@Phil_Kay ,
这里有一些公开数据可能符合你的情况: https://github.com/SigmanGroup/Threshold/tree/main/examples
我刚刚快速下载了数据集,并用它作为候选集和查找表进行了测试。(这似乎是一篇相关的出版物:https://www.science.org/doi/10.1126/science.abj4213 ?referrer=https%3A%2F%2Fgithub.com%2FSigmanGroup%2FThreshold%2Ftree%2Fmain)
我初步快速试用的一个不足之处在于,BayesOpt 似乎卡在了一条建议上(顺便说一句,这条建议对于某个回答来说是完全正确的)。
或许合成数据对于演示来说是更“安全”的选择……
希望这能帮到你。
弗洛里安
回复:使用连续描述符描述分类输入的贝叶斯选择嗯,看来它确实非常有效地找到了最优解!如果再加上工艺变量,以及这些变量与催化剂描述符之间的相互作用,应该会更有意思。但是,正如我上面所说,我认为目前这将会是一个具有挑战性的工作流程。
回复:使用连续描述符描述分类输入的贝叶斯选择确实如此 
是的,在这种情况下,使用合成数据集或许是最佳方案。
联合利华基本上已经声明,BayesOpt 在产品和工艺开发方面表现出色(只是他们使用的是原料的化学性质,而不是催化剂/QSAR 以及其他工艺参数,例如搅拌等)。他们目前正在进行评估,尚未分享任何结果,但或许到十月底我就能获得更详细的信息——甚至可能看到公开的案例研究。
回复:使用连续描述符描述分类输入的贝叶斯选择那太好了。我认为我们会看到越来越多来自客户的成功案例,这些案例将真正帮助我们展现产品的价值。
回复:使用连续描述符描述分类输入的贝叶斯选择Florian,数据很棒,谢谢分享。从预测建模的角度来看,这类数据很有价值:
1. 高斯过程以及 BayesOpt 提供的迭代便利。高斯过程可能最适合平滑系统。Torch 中的 MixedModel 与之类似。
2. XGBoost / LightGBM / Boosted Trees:最适合具有急剧变化甚至不连续性的非线性交互系统。
3. Torch 和 JMP 中的神经网络:最适合具有中等平滑度的系统,介于高斯过程和提升树之间。具有丰富的结构多样性。
4. Torch 中基于 SMILES 的图神经网络:最忠实于化学结构,可能是最好的。
3 和 4 很容易组合成一个模型,而将它们全部结合起来可以得到最好的预测结果。
回复:使用连续描述符描述分类输入的贝叶斯选择@MikeD_Anderson有什么好办法处理以百分比作为响应变量的问题吗?我经常遇到客户这样的情况(例如在解散率计算中),他们只提供百分比作为衡量指标。我发现很难理解如何设置严格的上限,因为在运行合成模拟时,BayesOpt 仍然有可能超出上限。
回复:使用连续描述符描述分类输入的贝叶斯选择@Ben_BarrIngh - “正确”的答案是我们需要一个类似于 GenReg 的随机过程模型(我们实现 BayesOpt 时使用的代理模型)。这样我们就可以引入 beta 分布(即,使用 BeSP 而不是 GaSP 建模)。这方面已经有相关的数学方法,但需要开发或产品经理确认是否有相关功能路线图。
目前我能想到的最佳方案是将“收益率百分比”之类的指标从最大化目标改为目标值,并将目标值设置为 99.5% 左右。然后,您可以调整期望值曲线的上下限,强制其忽略超过 100% 的值。由于目前 Bayes Opt 算法在平台上实现此功能略显繁琐,您需要将这些设置添加到响应列的属性中。这种方法似乎可行,但终究是一种权宜之计。

回复:使用连续描述符描述分类输入的贝叶斯选择非常有用,谢谢@MikeD_Anderson
回复:使用连续描述符描述分类输入的贝叶斯选择你也可以尝试对比例响应值取logit值。逻辑回归就是用这种方法将通过/不通过转换为(-∞, +∞)范围内的数据。然后对预测值取logistic函数,将其转换回比例单位。(我记得JMP可能有Logit Percent函数?这样就不用进位了。)