陳 鵬,鮑天嘉智,余肖生
(三峽大學 計算機與信息學院,湖北 宜昌 443002)
藥物重定位(drug repurposing),俗稱“老藥新用”,是指通過現有的技術手段將已經產生適應癥的藥物重新定位,尋找其新的適應癥[1]。藥物重定位這一概念自被提出以來,國內外學者對該方向算法的研究投入了巨大的精力[2-3]。張永祥等認為藥物重定位是網絡藥理學的重要應用領域,介紹了基于小分子特征、基于蛋白靶點特征等方法[4]。謝達菲等提出了利用藥物-靶標關系、藥物-藥物關系和藥物-疾病關系分析等方法進行藥物重定位的計算預測[5]。文獻[6]將深度學習的方法應用于藥物重定位。Luo等人提出了一種基于綜合相似度和隨機游走的藥物重定位算法[7-8],通過將藥物和疾病特征信息與已知的藥物-疾病關系相結合,首次提出了藥物與疾病相似性的綜合相似度計算方法。文獻[9-11]提出了基于多數據源融合的藥物重定位算法。文獻[12-15]提出了一系列基于協同過濾的藥物重定位算法研究,從多源數據的角度出發,通過協同過濾來計算藥物-疾病對應關系預測值。
由于數據稀疏性對協同過濾的影響較大,所以現階段基于協同過濾的藥物重定位算法大多通過融合多種數據源進行計算的方法來減小影響,但在計算過程中僅使用了藥物相似度,忽略了疾病相似度的作用。
綜上所述,傳統的基于協同過濾的藥物重定位算法雖然有一定的效果,但仍有很大的進步空間。該文提出了一種基于多相似度融合的藥物重定位推薦算法(MSF),首先由藥物-疾病數據源計算出疾病相似度,其他三種數據源計算出的三種相似度融合為藥物相似度,再分別利用基于項目和基于用戶的協同過濾進行藥物與疾病對應關系的預測值計算,并通過融合方法將兩種預測值融合為最終的藥物-疾病關系預測值。MSF算法在充分利用多源數據的前提下,將計算出的相似度和預測值融合,降低了數據稀疏性對協同過濾的影響。
藥物重定位已經成為醫學領域研究的一大熱門。現階段,由于藥物和疾病數據的大量增長,從不同角度進行藥物重定位研究的案例也越來越多。為證明本文對藥物重定位的研究角度是切實可行的,從藥物與疾病的關系、藥物化學結構、藥物靶蛋白和藥物副作用四個方面進行討論。
Chiang等人[16]提出了一種從疾病的角度看待藥物重定位的觀點,當兩種疾病可以被多種相同的藥物治療時,認為兩種疾病是相似的。如果存在一種藥物只對其中一種疾病有治療效果,則認為該藥對另一種疾病也存在潛在的治療關系,可以作為治療該疾病的候選藥物。藥物的化學結構被認為可以用來度量藥物間相似性,Dudley等人[17]提出藥物的化學性質與其治療效果有密切的關系,藥物的化學結構和生物活性之間存在定量關系,所以藥物的化學結構可以作為藥物重定位的研究方向。藥物靶蛋白是藥物治療疾病的關鍵因素,含有相似靶蛋白的藥物也可能會有類似的作用效果[18],因此靶蛋白可以作為藥物重定位中度量藥物相似性的一個研究角度。同樣,與藥物對疾病的治療效果類似,藥物產生的副作用提供了人類的表型特征,因此從藥物的副作用角度進行藥物重定位的研究也是可行的[19]。
通過上述討論證明從藥物與疾病的關系、藥物化學結構、藥物靶蛋白和藥物副作用這四個角度進行藥物重定位研究是可行的。但是上述文獻提供的方法都是從多個角度中的一類或兩類進行藥物重定位研究,可能會導致預測值的偏差,因此,該文從四個角度綜合考慮并進行研究,減小了預測結果的有偏性,更具有實際應用價值。
協同過濾算法在近幾年被廣泛應用于各大電商行業以及影視平臺的應用推薦中[20-21]。傳統基于鄰域的協同過濾算法分為兩種,即基于用戶的和基于項目的,兩種算法的本質都是通過選取k個最相似的鄰居進行評分預測。
協同過濾的基本流程為:先通過余弦相似度、皮爾遜相關系數、谷本系數等相似度度量方法計算用戶或項目的相似度。再利用計算出的相似度找到相似度最高的k個鄰居,由對應的兩種公式求出預測分數:

