朱艳丽,李士勇
(河南科技学院,河南新乡453003)
中国医学(Traditional Chinese Medicine,TCM)源远流长,对中华民族的繁荣昌盛做了重要贡献.中药复方也称方剂,在中医药科学中扮演着重要的角色,是中医基础理论与临床的纽带[1].在方剂中,“方、药、证”之间存在着错综复杂的对应关系,几千年来积累的十余万首中药方剂,是我国医药界最宝贵的资源和财富.方剂数据经过中医学界及相关领域广大工作者的不懈努力,规范整理形成了中国方剂数据库.复方数量达十几万首,其中中医古方剂库就包含了8万方剂,为研究方剂配伍规律打下了坚实的基础[2].
数据挖掘(Data Mining)是为解决“数据丰富,知识贫乏”状况而兴起的边缘学科之一,是从海量数据中获取知识的可靠技术.数据挖掘作为人工智能与数据库交叉融合的高级信息处理技术,可以反映多维数据之间的相互映射关系,为现代方剂的研究提供了非常有力的研究工具[3].关联规则是目前应用于方剂研究最经典的一种方法[4],姚美村等应用关联规则分析技术,在单味药层次上进行消渴病复方组成药味之间的关联模式研究[5].得到了药物与上中下三消的关联以及药物之间的关联,与中医专家对于消渴病的治疗在主要药物的配伍方面基本一致,这在一定程度上反映出历代中医在消渴病治疗方面认识和治疗的整体规律性.陈波、蒋永光等应用关联规则对脾胃方从药物间关联、症状间关联、处方结构与症状关联进行分析,并就脾胃方的核心药物、方剂结构、药对、药组和“方、药、证”的对应关联方面形成了有关技术规则和处理程序[6-8].综上所述,关联规则在方剂数据挖掘研究的应用中,优势体现在提取核心药物及揭示配伍关系.因此,本文通过使用关联规则挖掘研究成果以及相关技术对中医方剂库数据进行智能分析,深化对中医病症与复方配伍的本质规律认识,为合理配伍提供理论支持.
数据预处理的任务就是以领域知识为指导,用全新的“业务模型”来组织原有业务数据,清除与挖掘目标无关的属性,提供干净、准确、精简的数据,以提高挖掘的质量和效率[9].在数据挖掘过程中数据预处理至关重要.根据统计,在一个完整的数据挖掘过程中,数据预处理要花费60%左右的时间.
中医各家各派众多,不同学派和医家基于不同的临床实践和理论认识,产生了各种不尽相同的学术思想和观点.加之中医学理论形成的特殊文化背景和哲学体系,导致了其诊疗理论和行为的多元化和经验性.因此,历经几千年历史的中医药虽然累积了大量的文献资料,但由于其所含的知识信息大多属于医药实践的原始记录,缺乏系统的整理和研究,其理论表述中术语的使用和概念的表达等方面规范化和标准化程度较低,不能直接进行数据挖掘[3].为研究古代方剂配伍规律,首先需要做的就是对方剂库数据进行预处理,降低噪声.本文主要通过数据集成、数据清洗和数据转换等方法对包含有噪声、不完整、甚至是不一致的中药方剂数据信息进行预处理,以提高数据挖掘对象的质量.
对方剂信息进行预处理后,得到用于挖掘的方剂数据库,采用Apriori算法挖掘方剂库中存在的药对规律.该算法易于实现,但在实际中存在对数据库的扫描次数过于频繁的缺陷.为提高算法的效率,避免反复扫描方剂数据库,我们在使用关联规则算法进行挖掘前,先为方剂数据库建立一个位图矩阵,然后使用Apriori算法在位图矩阵上进行挖掘操作.建立位图矩阵的代码如下:
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();
通过以上代码能建立方剂库的位图矩阵.该位图矩阵中,每一行代表一种方剂,每一列代表一种药.当一种方剂中含有这种药物时,其位图矩阵的对应位的值为1,否则为0.在实验过程中,为得到多组实验数据,我们需要反复调整最小支持度阈值和最小置信度阈值,但位图矩阵只需在进行第一组实验时建立一次.
关联规则挖掘主要是基于频繁项目集发现上的,而Agrawal和Srikant提出的Apriori算法是一种最有影响的挖掘布尔关联规则频繁项集的算法[10].利用层次顺序搜索的循环方法来完成频繁项集的挖掘工作.首先找出频繁1-项集,记为L1;然后利用L1来挖掘L2,即频繁2-项集;不断如此循环下去直到无法发现更多的频繁k-项集为止.为提高产生相应频繁项集的效率,利用Apriori性质来帮助有效缩小频繁项集的搜索空间,通过连接和剪枝两步过程来实现频繁项集的挖掘.本文使用Apriori算法进行关联规则挖掘,具体过程如下:
(1)输入方剂库D,设置最小支持度minsup和最小置信度minconf的值;
(2)扫描方剂库D,求出1-候选集,即C1;
(3)假设k为当前迭代次数,Lk-1为上一次迭代产生的频繁集,循环迭代以下步骤直到Lk-1为空;
(4)从Lk-1中得出包含Lk的侯选集Ck,首先对Lk-1中所有前k-2个项目相同的项目集作连接操作,即Lk-1∞Lk-1={A∞B|A,B∈Lk-1,|A∩B|=k-2},再根据Apriori性质从该集合中删除其子集在Lk-1未出现的k阶项目集,得到Ck;
(5)从Ck中删去支持度小于最小支持度的频繁集,得到Lk,回到步骤(3);
(6)输出所有找到的频繁项集;
(7)以(6)中频繁项集为基础,对每一个频繁项集生成置信度大于最小置信度的关联规则.
假设最小支持度阈值=5%,最小置信度阈值=55%,方剂库总共有1 046条记录,关联分析实验结果见表1和表2,其中表1为二项频集及关联分析实验结果,表2为三项频集及关联分析实验结果.表中数据包含关联规则的编号、频繁集、关联规则以及置信度.
表1 二项频集及关联规则实验结果
表2 三项频集及关联规则实验结果
表1中规则1表示生姜=>大枣为找到的关联规则,它们的置信度为86%.又如人参=>白术+当归,表示在频繁3项集中{人参,白术,当归},人参存在的情况下白术和当归同时出现的概率为75%.
中医临症既要辨证准确,还要用药精当,做到理、法、方、药的和谐统一,才能收到满意疗效.所以,正确掌握和运用中药是一个很重要的关键.而那些出于经方或时方的“药对”是方剂结构的重要组成部分,我们找到的规则是否为真正意义上的药对还需要使用中医理论进行论证.如表1中规则3找到的白术和茯苓药队,在实际中医应用中,白术和茯苓组成茯苓汤主治脾虚不运,痰饮内停,水湿为患之症,证明白术和茯苓是真正意义的药对.
为减少挖掘所用时间,采用位图矩阵对方剂库进行数字化,并将该系统与成都中医药大学和西南交通大学开发的中药复分析系统TCDMiner在挖掘药对方面进行比较.系统测试在同一台计算机上,所用的方剂库同为脾胃方库,支持度调整5次,记录每次挖掘频繁二项集在不同的支持度下所用时间.实验结果如表3示,表中的minsup表示最小支持度.
表3 系统实验数据对照 t/s
实验结果表明使用本文中的关联规则挖掘方法速度更快.
数据挖掘帮助人们从大量的数据信息中发现隐含的知识、规律和行为模式,对人们的决策和行为进行指导.中医药学是中华民族的文化瑰宝,几千年来积累了大量的中药复方.本文首先采用数据集成、数据清洗和数据转换等方法对中药方剂库进行预处理,并建立位图矩阵,然后使用Apriori算法对位图矩阵进行关联规则挖掘,挖掘出关于药对的有价值的信息规律,对于促进中医药学的发展和中药新药的研制开发产生了积极的影响.实验结果表明应用数据挖掘研究中药药对相互关系具有可行性,且有进一步研究的价值和应用前景.
[1]陆伟,王雁峰,吴朝晖.中药复方组成规律的关联规则发现系统[J].浙江大学学报:工学版,2001,35(4):370-373,407.
[2]王春山.数据挖掘技术在方剂配伍领域的应用研究[D].杭州:浙江大学,2006.
[3]李力.数据挖掘方法研究及其在中药复方配伍分析中的应用[D].成都:西南交通大学,2003:1-150.
[4]叶亮,范欣生,王崇骏,等.方剂数据挖掘研究常用方法探讨[J].医学信息,2008,21(10):1734-1737.
[5]姚美村,艾路,袁月梅,等.消渴病复方配伍规律的关联规则分析[J].北京中医药大学学报,2002,25(6):48-50.
[6]陈波,蒋永光,胡波,等.东垣脾胃方配伍规律之关联分析评述[J].中医药学刊,2004,22(4):611-615.
[7]蒋永光,胡波,刘娟,等.方剂配伍的数据挖掘可行性探索[J].四川中医,2004,22(8):25-28.
[8]蒋永光,李力,李认书,等.中医脾胃方配伍规律的数据挖掘试验[J].世界科学技术-中药现代化,2003,5(3):33-37.
[9]菅志刚,金旭.数据挖掘中数据预处理的研究与实现[J].计算机应用研究,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.