◎張志山 陳育煌
(1.惠州衛(wèi)生職業(yè)技術學院教育技術與信息中心;2.惠州衛(wèi)生職業(yè)技術學院藥學系,廣東惠州516025)
從技術上而言,數(shù)據(jù)挖掘就是從大量的已知的數(shù)據(jù)中,補齊修正不完整的數(shù)據(jù),去除噪音數(shù)據(jù),從中尋找那些人們往往需要依賴經(jīng)驗才能體會的潛在知識和信息的過程[1]。由于新藥臨床前諸多因素的制約,對于新藥的副作用的認識非常局限,必須通過藥品的上市后監(jiān)測(Post Marketing Study,PMS)即IV期臨床試驗,完成對一種新藥的全面評價[2]。另一方面,藥物副作用(ADR)引起的病患占據(jù)所有醫(yī)院病患的6%,這儼然成為導致醫(yī)院死亡的第五大因素[3],可見,藥物副作用帶來的危害越來越大。
目前,對于上市后的藥品安全性評估主要有神經(jīng)網(wǎng)絡、回歸分析法、數(shù)據(jù)離散法、函數(shù)依賴法等,這些算法往往需要知道各參數(shù)之間的關系,訓練時間較長,過程復雜,額外開銷大,很難推廣。影響評估數(shù)值的因素很多,各種因素之間存在著復雜的非線性聯(lián)系,采用一般的數(shù)學統(tǒng)計方法很難準確預測其含量[4]。文獻[5]提出的基因表達式編程(gene expression programming,GEP)是進化計算的新成員,具有遺傳算法(genetic algorithm,GA)和遺傳規(guī)劃(genetic programming,GP)的優(yōu)點,同時克服了GA和GP的缺點,但是GEP算法在進化過程中容易陷入局部最優(yōu)不能自拔。文獻[6]則提出了一種基于種群密集度的GEP算法挖掘藥物不良反應,對文獻[5]的方法進行改進,提出了種群密集度和新陳代謝等概念,證明了種群密集度的性質(zhì)等,為進一步加強ADR監(jiān)測提供一種有效的技術手段[6]。文獻[7]則利用GEP算法建立起對脂肪肝的輔助診斷的新方法。
關聯(lián)規(guī)則挖掘是數(shù)據(jù)挖掘中的一種重要應用。它通過對數(shù)據(jù)集的分析處理,挖掘出數(shù)據(jù)集中頻繁項之間的有趣聯(lián)系[8]。關聯(lián)規(guī)則挖掘中尤以Apriori算法最為經(jīng)典。該算法結(jié)構(gòu)簡單、數(shù)據(jù)要求低,但Apriori算法也存在一些缺點,如要對數(shù)據(jù)庫多次掃描,內(nèi)存占用大、候選集項目多,運行效率不高[9]。Apriori算法涉及的主要概念如下:支持度是指項集出現(xiàn)的概率,其公式是Support(A->B)=P(AUB)。置信度是指在總事物集中包含A的同時也包含B的百分比,其公式是Confidence(A->B)=P(A|B)=P(A,B)/P(A)=P(AUB)/P(A)。提升度Lift(A->B)=P(B|A)/P(B)。當提升度為1時,表示A與B相互獨立,即是否有A對于B的出現(xiàn)無影響。當提升度滿足0<Lift(A->B)<1時,表示A與B存在負相關聯(lián)系。當提升度滿足Lift(A->B)>1時,表示A與B存在正相關聯(lián)系。強規(guī)則是指同時滿足最小支持度和最小置信度的關聯(lián)規(guī)則[8],否則就是弱規(guī)則。
(1)選擇頻繁項集。關聯(lián)規(guī)則挖掘并不是每次都要挖掘所有的屬性關聯(lián),對數(shù)據(jù)庫中無須挖掘的屬性謂詞,算法不予考慮,進行剔除。
(2)基于維數(shù)目約束。通常,一個規(guī)則的有用與否最終取決于用戶的需要,所以只有用戶才能決定關聯(lián)規(guī)則的取舍。為此,算法中加入了number參數(shù)(用戶想知道的最大的頻繁項集數(shù)目)作為維數(shù)目約束值,算法根據(jù)number值選擇掃描到L[2],L[3]……L[number]個鏈表。
(3)基于事務集的約簡。第一次迭代掃描數(shù)據(jù)庫D1后,剔除不可能是頻繁1-項集的事務,更新數(shù)據(jù)庫為D2,第二次迭代掃描數(shù)據(jù)庫D2后,剔除不可能是2-項集的元素,更新數(shù)據(jù)庫為D3,以此類推,直到數(shù)據(jù)庫Dnumber。從而達到降低I/O開銷,減少數(shù)據(jù)庫和謂詞集存儲,提高挖掘速度的目的。
(4)基于鏈表結(jié)構(gòu)。從第二次掃描數(shù)據(jù)庫D2開始,將對應的事務數(shù)據(jù)庫拆解成用戶需要的各類候選2-、3-……K-候選集,并把結(jié)果存入對應的鏈表結(jié)構(gòu)中,直至產(chǎn)生所有的候選謂詞集。最后,分別計算各候選集的支持度,滿足最小支持度和最小置信度的即為頻繁k項集。
根據(jù)上述改進算法思想得到該算法的偽代碼如下:
輸入:原始數(shù)據(jù)庫D1,最小支持度support,最小置信度confidence,最大頻繁項集數(shù)量number。
輸出:正關聯(lián)規(guī)則positive rule、負關聯(lián)規(guī)則negative rule。
//找出候選L1,在LK中加入頻繁1-項謂詞集,在Ck中加入候選1謂詞集。
Dime set=get Multi Dime(t.屬性);//搜索頻繁謂詞集,并計數(shù)
根據(jù)上述算法設計思想,進行系統(tǒng)的分析和設計。藥物副作用挖掘系統(tǒng)的結(jié)構(gòu)如圖1所示,具體包括三個模塊,從上到下分別是模型可視化分析模塊、關聯(lián)規(guī)則算法模塊和數(shù)據(jù)預處理模塊。
每個副作用擁有一個UMLS(Unified Medical Language System)一體化醫(yī)學語言系統(tǒng)的概念編號CUI,并由含義相同的一種或者多種副作用名稱構(gòu)成[10]。具體如表1所示。
圖1 關聯(lián)規(guī)則挖掘系統(tǒng)架構(gòu)
表1 UMLS分配
實驗平臺:PC為I5-7200U-2.5GHZ,雙核,8GB的DDR4內(nèi)存,256GB固態(tài)硬盤,widows7旗艦版64位。用戶操作子系統(tǒng)的WEB服務器采用Apache的tomcat7作為容器管理,數(shù)據(jù)庫采用微軟的SQL Server2008R2存儲用戶操作數(shù)據(jù)。數(shù)據(jù)挖掘子系統(tǒng)采用Weka 3.6作為基礎框架做進一步擴展開發(fā)。對Apriori算法和本文改進算法進行模擬,得到如圖2所示的執(zhí)行時間比較。可見,筆者改進算法在各個支持度下都比Apriori算法執(zhí)行效率高。
應用筆者改進算法,得到如表2、表3和表4所示的,頻繁1-項集、頻繁2-項集和頻繁3-項集出現(xiàn)頻率最高的5個。得出結(jié)論,藥物副作用中,皮膚損傷最為常見,當2個副作用同時出現(xiàn)時,皮膚損傷和視覺系統(tǒng)傷害最為常見。當3個副作用同時出現(xiàn)時,皮膚損傷、神經(jīng)系統(tǒng)損害和重度全身性損害最為常見。
圖2 執(zhí)行時間比較
實驗結(jié)果分析,從表5得到部分關聯(lián)規(guī)則,第一項表示,當皮膚損害和視覺系統(tǒng)傷害同時發(fā)生時,有62%的可能性會同時導致重度全身性傷害,以及有62%的可能性肝膽不受損。最后一項表示,當重度全身性傷害和非呼吸系統(tǒng)損害同時發(fā)生時,有54%的可能性會使肝膽傷害,以及有54%的可能性神經(jīng)系統(tǒng)不受傷害。
表2 頻繁1-項集頻率最高的前5個
表3 頻繁2-項集頻率最高的前5個
表4 頻繁3-項集頻率最高的前5個
表5 部分關聯(lián)規(guī)則
筆者對經(jīng)典關聯(lián)規(guī)則算法進行升級改造,提出了基于維數(shù)目約束、事務集約簡的關聯(lián)規(guī)則挖掘算法,給出了改進算法的偽代碼,并將算法思想,應用于藥物副作用挖掘系統(tǒng)。該算法與經(jīng)典Apriori算法相比,提高了挖掘速度,減少了存儲空間,能夠更加有效地挖掘出有研究價值的藥物副作用關聯(lián)規(guī)則,為藥物研制和使用提供了科學決策依據(jù),具有重要的意義。