毕业设计(论文)-基于Apriori算法的关联规则挖掘系统的设计与实现.doc

上传人:李主任 文档编号:3282594 上传时间:2019-08-07 格式:DOC 页数:27 大小:369.02KB
返回 下载 相关 举报
毕业设计(论文)-基于Apriori算法的关联规则挖掘系统的设计与实现.doc_第1页
第1页 / 共27页
毕业设计(论文)-基于Apriori算法的关联规则挖掘系统的设计与实现.doc_第2页
第2页 / 共27页
毕业设计(论文)-基于Apriori算法的关联规则挖掘系统的设计与实现.doc_第3页
第3页 / 共27页
毕业设计(论文)-基于Apriori算法的关联规则挖掘系统的设计与实现.doc_第4页
第4页 / 共27页
毕业设计(论文)-基于Apriori算法的关联规则挖掘系统的设计与实现.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《毕业设计(论文)-基于Apriori算法的关联规则挖掘系统的设计与实现.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)-基于Apriori算法的关联规则挖掘系统的设计与实现.doc(27页珍藏版)》请在三一文库上搜索。

1、基于Apriori算法的关联规则挖掘系统的设计与实现摘 要随着信息时代的发展,信息量呈几何级数增长,人们发现从这些海量信息中获取有用的信息越来越困难,要找出信息背后隐藏的规律更是不可想象。数据挖掘就是从大量数据中获取有用信息的一门新技术,关联规则挖掘是数据挖掘方法中的一种。本文详细论述了基于Apriori算法的关联规则挖掘系统的设计开发过程。系统基于经典的Apriori算法,对事务数据库进行了位图矩阵转换,大大提高了搜索效率,并能分别挖掘频繁项集和关联规则。论文组织如下:首先介绍了数据挖掘的产生、定义和应用;接着阐述了关联规则挖掘的基本概念;然后对系统的需求进行了分析,并提出设计方案;紧接着是

2、系统的具体实现;最后对系统进行了测试,将系统用于挖掘中药方剂库中的药对药组,验证了系统的正确性和实用性。关键词:数据挖掘;关联规则;Apriori算法The Design and Implementation of Association Rules Mining System based on Apriori ArithmeticAbstractWith the development of the information era, the quantity of information increases in the way of geometric series, and people

3、 find that it is more and more difficult to obtain valuable informatin and it is incogitable to find out the rules hiding in the information. Data mining is a new technology to mine valuable informatin from abundant data, and association rules mining is a method of data mining. This paper elaborates

4、 on the process of the design and development of association rules mining system based on Apriori . The system is based upon classical Apriori arithmetic, and converts chinese medicine prescriptions database to a bitmap matrix, which greatly enhances the efficiency of search, and can mine frequent i

5、tems and association rules respectively. The paper is organized as following: Firstly, introduces the generation, definition and application of data mining; Secondly, sets forth the conception of association rules mining; Thirdly, analyzes the demand of the system, and propses the design project and

6、 implements the system; Finally, gives a test to mine chinese medicine groups from a chinese medicine prescriptions data, which proves the system valid and applicable. Key words: Data mining; Apriori; Chinese traditional medicine目录论文总页数:27页1引言12数据挖掘概述12.1数据挖掘的产生12.2数据挖掘的定义12.3 数据挖掘的应用43关联规则挖掘43.1基本概

7、念43.2购物篮分析53.3Apriori经典算法64需求分析和设计方案84.1需求分析84.2设计方案85基于Apriori算法的关联规则挖掘系统105.1数据挖掘在中药方剂研究中的应用105.2基于Apriori算法的关联规则挖掘系统的实现115.2.1连接数据库115.2.2位图矩阵的建立115.2.3频繁项集125.2.4关联规则146系统测试196.1系统的使用196.2对显示数据的解释226.3分析23结 论24参考文献错误!未定义书签。致 谢错误!未定义书签。声 明错误!未定义书签。1引言随着数据库技术的迅速发展以及数据库管理系统的广泛应用,人们积累的数据越来越多。激增的数据背后

