- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数组在apriori算法改进中的应用.doc
数组在apriori算法改进中的应用
摘 要 Apriori算法是经典的关联规则挖掘算法,该算法存在的一个缺陷就是多次扫描数据库需要大量的IO操作。文章提出了应用数组来减少Apriori算法的IO操作,从而提高Apriori算法的效率。
关键词 数组;Apriori;算法;数据库
中图分类号TP392 文献标识码A 文章编号 1674-6708(2013)93-0227-02
0引言
数据挖掘(Data Mining,简称 DM)就是从大量的、不完全的数据中,提取隐含在其中的有用信息的过程。数据挖掘的一个重要研究方向就是关联规则挖掘,其目的就是为了发现事务之间的关联关系,并利用发现的关联关系来指导人们工作。Apriori算法是关联规则挖掘中的一个经典算法,该算法是由R.Araw等人于1994年提出,并在超市销售活动的购物分析中得到充分应用。关联规则挖掘涉及到最小支持度和最小置信度两个度量标准,只有关联规则的支持度和置信度都分别大于等于最小支持度和最小置信度时,这样的关联规则才是人们感兴趣的关联规则,也称为强关联规则。关联规则挖掘分为两个步骤:首先,根据最小支持度标准查找事务数据库中的频繁项集,然后根据最小置信度由频繁项集生成强关联规则,其中的第一个步骤生成频繁项集是关联规则生成的关键步骤,影响关联规则的整体挖掘效率。Apriori算法就是为了发现关联规则挖掘中的频繁项集,因此,对aprior算法进行改进就可以促进关联规则挖掘效率的提高。
1 apriori算法
1.1 apriori算法基本思想
Apriori算法是通过逐层迭代的方法来产生频繁项集,首先扫描数据库,根据最小支持度生成1项频繁项集,然后由1项频繁项集与自身进行连接操作生成2项候选项集,再一次扫描事务数据库,根据最小支持度生成2项频繁项集,然后再由2项频繁项集与自身进行连接操作生成3项候选项集,再进行数据库扫描根据最小支持度来生成3项频繁项集,以此类推,直到生成的候选项集或频繁项集为空,则该算法结束。我们用下面的实例来演示apriori算法的执行过程(这里设置最小支持度为3)。
图1 Apriori算法生成频繁项集的实例图
首先,我们扫描事务数据库D,统计每个项出现的次数(如图1中的),然后将出现次数大于等于3的项挑选出来构成1项频繁项集(如图1中的),再由1项频繁项集与自身进行连接生成2项候选项集(如图1中的),扫描事务数据库统计2项候选项集出现的次数,将出现次数大于等于3的2项候选项集挑选出来构成2项频繁项集(如图1中),再由2项频繁项集与自身进行连接操作生成3项候选项集(如图1中),扫描数据库统计3项候选项集出现的次数,因为3项候选项集中没有出现次数大于等于3的项集,所以3项频繁项集为空,算法结束。
1.2 apriori算法性能分析
由算法的基本思想和实例演示过程可以看出,apriori算法在执行过程中有个明显的缺陷,就是每次迭代生成频繁项集时都需要扫描事务数据库,如果生成的频繁项集中包含10个项,就必须迭代10次,也就需要扫描数据库10次,迭代的次数越多,扫描数据库的次数也就越多,算法中的IO操作也就越多。因此,通过减少数据库扫描次数来减少apriori算法中的IO操作,从而可以提高apriori算法的效率。
2事务数据库结构与二维数组
事务数据库属于关系型数据库,关系型数据库是采用二维结构来存储数据,也就是说,事务数据库是采用二维结构来存储所有事务。事务数据库中的一行相当于一个元组,用来存储一个事务,元组中的每个分单元用来存储事务中的分项。二维数组也是一个二维结构,因此,二维数组与事务数据库在结构上非常相似。数组是建立在内部存储器上,而事务数据库是放置在外部存储器上,如果将事务数据库中的所有事务一次性全部写入到数组中,apriori算法每次迭代时只需要读取数组中的数据即可,这样,在apriori算法的整个执行过程中只需要扫描一次数据库,从而大量减少apriori算法执行过程中的IO操作。
3应用数组改进apriori算法
建立一个二维数组A[m][n+1],其中m为数据库中事务个数,n为事务数据库中所有事务不同分项的个数,然后扫描数据库,将数据库中所有事务数据写入到二维数组 A[m][n+1]中,这样,二维数组A中的每一行存储的是某一个事务,每一列存储的是某一个事务中的一个分项,当我们要确定某一候选项集是否为频繁项集时,只需要扫描二维数组A中与候选项集中分项对应的列就可以得到该候选项集的支持计数,根据该支持计数就可以确定候选项集是否为频繁项集。
3.1 压缩数组中的扫描元素
K项频繁项集中包含有K个分项,如果某个事务包含的分项个数小于K,
文档评论(0)