(1)
(2)定義rui為用戶u對項目i的評分,D為項目i的鄰居集合,simij表示項目i和j的相似度,ruj為用戶u對項目j的評分,基于項目的預測值計算如式(2):
(2)
傳統的基于協同過濾的藥物重定位算法僅使用藥物相似度進行預測值計算,往往忽略了疾病相似度在藥物重定位中的作用且研究角度比較單一,而由于單個數據源的稀疏問題,導致計算出的有效藥物、疾病相似度較少,許多項目無法找到合適的鄰居,因而計算出的預測值偏差較大[22]。該文提出了MSF算法,即:首先由藥物-疾病數據源計算出疾病相似度,再通過藥物-化學結構、藥物-靶蛋白以及藥物-副作用數據源計算出三種相似度融合為藥物相似度,使用疾病相似度和藥物相似度計算兩種預測值并融合為最終的預測值,整體流程如圖1所示。
2.1.1 疾病相似度
疾病相似度通過藥物-疾病數據進行計算。藥物-疾病治療關系數據從UMLS[23]中的NDF-RT(national drug file-reference terminology)進行采樣,其中藥物與疾病有作用關系則值為1,若無關系則為0。這種藥物-疾病數據集在文獻[11]中被認為是藥物重定位的“金”標準數據集。基于文獻[16]的思想,該文對于疾病相似度的計算只考慮藥物與疾病是否有對應的治療關系,而不考慮治療效果的優劣,所以疾病相似度通過谷本系數進行,與使用余弦相似度等方法相比,在不影響相似度準確性的情況下,簡化了計算的復雜程度。疾病相似度的計算公式如式(3):
(3)
其中,sim(ia,ib)表示疾病a和疾病b的相似度,Ia表示可以治療疾病a的藥物數量,Ib表示可以治療疾病b的藥物數量,|Iab|表示可以同時治療疾病a和疾病b的藥物數量。sim(ia,ib)的值應該在區間[0,1]之間。

圖1 算法流程
2.1.2 藥物相似度
在文獻[17-19]的基礎上,該文認為通過藥物-化學結構、藥物-靶蛋白和藥物-副作用三種數據源計算出的藥物相似度可以通過一定的權重融合為最終的藥物相似度,其中藥物-化學結構數據從PubChem[24]進行采樣,藥物-靶蛋白數據從UniPort Knowledgebase[25]中采樣,藥物-副作用數據從SIDER[26]數據庫中采樣。融合相似度的方法有效緩解了單個數據源因為數據稀疏而導致計算出的有效相似度較少的問題,并且通過融合減少了計算最終預測值所需要的步驟。由于采用相似度融合的方法,所以三種數據源應該選用同一種相似度計算方法。與計算疾病相似度類似,用于藥物相似度計算的三種數據源中只考慮藥物與三種屬性的對應關系,所以同樣采用谷本系數進行相似度的計算,如式(4):
(4)
其中,sim(da,db)表示藥物a和藥物b的相似度,(a)在使用藥物-化學結構數據源的計算過程中,Da表示藥物a包含的化學結構數量,Db表示藥物b包含的化學結構數量,|Dab|表示藥物a和藥物b包含的相同化學結構數量;(b)在使用藥物-靶蛋白數據源的計算過程中,Da表示藥物a對應的靶蛋白數,Db表示藥物b對應的靶蛋白數,|Dab|表示藥物a和藥物b對應的相同靶蛋白數;(c)在使用藥物-副作用數據源的計算過程中,Da表示藥物a會產生的副作用數,Db表示藥物b會產生的副作用數,|Dab|表示藥物a和藥物b產生的相同副作用數。同樣,sim(da,db)的值也應該在區間[0,1]之間。
simd表示由三種相似度融合得到的最終藥物相似度,sims表示由藥物-化學結構算出的相似度,simp表示由藥物-靶蛋白算出的相似度,simf表示由藥物-副作用算出的相似度。使用式(5)進行計算:
simd=αsims+βsimp+γsimf
(5)
其中,α+β+γ=1。
相似度融合的權值計算采用試探法,以0.1為步長進行試探,通過多次實驗確定一組能使效果最優的權值。試探法的優點是使用簡單且較為準確,缺點是運行效率較低,但在設置合適的步長時可以在一定的時間范圍內得到預期的結果。通過試探法得出當α=0.2,β=0.4,γ=0.4時,效果達到最優。
通過兩種相似度計算方法得到疾病相似度和藥物相似度后,為了融合兩類相似度計算出的預測結果,提出預測值融合的方法,如式(6):
(6)