8、隐藏着许多重要的信息,人们希望能够对其进行更高层次的分析,以便更好地利用这些数据。目前的数据库系统可以高效地实现数据的录入、查询、统计等功能,但无法发现数据中存在的关系和规则,无法根据现有的数据预测未来的发展趋势。缺乏找出数据背后隐藏的知识的手段,导致了“数据爆炸但知识贫乏”的现象。于是数据挖掘技术应运而生,并显示出强大的生命力。数据挖掘就是从大量的、不完全的、有噪声的、模糊的、随机的数据中,提取隐含在其中的、人们事先不知道的、但又是潜在有用的信息和知识的过程。它使人类分析问题和发现知识能力得到了延伸。2数据挖掘概述2.1数据挖掘的产生随着信息时代的发展,信息量呈几何级数增长,然而用于对这些数

9、据进行分析处理的工具却很少,人们拥有了海量的数据的同时却苦于信息的缺乏。而激增的数据背后隐藏着许多重要的信息,人们希望能够对其进行更高层次的分析,以便更好地利用这些数据。目前的数据库系统可以高效地实现数据的录入、查询、统计等功能,但无法发现数据中存在的关系和规则,无法根据现有的数据预测未来的发展趋势。缺乏挖掘数据背后隐藏的知识的手段,导致了“数据爆炸但知识贫乏”的现象。信息爆炸是一把双刃剑:巨量的信息既是最重要的财富,又是最危险的杀手。巨量信息也导致决策与理解危机。面对“人人被数据淹没,人们却饥饿于知识”的挑战,数据挖掘和知识发现技术应运而生,并得以蓬勃发展,越来越显示出其强大的生命力。数据挖

10、掘是信息技术自然演化的结果。演化过程的见证是数据库业界开发以下功能:数据收集和数据库创建,数据管理(包括数据存储和检索,数据库事务处理),以及数据分析与理解(涉及数据仓库和数据挖掘)。例如,数据收集和数据库创建机制的早期开发已成为稍后数据存储和检索、查询和事务处理有效机制开发的必备基础。随着提供查询和事务处理的大量数据库系统广泛付诸实践,数据分析和理解自然成为下一个目标。2.2数据挖掘的定义数据挖掘是从大量数据中提取或“挖掘”知识。具体来说,数据挖掘就是从大量的、不完全的、有噪声的、模糊的、随机的数据中,提取隐含在其中的、人们事先不知道的、但又是潜在有用的信息和知识的过程。人们把原始数据看作是

11、形成知识的源泉,就像从矿石中采矿一样。原始数据有结构化的,如关系数据库中的数据,也有半结构化的,如文本、图形、图像数据,甚至是分布在网络上的异构型数据。发现知识的方法可以是数学的,也可以是非数学的;可以是演绎的,也可以是归纳的。发现了的知识可以被用于信息管理、查询优化、决策支持、过程控制等,还可以用于数据自身的维护。因此,数据挖掘是一门很广义的交叉学科,它汇聚了不同领域的研究者,尤其是数据库、人工智能、数理统计、可视化、并行计算等方面的学者和工程技术人员。数据挖掘使用复杂的统计分析和建模技术来揭示企业数据库中隐藏的模式与关系而这些模式是有可能被普通的方法所忽略的。数据挖掘从数据的分析入手、帮助

12、决策,能从数据中寻找有价值的规律的技术。同时它也代表一个分析过程,我们具体化为方法学。实际上,数据库中的知识发现是一门交叉性学科,涉及到机器学习、模式识别、统计学、智能数据库、知识获取、数据可视化、高性能计算、专家系统等多个领域。从数据库中发现出来的知识可以用在信息管理、过程控制、科学研究、决策支持等许多方面。特别要指出的是,数据挖掘技术从一开始就是面向应用的。它不仅是面向特定数据库的简单检索查询调用,而且要对这些数据进行微观、中观乃至宏观的统计、分析、综合和推理,以指导实际问题的求解,企图发现事件间的相互关联,甚至利用已有的数据对未来的活动进行预测。许多人把数据挖掘视为另一个常用的术语数据库

