滕璐灵,宋 尧,张宝林
甘肃省中医院,甘肃 兰州 730050
在中医医院,HIS系统数据库里的中药处方数据是极其宝贵的,对中医处方数据的分析,可以得到中医师针对不同患者开具的中医处方用药规律,可对今后同类病症的治疗起到辅助参考的作用。因此本研究以关联规则挖掘为模型,设计了中药处方分析算法。
Apriori算法是一种挖掘布尔关联规则频繁项集的算法。其核心是基于两阶段频集思想的递推算法。算法需要对数据集进行多步处理,第一步,简单统计所有含有一个元素项目集出现的频率,并找出不小于最小支持度的项目集;从第二步开始循环处理直到再没有最大项目集生成。循环过程是:第n步中,根据第n-1步生成的(n-1)维最大项目集产生m维候选项目集,然后对数据库进行搜索,得到候选项目集的项集支持度,与最小支持度比较,从而找到n维最大项目集[1]。
中药处方分析算法是以关联规则模型为依据,在给定中医数据集中进行频繁项集的搜索[2],应用最小支持度计数阈值为度量标准从候选集中查找频繁项集。关联规则在D中的支持度(suppor t)是D中事务同时包含X、Y的百分比,即概率;置信度(conf idence)是包含X的事务中同时又包含Y的百分比,即条件概率。
查找频繁项集是实现中药处方分析的关键,采用查找频繁项集的经典算法——Apriori算法为核心进行设计实现,但又通过缩小扫描事务集的范围提高算法的执行效率。
数据挖掘对基础数据的要求较高,因此数据预处理就变得尤为重要。数据的预处理通常按照以下步骤进行:
2.1 数据筛选 中药处方分析技术的研究对象是中医医嘱中相关中药处方的内容,所以作为基础数据,首先需要将中药处方信息从医嘱信息中分离开来[3]。
2.2 数据表标准化 在标准化处理的过程中需要解决的问题是中药药名的统一,一味中药可能存在不同的别名,因此在统计分析时不应作为不同的药物来对待,需要根据中药药名对照表进行匹配核对。
2.3 生成中药处方 生成中药处方布尔值统计表与事务统计表,流程见图1、表1—5。
图1 生成布尔值统计表与事务统计表的流程
表1 中医诊断类别定义
表2 中药药物信息定义
表3 中药处方信息定义
表4 中药处方药物布尔值统计
表5 中药处方事务统计
以上得到的中药处方事务统计表不是真正需要的有价值的信息,还需要通过中药处方分析算法,对表中的记录进行进一步分析[4],主要流程见图2:
L1=f ind_f requent_1-itemsets(D);
for(k=2;Lk-1≠Φ;k++){Ck=apriori(Lk-1,min_sup);
for each t ransaction t∈D{Ct=subset(Ck,t);
for each candidate c∈Ctc.count++;}
Lk={c∈Ck|c.count≥min_sup}}
return L=所有频繁集;
通过输入不同的中医诊断编码,可以得到不同病症的中药处方分析数据。首先筛选出中医诊断中痹症的中药处方部分事务,结合这些数据说明算法的实际应用,见附图1。
临时表中输出频繁项集为{I1,I15,I19,I68}。由频繁项集可产生中药处方用药规则,其置信度计算如下:
将事务编号进行替换后得到中药药物名称的规则记录表,见表6。
表6 转换后的规则记录
传统的Apriori算法在候选项集进行支持度计数时,每次都要对原事务表进行扫描,原事务表中的数据往往较巨大,导致该算法效率低下,因此在中药处方分析算法中,设置了“药物个数”字段,记录每张处方中包含的中药药物个数,在进行候选集支持度计数时,只针对“药物个数”>=3的记录进行扫描,以提高算法的执行效率。
附图1 频繁项集生成过程
[1] Jiawei Han,Michel ine Kamber.数据挖掘概念与技术[M].范明,孟小峰,译.北京:机械工业出版社,2007:133.
[2] 李凌艳,李认书,孙鹤.数据挖掘技术在中药研究中的应用[J].中草药,2010,41(5):I0016-I0018.
[3] 钱增瑾,辛燕.中医药数据预处理方法的设计与实现[J].计算机工程与设计,2005,26(12):3199-3200.
[4] 丁一琦.基于Apriori算法的数据挖掘技术研究[J].现代计算机,2012(24):20-22.