(7)

(8)

由于兩種預測值也要進行融合,為了保持數據的一致性,兩類算法中選取的鄰居數應該為相同值。根據多次實驗結果,設置ω1=0.6,ω2=0.4。
Step1:將四種數據源轉換成對應的矩陣,藥物-疾病矩陣通過式(3)計算疾病相似度,其他三種數據源得出的矩陣通過式(4)計算出相似度。
Step2:由Step1算出四種相似度,將通過式(4)算出的相似度用式(5)融合成藥物相似度,通過式(3)得出的相似度作為疾病相似度。
Step3:得出的疾病相似度通過式(7)計算出藥物與疾病對應關系的預測值,藥物相似度則通過式(8)計算出預測值。
Step4:用式(6)將兩類預測值融合得到最終的藥物與疾病對應關系預測值。
為了驗證算法的有效性,該文采用的數據集是文獻[9]中的數據,該數據集是通過UMLS、PubChem、UniPort Knowledgebase和SIDER中的數據進行人工處理和清洗獲得的,其中包括藥物-疾病數據、藥物-化學結構數據、藥物-靶蛋白數據和藥物-副作用數據。四種數據均采用二進制表示對應的關系:0表示無相關對應關系,1表示有對應關系。數據集包括536種藥物,以及對應的578種疾病、881種藥物化學結構、1 385種副作用和775種對應靶蛋白。其對應的數據稀疏程度分別為:0.992 0,0.859 2,0.945 5,0.995 4。稀疏程度主要用于觀察數據集中無作用的數據占總數據的比例,從得出的數據可以看出四種數據源的稀疏程度都比較高,無作用數據占總數據的比例較大。

圖2 藥物-疾病對應數量關系
從藥物-疾病數據源中可以算出每一種藥物對應可以治療的疾病數,如圖2所示,可以看出大約只有50種(10%)藥物可以治療10種以上疾病,大部分藥物(75%)只能治療5種以下的疾病。
文中將藥物重定位算法當作一個二分類問題來看待,對于每種藥物,如果疾病可以治療則為1,反之則為0,為了保證實驗的準確性和健壯性,使用十折交叉驗證法進行實驗。該文采用準確率、召回率、F-score和ROC曲線來進行算法效果好壞的判斷。為了給出這四種分類指標的準確定義,首先定義一個二分類問題的混淆矩陣,如表1所示。

表1 混淆矩陣
通過混淆矩陣可以對精確率、召回率、F-score進行定義,如下:
(9)
(10)
(11)
為了確定計算中最相似的鄰居數k使預測值最精確,提供了每種數據源在不同鄰居數情況下的精確率表現,如圖3所示。通過觀察每種數據源各自的精確率變化,確定一個使算法效果最好的k值。通過觀察可以看出當k=25時,各數據源保持在精確率比較高的穩定狀態,雖然在k>25時,藥物-化學結構和藥物-疾病數據源的精確率會有小幅度的提升,但是藥物-靶蛋白和藥物-副作用數據源的精確率會有大幅的下降,所以該文將鄰居數選取為25。