13、中的知识发现或KDD (knowledge discovery in databases)的同义词。而另一些人只是把数据挖掘视为数据库中知识发现过程的一个基本步骤。知识发现过程如图1所示,由以下步骤组成:1) 数据清理(消除噪声或不一致数据)2) 数据集成(多种数据源可以组合在一起)3) 数据选择(从数据库中检索与分析任务相关的数据)4) 数据变换(数据变换或统一成适合挖掘的形式,如通过汇总或聚集操作)5) 数据挖掘(基本步骤,使用智能方法提取数据模式)6) 模式评估(根据某种兴趣度度量,识别出真正有趣的模式)7) 知识表示(使用可视化和知识表示技术,向用户提供挖掘的知识)图1 知识发现过程虽

14、然数据挖掘是知识发现过程的一个步骤,然而,在产业界、媒体和数据库研究界,“数据挖掘”比较长的术语“数据库中知识发现”更流行。目前比较公认的定义是Fayyad等给出的:KDD是从数据集中识别出有效的、新颖的、潜在有用的以及最终可理解模式的高级处理过程。这里的高级处理过程是指一个多步骤的处理过程,多步骤之间相互影响、反复调整,形成一种螺旋式的上升过程。而数据挖掘则指的是从存放在数据库、数据仓库或其他信息库中的大量数据中挖掘有趣知识的过程。数据挖掘其实是知识发现的核心部分,而知识发现是在积累了大量数据后,从中识别出有效的、新颖的、潜在的、有用的及最终可以理解的知识,人们利用这些知识改进工作,提高效率

15、和效益。KDD是一门交叉学科,涉及到人工智能、机器学习、模式识别、统计学、智能数据库、知识获取、数据可视化、专家系统等多个领域。数据挖掘算法的好坏将直接影响到所发现知识的好坏。数据挖掘的任务是从数据中发现模式。虽然数据挖掘是知识发现过程的一个步骤,然而,在产业界、媒体和数据库研究界,“数据挖掘”比较长的术语“数据库中知识发现”更流行。目前比较公认的定义是Fayyad等给出的:KDD是从数据集中识别出有效的、新颖的、潜在有用的以及最终可理解模式的高级处理过程。这里的高级处理过程是指一个多步骤的处理过程,多步骤之间相互影响、反复调整,形成一种螺旋式的上升过程。而数据挖掘则指的是从存放在数据库、数据

16、仓库或其他信息库中的大量数据中挖掘有趣知识的过程。其实数据挖掘是知识发现的核心部分,而知识发现是在积累了大量数据后,从中识别出有效的、新颖的、潜在的、有用的及最终可以理解的知识,人们利用这些知识改进工作,提高效率和效益。KDD是一门交叉学科,涉及到人工智能、机器学习、模式识别、统计学、智能数据库、知识获取、数据可视化、专家系统等多个领域。数据挖掘算法的好坏将直接影响到所发现知识的好坏。数据挖掘的任务是从数据中发现模式。2.3 数据挖掘的应用数据挖掘可以应用在各个不同的领域。电讯公司和信用卡公司是用数据挖掘检测欺诈行为的先行者。保险公司和证券公司也开始采用数据挖掘来减少欺诈。医疗应用是另一个前景

17、广阔的产业:数据挖掘可以用来预测外科手术、医疗试验和药物治疗的效果。零销商更多的使用数据挖掘来决定每种商品在不同地点的库存,通过数据挖掘更灵活的使用促销和优惠券手段。制药公司通过挖掘巨大的化学物质和基因对疾病的影响的数据库来判断哪些物质可能对治疗某种疾病产生效果。以下为数据挖掘的一些成功案例:(1)加拿大BC省电话公司要求加拿大Simon Fraser大学KDD研究组根据其拥有的十多年的客户数据,总结、分析并提出新的电话收费和管理办法,制定既有利于公司又有利于客户的优惠政策。(2)美国著名的国家篮球队NBA的教练,利用IBM公司提供的数据挖掘工具临场决定替换队员。大约20个NBA球队使用了IB

