貝葉斯選擇演算法使用連續描述符來描述分類輸入你好,
一位客戶詢問,在只有一個分類輸入(例如催化劑類型)且可以使用多個連續變數(例如化學描述符)來描述的情況下,如何使用貝葉斯選擇演算法。
我知道他們可以透過利用描述符表作為候選集來實現這一點。有人看過客戶這樣做的例子嗎?或是有系統工程師用模擬範例做過實驗嗎?
謝謝
菲爾
回覆:使用連續描述符描述分類輸入的貝葉斯選擇嗨@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% 的值。由於目前貝葉斯最佳化演算法在平台上實現此功能略顯繁瑣,您需要將這些設定新增至回應列的屬性。這種方法似乎可行,但終究是權宜之計。

回覆:使用連續描述符描述分類輸入的貝葉斯選擇非常有用,謝謝@MikeD_Anderson
回覆:使用連續描述符描述分類輸入的貝葉斯選擇你也可以嘗試對比例回應值取logit值。邏輯迴歸就是用這種方法將通過/不通過轉換為(-∞, +∞)範圍內的資料。再對預測值取logistic函數,將其轉換回比例單位。 (我記得JMP可能有Logit Percent函數?這樣就不用進位了。)