圖3 各數據源在不同鄰居數下的精確率
在確定鄰居數k后,通過圖4、圖5對比MSF算法和其他算法的效果。在觀察圖4(ROC曲線)時發現,所有數據源的AUC值都很高,這是由于藥物重定位是一個高度不平衡問題,所有的數據源都是稀疏的,即使假正例的數量變化很大,也會因為真反例的基數大,而假正率只發生極小的變化[9]。所以在ROC曲線和AUC值對于區分算法效果表現較差的情況下,采用了P-R曲線(見圖5)和精確率、召回率、F-score(見表2)來進一步證明MSF算法優于傳統藥物重定位算法。

圖4 基于單個數據源的傳統藥物重定位算法和MSF算法的ROC曲線比較

圖5 單個數據源的傳統藥物重定位算法和MSF算法的P-R圖比較

表2 單個數據源與MSF算法指標對比
通過P-R曲線可以看出,MSF算法的P-R曲線包裹了所有單個數據源的P-R曲線。通過表2可以看出,只有通過藥物-疾病數據源得出的召回率比MSF算法略高,但是在精確率和F-score方面MSF算法都表現得更好,據此可以得出MSF優于基于單個數據源的藥物重定位推薦算法。
表3展示了MSF算法與其他兩種算法(SLAMS算法[9]和DRCFFS算法[14])的比較。可以看出與SLAMS算法和DRCFFS相比,MSF算法在三種指標上都有較大的提升。

表3 算法效果比較
通過上述幾種不同指標的對比表明,MSF算法在P-R曲線以及各項指標上都有良好的表現,可以得到更精確的藥物重定位預測結果。
藥物重定位算法的目的是預測舊藥物的新用途,為了證明提出的算法是有實效的和現實意義的,表4給出了利用MSF算法預測的一些藥物-疾病組合,其中頭孢西丁臨床證明可以治療由敏感菌導致的呼吸道感染等疾病,這與可以治療支氣管炎的預測相符合。厄他培南對肺炎的治療作用在文獻[27]中已經得到證實。文獻[28]中進行了頭孢克洛治療鼻竇炎的臨床實驗,治愈率達到15.5%。文獻[29]中給出了利用美羅培南治療皮膚軟組織感染的實例。
表5給出了甲狀腺腫大治療預測值前五的藥物,其中甲硫咪唑和丙硫氧嘧啶已經得到臨床驗證[30],剩下三種藥物尚未得到臨床證明,但在文獻[31]中雙硫侖被證明對甲狀腺治療有一定作用。
綜上所述,MSF算法可以預測出一些已經得到臨床認證的藥物-疾病組合,并且也能發現一些尚未證明有臨床意義的藥物-疾病組合,但是藥物的治療效果與疾病相關癥狀對應。通過一系列的案例證明,MSF算法具有可行性,對于臨床藥物重定位具有一定的輔助作用。

表4 預測藥物-疾病治療

表5 甲狀腺腫大治療預測值前五的藥物
提出了一種基于多相似度融合的藥物重定位推薦算法(MSF算法),實驗結果顯示MSF算法與SLAMS算法和DRCFFS相比,在三種指標(精確率、召回率和F-score)上的表現更好。綜上所述,提出的MSF算法優于傳統的藥物重定位算法,可以預測有治療效果的藥物-疾病組合,為更好地發揮藥物治療效果、提升藥物利用價值起到一定的作用。但是,MSF算法也有一定的缺陷,比如:通過試探法計算相似度融合的權值耗時較長,計算疾病相似度所采用的數據源較少。在后續的研究過程中應當對相似度融合的方法進行改進并且在疾病相似度的計算上使用多種數據源。