18、M公司开发的数据挖掘应用软件Advanced Scout系统来优化他们的战术组合。例如Scout就因为研究了魔术队队员不同的布阵安排,在与迈阿密热队的比赛中找到了获胜的机会。(3)国外使用数据挖掘技术,对西药的新药开发研究也早已利用数据挖掘技术。我国在中药的数据挖掘技术上已步入起步阶段。3关联规则挖掘关联规则挖掘发现大量数据中项集之间有趣的关联或相关联系。随着大量数据不停地收集和存储,许多业界人士对于从他们的数据库中挖掘关联规则越来越感兴趣。从大量商务事务记录中发现有趣的关联关系,可以帮助许多商务决策的制定,如分类设计、交叉购物和促销分析。关联规则挖掘的一个典型例子是购物篮分析。该过程通过发现

19、顾客放入其购物篮中不同商品之间的联系,分析顾客的购买习惯。通过了解哪些商品频繁地被顾客同时购买,这种关联的发现可以帮助零售商制定营销策略。例如,如果顾客购买牛奶的同时也购买面包(和什么类型的面包)的可能性有多大?通过帮助零售商有选择地经销和安排货架,这种信息可以引导销售。例如,将牛奶和面包尽可能放近一些,可以进一步刺激一次去商店同时购买这些商品。3.1基本概念设I=i1,i2,im是项的集合。设任务相关的数据D是数据库事务的集合,其中每个事务T是项的集合,使得TI。每个事务有一个标示符,称作TID。设A是一个项集,事务T包含A当且仅当 AT。关联规则是形如AB的蕴涵式,其中AI,BI,并且AB

20、=。如果D中有s%的事务包含AB,则称关联规则AB在事务数据库D中具有大小为s%的支持度,它是概率P(AB)。如果D中包含项目集A的事务中有c%的事务同时也包含项目集B,则称规则AB在事务数据库D中具有大小为c%的置信度,它是条件概率P(B|A)。即: support(AB)= P(AB) confidence(AB)=P(B|A) 如果不考虑关联规则的支持度和置信度,在事务数据库中可以发现无穷多的规则。事实上,满足一定的支持度和置信度的关联规则才是有意义的。因此,需要给定两个阈值:最小支持度(min_sup)和最小置信度(min_conf)。同时满足最小支持度阈值和最小置信度阈值的规则称作强

21、规则。为方便计,我们用0%和100%之间的值而不是用0到1之间的值表示支持度和置信度。项的集合称为项集(itemset)。包含k个项的项集称为k-项集。项集的出现频率是包含项集的事务数,简称为项集的支持计数。如果项集满足最小支持度,则称它为频繁项集(frequent itemset)。频繁k-项集的集合通常记作Lk。3.2购物篮分析先看看购物篮分析,这是一个引发关联规则挖掘的典型例子。例1 超市的经理想了解顾客的购物习惯。例如,想知道“哪些商品组合常常被顾客同时购买?”为回答这一问题,可以在超市的事务数据库上运行购物篮分析。分析结果可以帮助超市经理设计不同的商品布局。一种策略是:将经常一块购买

22、的商品放近一些,以便进一步刺激这些商品一起销售。例如,如果顾客购买牛奶也倾向于同时购买面包,那么将牛奶和面包摆放得近一点,可能有助于增加二者的销售。另一种策略是:将牛奶和面包分别放在超市的进、出口,可能诱发买这些商品的顾客一路挑选其他商品。例如,顾客在买了牛奶之后,去找面包,路上看到水果,可能会决定也买一些水果。购物篮分析也可以帮助超市规划什么商品降价出售。如果顾客趋向于同时购买数字彩电和DVD机,数字彩电降价出售可能既促使购买数字彩电,又促使购买DVD机。想象全域是超市中可利用的商品的集合,则每种商品有一个布尔变量,表示该商品的有无。每个篮子则可用一个布尔向量表示。可以分析布尔向量,得到反映

