朱艷麗,李士勇
(河南科技學(xué)院,河南新鄉(xiāng)453003)
中國醫(yī)學(xué)(Traditional Chinese Medicine,TCM)源遠(yuǎn)流長,對中華民族的繁榮昌盛做了重要貢獻(xiàn).中藥復(fù)方也稱方劑,在中醫(yī)藥科學(xué)中扮演著重要的角色,是中醫(yī)基礎(chǔ)理論與臨床的紐帶[1].在方劑中,“方、藥、證”之間存在著錯(cuò)綜復(fù)雜的對應(yīng)關(guān)系,幾千年來積累的十余萬首中藥方劑,是我國醫(yī)藥界最寶貴的資源和財(cái)富.方劑數(shù)據(jù)經(jīng)過中醫(yī)學(xué)界及相關(guān)領(lǐng)域廣大工作者的不懈努力,規(guī)范整理形成了中國方劑數(shù)據(jù)庫.復(fù)方數(shù)量達(dá)十幾萬首,其中中醫(yī)古方劑庫就包含了8萬方劑,為研究方劑配伍規(guī)律打下了堅(jiān)實(shí)的基礎(chǔ)[2].
數(shù)據(jù)挖掘(Data Mining)是為解決“數(shù)據(jù)豐富,知識貧乏”狀況而興起的邊緣學(xué)科之一,是從海量數(shù)據(jù)中獲取知識的可靠技術(shù).數(shù)據(jù)挖掘作為人工智能與數(shù)據(jù)庫交叉融合的高級信息處理技術(shù),可以反映多維數(shù)據(jù)之間的相互映射關(guān)系,為現(xiàn)代方劑的研究提供了非常有力的研究工具[3].關(guān)聯(lián)規(guī)則是目前應(yīng)用于方劑研究最經(jīng)典的一種方法[4],姚美村等應(yīng)用關(guān)聯(lián)規(guī)則分析技術(shù),在單味藥層次上進(jìn)行消渴病復(fù)方組成藥味之間的關(guān)聯(lián)模式研究[5].得到了藥物與上中下三消的關(guān)聯(lián)以及藥物之間的關(guān)聯(lián),與中醫(yī)專家對于消渴病的治療在主要藥物的配伍方面基本一致,這在一定程度上反映出歷代中醫(yī)在消渴病治療方面認(rèn)識和治療的整體規(guī)律性.陳波、蔣永光等應(yīng)用關(guān)聯(lián)規(guī)則對脾胃方從藥物間關(guān)聯(lián)、癥狀間關(guān)聯(lián)、處方結(jié)構(gòu)與癥狀關(guān)聯(lián)進(jìn)行分析,并就脾胃方的核心藥物、方劑結(jié)構(gòu)、藥對、藥組和“方、藥、證”的對應(yīng)關(guān)聯(lián)方面形成了有關(guān)技術(shù)規(guī)則和處理程序[6-8].綜上所述,關(guān)聯(lián)規(guī)則在方劑數(shù)據(jù)挖掘研究的應(yīng)用中,優(yōu)勢體現(xiàn)在提取核心藥物及揭示配伍關(guān)系.因此,本文通過使用關(guān)聯(lián)規(guī)則挖掘研究成果以及相關(guān)技術(shù)對中醫(yī)方劑庫數(shù)據(jù)進(jìn)行智能分析,深化對中醫(yī)病癥與復(fù)方配伍的本質(zhì)規(guī)律認(rèn)識,為合理配伍提供理論支持.
數(shù)據(jù)預(yù)處理的任務(wù)就是以領(lǐng)域知識為指導(dǎo),用全新的“業(yè)務(wù)模型”來組織原有業(yè)務(wù)數(shù)據(jù),清除與挖掘目標(biāo)無關(guān)的屬性,提供干凈、準(zhǔn)確、精簡的數(shù)據(jù),以提高挖掘的質(zhì)量和效率[9].在數(shù)據(jù)挖掘過程中數(shù)據(jù)預(yù)處理至關(guān)重要.根據(jù)統(tǒng)計(jì),在一個(gè)完整的數(shù)據(jù)挖掘過程中,數(shù)據(jù)預(yù)處理要花費(fèi)60%左右的時(shí)間.
中醫(yī)各家各派眾多,不同學(xué)派和醫(yī)家基于不同的臨床實(shí)踐和理論認(rèn)識,產(chǎn)生了各種不盡相同的學(xué)術(shù)思想和觀點(diǎn).加之中醫(yī)學(xué)理論形成的特殊文化背景和哲學(xué)體系,導(dǎo)致了其診療理論和行為的多元化和經(jīng)驗(yàn)性.因此,歷經(jīng)幾千年歷史的中醫(yī)藥雖然累積了大量的文獻(xiàn)資料,但由于其所含的知識信息大多屬于醫(yī)藥實(shí)踐的原始記錄,缺乏系統(tǒng)的整理和研究,其理論表述中術(shù)語的使用和概念的表達(dá)等方面規(guī)范化和標(biāo)準(zhǔn)化程度較低,不能直接進(jìn)行數(shù)據(jù)挖掘[3].為研究古代方劑配伍規(guī)律,首先需要做的就是對方劑庫數(shù)據(jù)進(jìn)行預(yù)處理,降低噪聲.本文主要通過數(shù)據(jù)集成、數(shù)據(jù)清洗和數(shù)據(jù)轉(zhuǎn)換等方法對包含有噪聲、不完整、甚至是不一致的中藥方劑數(shù)據(jù)信息進(jìn)行預(yù)處理,以提高數(shù)據(jù)挖掘?qū)ο蟮馁|(zhì)量.
對方劑信息進(jìn)行預(yù)處理后,得到用于挖掘的方劑數(shù)據(jù)庫,采用Apriori算法挖掘方劑庫中存在的藥對規(guī)律.該算法易于實(shí)現(xiàn),但在實(shí)際中存在對數(shù)據(jù)庫的掃描次數(shù)過于頻繁的缺陷.為提高算法的效率,避免反復(fù)掃描方劑數(shù)據(jù)庫,我們在使用關(guān)聯(lián)規(guī)則算法進(jìn)行挖掘前,先為方劑數(shù)據(jù)庫建立一個(gè)位圖矩陣,然后使用Apriori算法在位圖矩陣上進(jìn)行挖掘操作.建立位圖矩陣的代碼如下:
ResultSet rsName=stmt.executeQuery(queryName);i=0;
while(rsName.next()){
if(i<405)
drugName[i]=rsName.getString(" 藥名 ");
i++;}
ResultSet rsId=stmt.executeQuery(queryId);i=0;
while(rsId.next()){
fangjiId[i++]=rsId.getString("方劑編號 ");}
for(int i=0;i<1060;i++)
{for(int j=0;j<405;j++)
matrix[i][j]='0';}
for(int i=0;i<1060;i++)
{String queryName1="select藥名 from藥物表 where"方劑編號="+fangjiId[i]+"group by藥名order by藥名";
ResultSet rsName1=stmt.executeQuery(queryName1);i=0;
while(rsName1.next()){
temp[i]=rsName1.getString("藥名 ");i++;}
for(int k=0;k<l060;k++)
{
for(int j=0;j<405;j++)
if(temp[k].equals(drugName[j]))
matrix[i][j]='1';
temp[k]="";
}
rsName1.close();
通過以上代碼能建立方劑庫的位圖矩陣.該位圖矩陣中,每一行代表一種方劑,每一列代表一種藥.當(dāng)一種方劑中含有這種藥物時(shí),其位圖矩陣的對應(yīng)位的值為1,否則為0.在實(shí)驗(yàn)過程中,為得到多組實(shí)驗(yàn)數(shù)據(jù),我們需要反復(fù)調(diào)整最小支持度閾值和最小置信度閾值,但位圖矩陣只需在進(jìn)行第一組實(shí)驗(yàn)時(shí)建立一次.
關(guān)聯(lián)規(guī)則挖掘主要是基于頻繁項(xiàng)目集發(fā)現(xiàn)上的,而Agrawal和Srikant提出的Apriori算法是一種最有影響的挖掘布爾關(guān)聯(lián)規(guī)則頻繁項(xiàng)集的算法[10].利用層次順序搜索的循環(huán)方法來完成頻繁項(xiàng)集的挖掘工作.首先找出頻繁1-項(xiàng)集,記為L1;然后利用L1來挖掘L2,即頻繁2-項(xiàng)集;不斷如此循環(huán)下去直到無法發(fā)現(xiàn)更多的頻繁k-項(xiàng)集為止.為提高產(chǎn)生相應(yīng)頻繁項(xiàng)集的效率,利用Apriori性質(zhì)來幫助有效縮小頻繁項(xiàng)集的搜索空間,通過連接和剪枝兩步過程來實(shí)現(xiàn)頻繁項(xiàng)集的挖掘.本文使用Apriori算法進(jìn)行關(guān)聯(lián)規(guī)則挖掘,具體過程如下:
(1)輸入方劑庫D,設(shè)置最小支持度minsup和最小置信度minconf的值;
(2)掃描方劑庫D,求出1-候選集,即C1;
(3)假設(shè)k為當(dāng)前迭代次數(shù),Lk-1為上一次迭代產(chǎn)生的頻繁集,循環(huán)迭代以下步驟直到Lk-1為空;
(4)從Lk-1中得出包含Lk的侯選集Ck,首先對Lk-1中所有前k-2個(gè)項(xiàng)目相同的項(xiàng)目集作連接操作,即Lk-1∞Lk-1={A∞B|A,B∈Lk-1,|A∩B|=k-2},再根據(jù)Apriori性質(zhì)從該集合中刪除其子集在Lk-1未出現(xiàn)的k階項(xiàng)目集,得到Ck;
(5)從Ck中刪去支持度小于最小支持度的頻繁集,得到Lk,回到步驟(3);
(6)輸出所有找到的頻繁項(xiàng)集;
(7)以(6)中頻繁項(xiàng)集為基礎(chǔ),對每一個(gè)頻繁項(xiàng)集生成置信度大于最小置信度的關(guān)聯(lián)規(guī)則.
假設(shè)最小支持度閾值=5%,最小置信度閾值=55%,方劑庫總共有1 046條記錄,關(guān)聯(lián)分析實(shí)驗(yàn)結(jié)果見表1和表2,其中表1為二項(xiàng)頻集及關(guān)聯(lián)分析實(shí)驗(yàn)結(jié)果,表2為三項(xiàng)頻集及關(guān)聯(lián)分析實(shí)驗(yàn)結(jié)果.表中數(shù)據(jù)包含關(guān)聯(lián)規(guī)則的編號、頻繁集、關(guān)聯(lián)規(guī)則以及置信度.
表1 二項(xiàng)頻集及關(guān)聯(lián)規(guī)則實(shí)驗(yàn)結(jié)果
表2 三項(xiàng)頻集及關(guān)聯(lián)規(guī)則實(shí)驗(yàn)結(jié)果
表1中規(guī)則1表示生姜=>大棗為找到的關(guān)聯(lián)規(guī)則,它們的置信度為86%.又如人參=>白術(shù)+當(dāng)歸,表示在頻繁3項(xiàng)集中{人參,白術(shù),當(dāng)歸},人參存在的情況下白術(shù)和當(dāng)歸同時(shí)出現(xiàn)的概率為75%.
中醫(yī)臨癥既要辨證準(zhǔn)確,還要用藥精當(dāng),做到理、法、方、藥的和諧統(tǒng)一,才能收到滿意療效.所以,正確掌握和運(yùn)用中藥是一個(gè)很重要的關(guān)鍵.而那些出于經(jīng)方或時(shí)方的“藥對”是方劑結(jié)構(gòu)的重要組成部分,我們找到的規(guī)則是否為真正意義上的藥對還需要使用中醫(yī)理論進(jìn)行論證.如表1中規(guī)則3找到的白術(shù)和茯苓藥隊(duì),在實(shí)際中醫(yī)應(yīng)用中,白術(shù)和茯苓組成茯苓湯主治脾虛不運(yùn),痰飲內(nèi)停,水濕為患之癥,證明白術(shù)和茯苓是真正意義的藥對.
為減少挖掘所用時(shí)間,采用位圖矩陣對方劑庫進(jìn)行數(shù)字化,并將該系統(tǒng)與成都中醫(yī)藥大學(xué)和西南交通大學(xué)開發(fā)的中藥復(fù)分析系統(tǒng)TCDMiner在挖掘藥對方面進(jìn)行比較.系統(tǒng)測試在同一臺計(jì)算機(jī)上,所用的方劑庫同為脾胃方庫,支持度調(diào)整5次,記錄每次挖掘頻繁二項(xiàng)集在不同的支持度下所用時(shí)間.實(shí)驗(yàn)結(jié)果如表3示,表中的minsup表示最小支持度.
表3 系統(tǒng)實(shí)驗(yàn)數(shù)據(jù)對照 t/s
實(shí)驗(yàn)結(jié)果表明使用本文中的關(guān)聯(lián)規(guī)則挖掘方法速度更快.
數(shù)據(jù)挖掘幫助人們從大量的數(shù)據(jù)信息中發(fā)現(xiàn)隱含的知識、規(guī)律和行為模式,對人們的決策和行為進(jìn)行指導(dǎo).中醫(yī)藥學(xué)是中華民族的文化瑰寶,幾千年來積累了大量的中藥復(fù)方.本文首先采用數(shù)據(jù)集成、數(shù)據(jù)清洗和數(shù)據(jù)轉(zhuǎn)換等方法對中藥方劑庫進(jìn)行預(yù)處理,并建立位圖矩陣,然后使用Apriori算法對位圖矩陣進(jìn)行關(guān)聯(lián)規(guī)則挖掘,挖掘出關(guān)于藥對的有價(jià)值的信息規(guī)律,對于促進(jìn)中醫(yī)藥學(xué)的發(fā)展和中藥新藥的研制開發(fā)產(chǎn)生了積極的影響.實(shí)驗(yàn)結(jié)果表明應(yīng)用數(shù)據(jù)挖掘研究中藥藥對相互關(guān)系具有可行性,且有進(jìn)一步研究的價(jià)值和應(yīng)用前景.
[1]陸偉,王雁峰,吳朝暉.中藥復(fù)方組成規(guī)律的關(guān)聯(lián)規(guī)則發(fā)現(xiàn)系統(tǒng)[J].浙江大學(xué)學(xué)報(bào):工學(xué)版,2001,35(4):370-373,407.
[2]王春山.數(shù)據(jù)挖掘技術(shù)在方劑配伍領(lǐng)域的應(yīng)用研究[D].杭州:浙江大學(xué),2006.
[3]李力.數(shù)據(jù)挖掘方法研究及其在中藥復(fù)方配伍分析中的應(yīng)用[D].成都:西南交通大學(xué),2003:1-150.
[4]葉亮,范欣生,王崇駿,等.方劑數(shù)據(jù)挖掘研究常用方法探討[J].醫(yī)學(xué)信息,2008,21(10):1734-1737.
[5]姚美村,艾路,袁月梅,等.消渴病復(fù)方配伍規(guī)律的關(guān)聯(lián)規(guī)則分析[J].北京中醫(yī)藥大學(xué)學(xué)報(bào),2002,25(6):48-50.
[6]陳波,蔣永光,胡波,等.東垣脾胃方配伍規(guī)律之關(guān)聯(lián)分析評述[J].中醫(yī)藥學(xué)刊,2004,22(4):611-615.
[7]蔣永光,胡波,劉娟,等.方劑配伍的數(shù)據(jù)挖掘可行性探索[J].四川中醫(yī),2004,22(8):25-28.
[8]蔣永光,李力,李認(rèn)書,等.中醫(yī)脾胃方配伍規(guī)律的數(shù)據(jù)挖掘試驗(yàn)[J].世界科學(xué)技術(shù)-中藥現(xiàn)代化,2003,5(3):33-37.
[9]菅志剛,金旭.數(shù)據(jù)挖掘中數(shù)據(jù)預(yù)處理的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用研究,2004(7):117-118,157.
[10]Srikant R,Agrawal R.Mining quantitative association rules in large relational tables[J].Proceedings ofACM SIGMOD International conference on Management ofData,1996,25(2):1-12.
河南科技學(xué)院學(xué)報(bào)(自然科學(xué)版)2012年1期