陸行政,林暢然,李智健,唐德玉
(廣東藥科大學醫(yī)藥信息工程學院,廣州 510000)
藥物研發(fā)是現(xiàn)代社會中的一個重要課題,藥物重定位是指發(fā)現(xiàn)現(xiàn)有藥物的新用途,其生物學基礎是一藥多靶和一靶多藥[1]?;谟嬎惴椒▽λ幬?靶標相互作用(drug-target interaction,DTI)進行預測,以發(fā)現(xiàn)某個藥物的多個潛在靶標或某個靶標的多個藥物,從而實現(xiàn)對現(xiàn)有藥物的重定位,可以顯著減少后期過程(如臨床試驗)的負荷,節(jié)省大量資源和時間[2]。
研究人工智能的藥物研發(fā)輔助系統(tǒng),可以提高新藥研發(fā)的速度和精度。楊朔等[3]通過引入高維分子指紋和蛋白質描述符并應用概率矩陣分解算法生成負樣本集,構建一個高效的藥物-靶標相互作用預測分類模型,訓練不同的機器學習模型來預測DTI; Yamanishi 等[4]基于藥物的理化性質和藥物-靶標相互作用網(wǎng)絡的拓撲性質,提出了基于支持向量機的方法,挖掘可能的藥物-靶標相互作用; Mizutani 等[5]基于藥物-靶標相互作用譜和副作用譜,定義稀疏典型相關分析進行預測。然而由于缺少負樣本數(shù)據(jù),使得監(jiān)督學習方法預測效果不夠理想,而且大部分有監(jiān)督預測方法的時間復雜度較高[6];同時,這些方法都嚴重依賴于藥物的化學結構相似性和靶標的序列相似性。
為了緩解這些問題,我們使用了一種改進的洗牌蛙跳算法(Shuffled Frog Leaping Algorithm,SFLA)——演化蛙跳算法(evolutionary frog leaping algorithm,EFLA)預測藥物-靶標相互作用,此算法由Tang 等[7]提出,但此算法并未應用于藥物-靶標相互作用預測,本文的創(chuàng)新之處在于運用此算法解決藥物-靶標相互作用預測難題。
本文所用的數(shù)據(jù)來自Yamanishi 等[4]提供的來自人類酶(enzyme,EN)、離子通道(ion channels of biomembrane,IC)、G 蛋白偶聯(lián)受體(G Protein-Coupled Receptors, GPCR)、 核受體(nuclear receptor,NR)的藥物、靶標及其相互作用數(shù)據(jù)。四個數(shù)據(jù)集的信息見表1。
表1 藥物靶標數(shù)據(jù)
各數(shù)據(jù)集中主要包括三種矩陣:Sd、St 和DTI。藥物相似性矩陣Sd:表示某種藥物與其他藥物相似性。靶標相似性矩陣St:表示某靶標與其他靶標的相似性。藥物-靶標相互作用矩陣DTI:表示某藥物對某靶標是否具有相互作用,有相互作用的為1,無相互作用為0。
對于數(shù)據(jù)源的處理,我們嘗試以藥物與靶標的相似性作為預測藥物-靶標相互作用關系的指標。將EN、GPCR、IC、NR 的Sd、St 以及DTI 矩陣分別合并成用于SVM 分類預測的藥物靶標復合矩陣。合并原理如圖1 所示,以1 號藥物與3 號靶標為例,根據(jù)DTI 矩陣,1 號藥物與3 號靶標是有相互作用的,將表示1 號藥物與其他藥物的相似性的一行與表示3號靶標與其他靶標的相似性的一行合并,作為新矩陣上的一行,并在最后加上一列,表示類標號,類標號“1”表示藥物對該靶標有相互作用;類標號“0”表示無相互作用。由于無相互作用的藥物靶標數(shù)量遠大于有相互作用的藥物靶標數(shù)量,因此合并時會先找出全部有相互作用的藥物靶標,再隨機找出同等數(shù)量無相互作用的藥物靶標來進行合并。最后得到用來分類預測的藥物靶標復合矩陣,其中每一行為一個樣本,每一列為一個特征。運用隨機獲取的辦法選擇負樣本。
圖1 合并原理
預測藥物-靶標相互作用的機器學習模型之一是支持向量機(SVM),支持向量機是一種有監(jiān)督的機器學習方法,它能有效解決小樣本學習、高維及非線性問題,并表現(xiàn)出較強的泛化能力,在模式識別、分類等領域有著廣泛的應用。支持向量機的兩個主要參數(shù)極大程度上決定了其學習精度和泛化能力[8]。通常而言,比較重要的參數(shù)是gamma(-g)跟cost(-C)。C是懲罰系數(shù),理解為調節(jié)優(yōu)化方向中兩個指標(間隔大小、分類準確度)偏好的權重,即對誤差的寬容度,C越高,說明越不能容忍出現(xiàn)誤差,容易過擬合;C越小,容易欠擬合,C過大或過小,泛化能力變差。g是選擇RBF 函數(shù)作為kernel后,該函數(shù)自帶的一個參數(shù)。隱含地決定了數(shù)據(jù)映射到新的特征空間后的分布,g越大,支持向量越少;g值越小,支持向量越多。支持向量的個數(shù)影響訓練與預測的速度。
具體實現(xiàn)步驟如下。
Step1:選取SVM 模型訓練樣本和檢驗樣本,進行樣本歸一化處理,設定懲罰因子C、核函數(shù)參數(shù)g和不敏感系數(shù)ε的搜尋范圍[9]。
Step2:確定各算法的適應度函數(shù)。適應度函數(shù)是描述種群個體優(yōu)劣程度的主要指標,本文選用均方誤差作為適應度函數(shù),見方程:
其中:yi代表第i個樣本實測值;?代表第i個樣本模擬值。
Step3:基于EFLA 算法操作流程獲得待優(yōu)化懲罰因子C、核函數(shù)參數(shù)g和不敏感系數(shù)ε值。
SFLA 可以描述如下:首先,初始種群是隨機產生的,并按降序排列分成m個子模塊。洗牌過程可表示為公式(2),其中popsize(popsize=m×n)是一個整數(shù),表示種群大小,m表示子群的數(shù)量,n表示每個子群中青蛙的數(shù)量。第i只青蛙的適應度f(i)可以評估并按降序排序,形成m個memeplex:H1,H2,…,Hb,…,Hm,它們可以通過以下方式構建:
其中:H是一個memeplex 中的解決方案的集合,Xi表示一個解決方案,它是一個矢量。
但在SFLA 中,青蛙只有跳躍行為來傳播信息,這不足以模擬它們的社會行為。因此,可以通過模擬互動學習特征來模擬青蛙的社會行為。演化蛙跳算法是由Tang 等[7]提出的一個SFLA 的兩階段搜索框架,在第一個搜索階段,用量子進化算子來實現(xiàn)局部搜索,它模擬了青蛙在量子空間中的跳躍行為。在第二階段的搜索中,利用自適應特征向量進化算子實現(xiàn)全局搜索,模擬了青蛙的交互學習特征。該算法根據(jù)EFLA 算法實現(xiàn),該框架使SFLA 的開發(fā)和探索更加平衡。以下介紹量子進化算子和自適應特征向量進化算子:
量子進化算子:量子進化算子在不同的子元叢中通過打亂過程實現(xiàn),如方程(2),因此可以被認為是一種局部搜索過程。量子進化算子是根據(jù)勢阱模型通過蒙特卡羅方法實現(xiàn)的。在方程(3)中,考慮到收斂性,Xi(t) →Pi(t) ,當t→∞時,其中Pi被視為勢阱?;镜牧孔舆M化算子只使用一個勢阱,從而加速搜索速度,但容易陷入局部最優(yōu)解。為此,我們提出了帶有記憶的第二個勢阱來增強量子進化的搜索能力。我們嘗試使用該算法優(yōu)化SVM 的C、g參數(shù)來優(yōu)化SVM 的模型訓練。算法第一階段通過提出一個具有記憶的潛在阱優(yōu)化了量子模擬方法的參數(shù),增強了SFLA 算法的搜索能力,使算法不容易落入局部最優(yōu)解。新的搜索算子可以用方程式(4)表示。
其中:Pi表示第一個勢阱,表示第二個勢阱,g是搜索參數(shù),popsize是種群大小。rand表示[0,1]中的均勻分布的隨機數(shù)。Pi是D 維空間中的一個向量。在D 維空間中,也是其中的一個向量。
自適應特征向量進化算子:互動學習行為是在整個群體中實現(xiàn)的,而不是在局部群體中。因此,它是一個全球搜索過程,表示為以下公式:
在一個D 維空間中,Xi、Xv和Xo是對應于三只青蛙的三個向量。i、v和o(i≠v≠o)是集合中的三個不同整數(shù),其中popsize是種群大小。Xi是解向量,可以通過Xv和Xo之間的差異進行更新。rand表示[0,1]均勻分布的隨機數(shù)。是種群中所有Xi的均值,是種群中所有Xj的均值。
為了計算特征向量基,我們將協(xié)方差矩陣cov(Y)分解為正則形式如下:
其中:Q是方形矩陣(D行和D列),其第1 列是cov(Y)的特征向量qi。Λ是對角線矩陣,其對角線元素是相應的特征值。特征向量進化算子可表示為
其中:Xi(或Yi)表示一個個體,它是一個有一列和D行的向量,QT是一個由D行和D列組成的方形矩陣。D表示解決方案矢量的維度。因此,[QT-Xi](或[QT-Yi])表示一個新的個體,它是一個有一列和D行的向量。Ui是一個整數(shù)集合,包括從1 到D的所有整數(shù),表示個體([QT·Yi])隨機選擇的r行數(shù)據(jù),其中r也是從{1,2,3,…,D}這個集合中隨機選取的整數(shù)。
當用特征向量作為基礎更新解決方案時,更新行為會在自然基礎上變得具有旋轉不變性。為了減少具有旋轉不變性的算子()無效行為的風險,我們引入了一種自適應選擇策略,以選擇原始算子和特征向量進化算子。
其中:rand為[0, 1]中均勻分布的隨機數(shù),p為自適應選擇參數(shù)值。它可以表示如下:
鑒于現(xiàn)實世界優(yōu)化問題的復雜性,原算子和特征向量進化算子將根據(jù)其成功率交替運行,并通過公式(10)和(11)的自適應選擇機制來實現(xiàn)。在一定程度上降低所處理的多元數(shù)據(jù)的維數(shù),加快訓練速度以及一些無用信息的剔除。
Step4:將獲得的優(yōu)化參數(shù)值作為SVM 的最佳學習參數(shù)對預測樣本進行預測。
圖2為上訴方法的算法流程圖。
圖2 EFLA算法流程
設置算法參數(shù),包括種群大小、迭代次數(shù)等;初始化一個由ps只青蛙組成的種群X,并計算適應度。在fes≤max_fes的循環(huán)中,先進行局部搜索,將種群X按適應度排序,然后對每個memeplex 中的n只青蛙,根據(jù)公式計算出兩個最佳位置,計算潛在的兩個最佳位置,并更新位置。
然后進行全局搜索:對每個青蛙,根據(jù)公式計算出新位置Yi,并根據(jù)條件隨機選擇標準搜索或特征向量搜索,根據(jù)成功率更新概率p,重復以上步驟直至達到最大迭代次數(shù),最終輸出全局最佳解。
本實驗使用核受體預測數(shù)據(jù),把演化蛙跳算法與KNN 算法、樸素貝葉斯算法、決策樹和隨機森林進行分析比較,所得結果見表2。
表2 算法比較
各算法的使用參數(shù)見表3。
表3 算法使用參數(shù)
分析表2的預測結果可以得知,演算蛙跳算法雖然預測時間較長,但準確率要遠好于其他方法。與KNN 算法相比,準確率提高了14 個百分點;與樸素貝葉斯算法和決策樹算法相比,準確率均提高了34 個百分點;與隨機森林算法相比,準確率提高了11個百分點。
基于演算蛙跳算法的SVM 模型訓練因為需要不停訓練模型之后進行比較從而取得最好的參數(shù),所以相比于其他常見的機器學習算法訓練花費的時間較長,但是訓練的結果相比于其他算法的準確率普遍高出10個百分點。
在藥物研發(fā)領域,藥物靶標相互作用一直是一個重要的課題,以往的實驗挖掘研究方法既耗時又費力,所以采用不同的數(shù)學分析模型來預測藥物靶標是否具有相互作用,可以大大降低藥物研發(fā)的風險和成本。
本文的研究是在大數(shù)據(jù)背景下,以人工智能新技術為基礎,為新藥的研發(fā)提供理論指導。作為人工智能的一個重要分支,群體智能算法已解決了很多機器學習中普遍存在的問題,大大提高了機器學習的性能。因此,本文重點以疾病-通路-靶標-藥物的分子網(wǎng)絡為基礎,使用群體智能算法為主的機器學習方法,對新藥物研發(fā)具有實際意義:
(1)對于指定的疾病,可以高效地識別新的藥物-藥物、藥物與靶標的相互關系??梢栽谒幚韺嶒炛埃瑢π碌乃幬?、靶標、通路及疾病的關系完成理論分析,為后面的理論實驗奠定基礎。
(2)本文的研究進一步擴展了傳統(tǒng)的藥物分析方法,完善了傳統(tǒng)藥物網(wǎng)絡分析方法的不足。建立多源同構的藥物團分析模型,并以進化計算的方法對其求解。
(3)對于很多復雜疾病,盡管組合藥物臨床療效顯著,在醫(yī)藥界有一定的發(fā)展,但由于組合藥物的作用機制不明,限制了組合藥物的設計和研發(fā)。本文算法的提出和發(fā)展,為組合藥物的研制和開發(fā)提供了強有力的理論支撐。
本文嘗試將演算蛙跳算法運用于藥物靶標預測。通過與其他算法比較,演算蛙跳算法的訓練時間較長,但準確率高于一般常見的機器學習算法10個百分點以上。