23、商品频繁关联或同时购买的购买模式。这些模式可以用关联规则的形式表示。例如,购买牛奶也趋向于同时购买面包可以用以下关联规则表示:牛奶面包 support= 2% ,confidence= 60% 规则的支持度和置信度是两个规则兴趣度度量,它们分别反映发现规则的有用性和确定性。上一条关联规则的支持度2%意味分析中的全部事务的 2%同时购买牛奶和面包。置信度60%意味购买牛奶的顾客60%也购买面包。如果关联规则满足最小支持度阈值和最小置信度阈值,则被认为是有趣的。这些阈值可以由用户或领域专家设定。3.3Apriori经典算法下面介绍形式最简单的关联规则挖掘方法。这种关联规则是单维、单层、布尔关联规则

24、,如前面讨论的购物篮分析。关联规则的挖掘分两步:1) 找出所有频繁项集:根据定义,这些项集出现的频繁性至少和预定义的最小支持计数一样。2) 由频繁项集产生强关联规则:根据定义,这些规则必须满足最小支持度和最小置信度。也可以使用附加的兴趣度度量。这两步中,第二步最容易。挖掘关联规则的总体性能由第一步决定。Apriori算法是一种最有影响的挖掘布尔关联规则频繁项集的算法。算法的名字基于频繁项集性质的先验知识,正如我们将看到的。Apriori使用逐层搜索的迭代方法,k-项集用于探索(k+1)-项集。首先,找出频繁1-项集的集合。该集合记作L1。L1用于找频繁2-项集的集合L2,而L2用于找L3,如此

25、下去,直到不能找到频繁 k-项集。找每个Lk需要一次数据库扫描。为提高频繁项集逐层产生的效率,一种称作Apriori性质的重要性质用于压缩搜索空间。我们先介绍该性质,然后用一个例子解释它的使用。Apriori性质:频繁项集的所有非空子集都必须也是频繁的。Apriori性质基于如下观察:根据定义,如果项集I不满足最小支持度阈值min_sup,则I不是频繁的,即P(I)min_sup。如果项A添加到I,则结果项集(即IA)不可能比I更频繁出现。因此,IA也不是频繁的,即P(IA)min_sup。该性质属于一种特殊的分类,称作反单调(anti-monotone),意指如果一个集合不能通过测试,则它的

26、所有超集也都不能通过相同的测试。称它为反单调,是因为在通不过测试的意义下,该性质是单调的。“如何将Apriori性质用于算法?”为理解这一点,我们必须看看如何用Lk找Lk-1。下面的两步过程由连接和剪枝组成。(1) 连接步:为找Lk ,通过Lk-1 与自己连接产生候选k-项集的集合。该候选项集的集合记作Ck。设l1和l2是Lk-1中的项集。记号lij表示li的第j项(例如,l1k- 2 表示l1的倒数第3项)。为方便计,假定事务或项集中的项按字典次序排序。执行连接Lk1Lk1 ,其中Lk1的元素是可连接的,如果它们前(k- 2 )个项相同。即是,L k1的元素l1和l2是可连接的,如果(l11

27、 = l21)(l12 =l2 2) . . . (l1k-2= l2k-2)(l1k-1 l2k-1 )。条件(l1k-1 l2k-1 )是简单地保证不产生重复。连接l1和l2产生的结果项集是l11 l22. l1k- 1 l2k- 1 。(2) 剪枝步:Ck是Lk的超集;即是,它的成员可以是也可以不是频繁的,但所有的频繁k-项集都包含在Ck中。扫描数据库,确定Ck中每个候选的计数,从而确定Lk(即根据定义,计数值不小于最小支持度计数的所有候选是频繁的,从而属于Lk)。然而,Ck可能很大,这样所涉及的计算量就很大。为压缩Ck,可以用以下办法使用 Apriori性质:任何非频繁的 (k-1)-

28、项集都不可能是频繁的,从而可以由Ck中删除。这种子集测试可以使用所有频繁项集的散列树快速完成。下面的Apriori算法是Agrawal R提出来的:算法1:Apriori使用根据候选生成的逐层迭代找出频繁项集。输入:事务数据库D;最小支持度阈值min_sup。输出:D中的频繁项集L。方法:1) L1= find_frequent_1-itemsets(D) ;2) for (k = 2; Lk-1 ; k+) 3) Ck= aproiri_gen(Lk-1 ,min_sup) ;4) for each transaction tD /scan D for counts5) Ct = subse

29、t(Ck , t); /get the subsets of t 6) for each candidate cCt7) c.count+;8) 9) Lk= cC | c.count min_sup10) 11) return L = kLk;procedure apriori_gen(Lk-1:frequent(k-1)-itemsets; min_sup:minimum support threshold)1) for each itemset l1Lk-12) for each itemset l2 Lk-13) if (l11=l21)(l12=l22). . .(l1k-2 =l2

30、k-2)(l1 k-1l2k-1) then 4) c = l1l2 ; /join step: generate candidates5) if has_infrequent_subset(c,Lk-1 ) then6) delete c; / prune step: remove unfruitful cadidate7) else add c to Ck ;8) 9) return Ck ;procedure has_infrequent_subset(c:candidate k-itemset; L :frequent (k- 1 )- itemset )/ use prior kno

31、wledge1) for each (k-1)-subset s of c2) if sLk-1then3) return TRUE ;4) return FALSE;如上所述,Apriori_gen做两个动作:连接和剪枝。在连接部分,Lk与Lk-1连接产生可能的候选(第1-4步)。剪枝部分(第5-7步)使用Apriori性质删除具有非频繁子集的候选。非频繁子集的测试在过程has_infrequent_subset中。一旦由数据库D中的事务找出频繁项集,由它们产生强关联规则是直接了当的(强关联规则满最小支持度和最小置信度)。对于置信度,可以用下式,其中条件概率用项集支持度计数表示。其中,sup

32、port_count(AB)是包含项集AB的事务数,support_count(A)是包含项集A的事务数。4需求分析和设计方案4.1需求分析由于事务数据库一般只具有对大量数据的存取、检索功能,对于用户的一般性的使用可以满足,然而,正是由于数据库中存放了大量的数据,不同的数据项,以及多个数据项之间还存在有大量的隐含的、未知的、有意义的数据关系,这些关系对于用户有着及其重要的作用,所以数据挖掘便在此情况下产生了。而关联规则挖掘是数据挖掘中一个重要规则,Apriori算法又是关联挖掘的一个经典算法,它能发现大量数据中项集之间有趣的关联和相关联系。随着大量数据不停地收集和存储,许多业界人士对于从他们的

33、数据库中挖掘关联规则越来越感兴趣。从大量商务事务记录中发现有趣的关联关系,可以帮助许多商务决策的制定,如分类设计、交叉购物和促销分析。4.2设计方案数据库建立位图矩阵参数设置数据挖掘功能Apriori关联算法关联规则图2 系统结构图通常在寻找频繁项集时要反复扫描整个事务数据库,读出每一条记录,判断记录是否包含候选项集,这样对于较大型的事务数据库,花在扫描数据库、读记录上的开销很大。同时,本文提出的关联规则是建立在置信度上的挖掘技术,与频繁项集无关,更是需要反复扫描事物数据库。于是本文引入了位图矩阵。先给方剂库建立一个位图矩阵,然后只在位图矩阵上进行挖掘操作。使用位图矩阵有如下好处:(1)对位图

34、进行操作,简单快速。(2)只需要在建立位图矩阵时对整个方剂库扫描一次。(3)在做实验时需要反复调整支持度阈值和置信度阈值,以得到多组实验数据,但位图矩阵只在做第一组实验时建立一次,调整支持度阈值和置信度阈值再做实验时,不用再建。用Ik(k为自然数)表示事务数据库中的一项,I1、I2、Ik、In表示事务数据库中的所有项。用Tj(i1,i2,ik,in)表示事务数据库中的一个事务,ik对应Ik,占用1位(bit),当事务Tj含有Ik这项时,Tj的ik位为1,否则为0,所以事务Tj可以用位图i1i2ikin来表示。T1、T2、Tj、Tm表示事务数据库中所有的事务,T1、T2、Tj、Tm都可以用位图i

35、1i2ikin来表示,这样所有这些位图就构成了事务数据库的位图矩阵。图2就是一个位图矩阵。该位图矩阵对应的事务数据库含I1、I2、I3、I4、I5共5个项,含T1、T2、T3、T4、T5、T6、T7共7个事务。事务T1的位图为11010,所以含I1、I2、I4三个项;事务T2的位图为01001,所以含I2、I5两个项;事务T3的位图为10110,所以含I1、I3、I4三个项;事务T4的位图为11101,所以含I1、I2、I3、I5四个项;事务T5的位图为10100,所以含I1、I3两个项;事务T6的位图为11001,所以含I1、I2、I5三个项;事务T7的位图为01010,所以含I2、I4两个

36、项。I1I2I3I4I5IT111010T201001T310110T411101T510100T611001T701010图3一个位图矩阵的例子5基于Apriori算法的关联规则挖掘系统基于上述技术,作者开发了Apriori算法的关联规则挖掘系统,整个系统在NetBeans下开发,下面依次介绍实现关联规则挖掘的步骤。在这之前,我们首先要介绍一下数据挖掘在中药方剂研究中的应用,因为本文所涉及的挖掘是关于中药方剂配伍进行的发掘。5.1数据挖掘在中药方剂研究中的应用数千年来,我国中药丰富的经验、浩瀚的文献,是世界上任何国家无可比拟的。而当今人类社会正大规模、高速度进入信息时代,信息已经成为社会发展

37、、进步和人类赖以生存的重要资源和基本需求。在这样的历史环境下,中药现代化的发展在很大程度上取决于中医药信息利用、转化和传播的能力及速度。实现中药现代化,就要将我国丰富的中药信息资源和现代最新信息技术相结合,整理浩如烟海的中药文献资料,实现中药信息资源处理、转化及传播现代化。而中药复方数据挖掘研究是将我国丰富的中药信息资源和现代最新信息技术相结合的重要内容。它是指在中医理论指导下,用知识发现技术对传统中药新药、中医组方理论及规律、中药作用机制、有效成分构效关系等多个方面进行全面、系统的研究。中药数据挖掘的研究与建立是一个多学科协作工程。它要求在中医理论指导下,完成由事实型数据库向智能型数据库的转

38、变。中药数据挖掘系统包括单味中药数据库、复方中药数据库、中医专家知识库等数据库,以及预处理、数据聚焦、模式提取、工具箱、模式评价、知识编辑等模块,该系统具有一般事实型及文献型数据库的功能,并具有利用上述数据库进行人工智能信息处理、获取新知识的功能。目前我国尚未建立中药数据挖掘系统,现有数据库只能提供检索。统计等一般性服务,其包涵的大量隐含知识并未得到充分的挖掘和利用。建立中药数据挖掘系统可以充分利用现有中药数据库中的大量数据,通过计算机智能信息处理,形成新的知识,为我国中药新药开发提供新的思路。由于国外使用数据挖掘技术较早,西药的新药开发研究也早已利用数据挖掘技术。随着世界性回归自然潮流的发展

39、,天然药物的开发越来越受到人们的重视,因此,如果我们自己不能利用数据挖掘技术充分挖掘我国现有中药数据库的潜能,就有可能被发达国家用较低的价格购买我们的数据库,加上他们的数据挖掘技术进行研制,然后高价返销国内,或利用这种具有数据挖掘系统的中药数据库进行新药开发,研制出我们尚未研制出的中药新药,从而造成我国中药信息资源廉价外流的局面。因此,中药复方数据挖掘研究不仅可以提高我国现有中药数据库的利用价值,缩短我国中药新药开发的周期,而且也可以避免中药信息资源的廉价流失。然而经过多年的努力,信息处理技术用于中医药研究领域,我国虽起步较晚,但发展十分迅速。数据挖掘技术已开始应用于中药研究,但当前我国中药复

40、方数据挖掘研究还存在一些问题:比如,由于对中药复方数据(传统方药数据和现代研究数据)没有进行科学管理,更缺乏系统分析的技术与方法,故信息利用的有效性和合理性较差。中药复方的基本数据(方名、药名、剂量、功用描述、主治症名,等)不规范、不标准,这对方药数据库结构和通用性产生了致命影响,高质量的数据处理不可能实现。现有中药复方的相关数据库几乎都是信息查询类型的,尚没有以中药复方为对象,数据规范、标准、结构合理、系统化程度较高的分析型中药复方数据库。中药复方数据的分析处理中传统数理统计方法仍占优势,人们开始讨论新技术方法的运用,但这又涉及到这些方法与中药复方数据特点及中医用药思路的匹配问题。5.2基于

41、Apriori算法的关联规则挖掘系统的实现5.2.1连接数据库本设计使用的后台数据库为SQL2000,用到的数据表为药物表和方剂表。连接数据库的代码如下:Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver);/建立JDBC-ODBC桥接器ConnectiondbConn=DriverManager.getConnection(dbURL,userName, userPwd); /连接到数据库,提供相应的用户名、密码Statement stmt= dbConn.createStatement(ResultSet.TYPE_SCRO

42、LL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); /用dbConn连接创建SQL语句对象5.2.2位图矩阵的建立位图矩阵的建立是在查询数据库中数据的基础上产生的。在查询数据库得到的位图矩阵中,行表示方剂,列表示此数据库中的药物,矩阵中的数据项由1和0表示,假如Ri,j = 1(R表示位图矩阵,i表示横坐标,j表示纵坐标),表示第i个方剂中含有第j位对应的药物。ResultSet rsName = stmt.executeQuery(queryName);i=0;while(rsName.next() if(i405) drugNamei = rsName.g

43、etString(药名); i+;ResultSet rsId = stmt.executeQuery(queryId);i=0;while(rsId.next() fangjiIdi+ = rsId.getString(方编号);/把方编号存入数组 for(int i = 0; i1060;i+) for(int j = 0 ;j405;j+) matrixij = 0; for(int i=0;i1060;i+) String queryName1 = select 药名 from 药物表 where 方编号=+fangjiIdi+ group by 药名 order by 药名; /找出

44、一种方剂的药物ResultSet rsName1 = stmt.executeQuery(queryName1);l=0;while(rsName1.next() /把每次查找出的一种方剂的一种药名存放在临时数组temp中. templ = rsName1.getString(药名);l+; for( int k=0;kl;k+) for( int j=0;j405;j+) if(tempk.equals(drugNamej) matrixij = 1; tempk=;rsName1.close();通过以上语句,能得到一个位图矩阵,每一行代表一种方剂,每一列代表一种药,一共有1060行,40

45、5列。当一种方剂中含有这种药物时,那么在这个位图矩阵的这位为1,否则为0。这样,就能建立起一个关于药物,方剂的位图矩阵。位图矩阵的构造完成,为以后的运算带来了不用反复查询事务数据库的繁琐,提高了算法的效率,增加了运算的速度。5.2.3频繁项集在寻找频繁项集时,根据Apriori算法的要求,需要依次找出频繁项集。在找频繁1项集时,我们只需要从每列从上往下相加来求的这种药物的支持度记数。所以它的方法与找频繁2,3项集有所不同。rivate NumberCount GetItem() /找出所有的一项集 NumberCount ItemNumerCount=new NumberCount405; for( int i=0;i405;i+)int count=0; for(int j=0;j1060;j+) if(matrixji=1) count+; /支持度记数 int CountArray = i; /将药物编号转为数组 ItemNumerCounti = new NumberCount(CountArray,count); /将药物编号和支持度记数存入ItemNumerCounti return ItemNumerCount; private Numbe

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 信息产业


经营许可证编号:宁ICP备18001539号-1