挖掘关联规则的快速算法(apriori算法-外文翻译)(共22页).doc





《挖掘关联规则的快速算法(apriori算法-外文翻译)(共22页).doc》由会员分享,可在线阅读,更多相关《挖掘关联规则的快速算法(apriori算法-外文翻译)(共22页).doc(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上挖掘关联规则的快速算法 (英)Rakesh Agrawal Ramakrishnan Srikant威斯康辛大学,计算机系,麦迪逊全部或部分材料允许被免费拷贝,这些拷贝不是为直接的商业优势而制作的,VLDB的拷贝权是由VLDBE授予的. 另外,拷贝或重新出版还需要金额和VLDBE的允许.第20届极大数据库程序会议 智利 圣地亚哥 ,1994IBM阿尔马丁研究中心圣塔克莱拉市650亨利道 95120证摘要:针对找出销售交易中大量数据库里项目之间的关联规则问题,我们提出两种与已知算法完全不同的新的算法来解决此问题. 观察数据表明:这两种算法在从小问题的三个到大问题的多个度
2、量的因子上都优于先前的算法. 根据这两种算法的特点,我们还指出如何将它们合并才是一个最佳的混合算法,称为AprioriHybrid算法. 按比例增大实验证明AprioriHybrid算法是随着交易数量按线性比例递增的,且它在交易大小和数据库中的项目上也有良好的递推性.1 引言条形码技术的广泛应用使得零售商在收集和存储大量商品的价格数据时十分方便,简称为货篮数据. 一条这样的数据记录通常都包括某个顾客的交易日期,交易中所购的物品项目. 成功的组织者视这种数据库为贸易市场基础结构的重要组成部分. 他们专注于研究用数据库技术来推动市场信息化过程,这样市场经营者就可以有能力发展及实施为顾客制定购买产品
3、的方案和策略6.有关在货篮数据上挖掘关联规则的问题在4中已作介绍. 举个例子:可能有98%的顾客在购买轮胎和汽车配件的同时接受了有关汽车的服务. 找出所有这样的规则对于促进市场营销和提高顾客购买力是非常有价值的. 另外还有价目表设计,商品上架设计,进货安排,根据购买行为模式对顾客进行分类. 但这些应用中的数据库都是极其庞大的,因此,寻找一种快速的算法来完成此项任务是我们的当务之急.以下是关于这个问题4的一个表述:令=是个不同项目的集合,给定一个事务数据库,其中每一个事务是中一些项目的集合,且都与一个唯一的标识符相联. 如果对于中的一个子集,有,我们就说事务包含. 关联规则是形如的蕴含式,其中,
4、且=. 如果事务数据库中有%的事务包含的同时也包含,则称关联规则的置信度为%. 如果事务数据库中,有%的事务包含了,则称关联规则具有支持度%. 这个规则在我们讨论多项集的问题时比4中的阐述要简单很多.给定一个事务集,挖掘关联规则的问题就是产生支持度和置信度分别大于用户给定的最小支持度和最小置信度的关联规则. 我们对事务集的内容属性方面不加以讨论,比如说,可以是一份数据文件,也可以是一张关系表,或者是一个关联表达式的结果.找出所有关联规则中的算法,我们称文章4提出的为AIS算法,文章13提出的为SETM算法. 在本文中,我们介绍两种新的算法:Apriori和AprioriTid算法,基本上与先前
5、的算法不同. 我们将用实验结果证明这两种算法优于先前算法. 它们之间的差距主要体现在问题大小的增大及问题范围从小问题的三个到大问题的多个度量的因子上变化. 接着我们讨论由Apriori和AprioriTid算法合并而成的混合算法(AprioriHybrid算法)是如何的优异. 实验证明AprioriHybrid算法具有良好的递推性能,开启了挖掘关联规则在数据库中应用的可行性.找出关联规则属于数据库挖掘范畴3,12,也称为数据库中的知识发现21. 类似地,但不直接可应用的工作还包括分类规则的介绍8,11,22,因果关联规则的发现19,学习逻辑定义18,函数的数据拟合15以及簇9,10. 非公开性
6、的有关机器学习文献的作品是在20中的KID3算法. 如果应用在查找所有关联规则问题上,这个算法在与假定关联项的数目一样多的数据上进行运算时,运算量非常大. 最近在数据库上的研究工作是由数据出发来定义关联函数16. 函数关联规则需要十分严格的条件. 因此,定义一种函数规则为后,在16中描述的算法若从规则来考虑,就无法推出. 我们考虑的这些关联规则要符合实际性质. 规则的存在并不意味着也成立,因为后者可能不具备最小支持度. 同样的,规则和的存在也不意味着成立,因为后者可能也不具备最小置信度.曾有一个关于测定“有用性”或“有趣性”规则的实验20. 无论是有用的还是有趣的,通常都是依赖于运用的. 它需
7、要圈内人员去提供材料,让所有人知道规则的发现过程以及让规则清晰明了,如7,14. 在本文中,对这些观点我们不加以讨论,除了指出它们在规则发现体系中的必要特征,可以利用我们的算法作为发现过程中的引擎.1.1 问题剖析和论文概要找出所有关联规则的问题可分解为以下两个小问题:1. 找出事务中所有满足用户指定最小支持度的项集,每个项集的支持度就是包含项集的事务数. 具有最小支持度的项集称为频繁项集,否则称为非频繁项集. 在第二章,我们给出新的算法:Apriori和AprioriTid算法来解决这个问题.2. 利用频繁项集来产生所需要的规则,这里有一种直接的算法. 对于每个频繁项集,找出中所有非空子集,
8、如果就生成关联规则(-). 我们需要考虑所有的子集产生的多种规则的结果. 由于篇幅关系,这里对此问题不做深入探讨,但读者可通过阅读5来获取一种快速算法.第三章,我们就提出的Apriori和AprioriTid算法与AIS算法4和SETM算法13作出比较. 为了使论文更完善,在这个章节中还对AIS和SETM算法做了简要介绍. 同时我们还阐述了Apriori和AprioriTid算法如何合并形成AprioriHybrid算法,并且演示了这种算法的递推性. 在第四章,我们总结指出许多相关联的开放性问题.2 产生频繁项集产生频繁项集需要在数据上作多步运算. 第一步,需要计算出每个项目的支持度,从而确定
9、哪些是频繁的,换言之,就是具有最小支持度. 在后续的步骤中,都以前一步生成的频繁项集为基础,产生新的候选项集,即潜在的频繁项集,再扫描数据库计算候选项集的支持度,最后确定哪个些候选项集能真正成为频繁项集. 重复上述过程,直到没有新的频繁项集产生为止.Apriori和AprioriTid算法与AIS算法4和SETM算法13完全不同之处就在于候选项集的产生方面,前者一步到位而后者在数据扫描时临时产生. 在AIS和SETM算法中,扫描一个数据时候选项集呈飞过式产生. 特别地,浏览一个事务之后,事务中哪一个是前一步生成的频繁项集是确定的. 新的候选项集是将事务中原有的项扩展到这些频繁项集中产生的. 然
10、而,就我们看来,明显的缺陷就是这个结果不一定会产生,而且对候选项集计算的次数太多导致效率低下.而Apriori和AprioriTid算法只需通过先前事务中前一步找出的频繁项集来产生候选项集,而无需考虑数据库中所有事务. 其基本的思想是任何频繁项集的子集也一定是频繁项集. 因此,就可以通过链接频繁(-1)-项集,删除其中含有非频繁子集的项集来产生候选-项集. 这个过程使得更少的候选项集产生.此外,AprioriTid算法还有自己的特点,数据库仅在第一次统计候选项集的支持度时被扫描一次. 更确切地说,把前一步中得到的候选项集的代码用到这个项目中,在接下来的步骤中,代码的大小会变得比数据库小,因此,
11、节省了很多扫描过程. 在描述此算法时我们会对细节的关键点作出具体解释.符号表示 假设每个事务中项目都按字典序排列,那么就可以直接采用这些算法来保持数据库中的运算正常化,且数据库中每条记录显示为,其中是事务的标志符.我们把一个项集中所含项的个数称为项集的长度,长度为的项集称为-项集. 项集中各项按字典序排列,我们用符号12表示一个-项集,其中包含项目1,2,,且12. 如果,且为-项集,则为的-项扩展集. 关联每个项集的是一个用来储存这个项集支持度的计算领域,其初始值为0.对算法中使用的符号,我们在表1中作了总结. 集合在AprioriTid算法中会应用到,我们在描述这个算法时再对它作进一步的探
12、讨.表1:符号-项集含有个项的项集频繁-项集(具有最小支持度)集合中的每个元素含有两个计算域:i)项集的计算;ii)支持度的计算候选-项集(潜在的频繁项集)集合中的每个元素含有两个计算域:i)项集的计算;ii)支持度的计算当生成的事务与候选集保持关联时的候选-项集2.1 Apriori算法图1给出了Apriori算法的详细过程. 算法的第一步就是简单地计算出决定生成频繁1-项集的项目. 接下来直到第步,可分成两个阶段:首先,在第-1步中产生频繁项集,通过调用Apriori-gen函数产生候选项集;其次,对数据库进行扫描并计算候选项集的支持度. 为了使计算更快速,我们需要确定候选项集包含于给定的
13、事务中. 2.1.2章节描述的Subset函数就运用于这个目的. 参考5中讨论的缓冲管理.1)large 1-itemsets;2) for (2; ;) do begin3) apriori-gen();/新的候选项集4) forall transactions do begin 5) subset(,);/所有包含的候选项集6) forall candidates do7) .count;8) end9) .countminsup10) end11)Answer图1:Apriori算法2.1.1 Apriori候选集的产生求得所有频繁(-1)-项集是通过函数Apriori-gen实现的,该
14、函数返回的是所有频繁-项集的超集,其计算过程如下:第一步,链接,把与自己链接:insert into select ,from , Where =, =, ;第二步,剪枝,如果项集但中的(-1)-项子集不属于,则:forall itemsets do forall (-1)-subsets of do if () then delete from ;举例:令=1 2 3,1 2 4,1 3 4,1 3 5,2 3 4. 通过链接步, =1 2 3 4,1 3 4 5,剪枝步会删除1 3 4 5,因为1 4 5不属于,所以最后=1 2 3 4.把这里产生候选集的方法与AIS和SETM算法的相比较
15、,方法的第步都是扫描数据库,从而确定中的哪个频繁项集当前属于. 这里的每个频繁项集是由中原有频繁的项一起扩展而成的,且这些项目在按字典序排列后会排在中原有的项目之后. 继续上面的例子,考虑事务1 2 3 4 5,第四步,AIS和SETM算法会通过扩展频繁项集1 2 3来产生两个候选集1 2 3 4,1 2 3 5. 类似地,另外的三个候选项集会通过扩展中的其他频繁项集来生成,导致第四步需要考虑5个候选项集. 另一方面,Apriori算法只产生并计算一个项集1 3 4 5,因为它包括一个Apriori,其余合并的项集不可能具有最小支持度.验证:我们需要证明. 显然,任意频繁项集的子集都具有最小支
16、持度,因此,如果把所有可能的项目扩展到中的每个项集内,删除其中(-1)-子集不属于的项集,就得到中项集的超集.链接等同于用数据库中的每个项扩展,再删除那些第(-1)项不属于的项集,得到(-1)-项集. 条件明确不产生重复项. 因此,在链接步后就有.同理,虽然删除所有(-1)-项子集不属于的项集,但不会删除内的任何项集.变形:在同一步中计算多种长度的候选集 在第步不仅能计算长度为的候选集,还能计算由产生的候选集等,这里由产生且. 当计算和保存额外的候选集到存储器上所花的时间比扫描数据库少时,这个变形就可在后续步骤中得到应用.2.1.2 Subset 函数候选项集存储于hash-树中,hash-树
17、的一个结点包含的不是一列项集(叶子结点)就是一个hash-表(内部结点). 在内部结点中,hash-表的每个桶指向另一个结点. 规定hash-树树根的深度为1,深度为的内部结点指向深度为的结点,项集都存储在叶子结点中,当存储一个项集时,我们从树根出发,沿着树直到叶子. 在深度为的内部结点处确定沿着哪条树枝以运用hash-函数到达项集的第项. 所有的结点最初都是由叶子结点生成的,当叶子结点上项集的数目超出一个特定的范围时,叶子结点就转化为内部结点.从根结点出发,运用Subset函数找出事务中所有的候选集. 如果在一个叶子结点中找到属于的项集,那么对他们在问题集中添加附注;如果通过对项进行hash
18、后到达一个内部结点,那么对中之后的所有项进行hash,并用这个程序对桶内相对应的结点进行递归;此外,对于根结点中每个属于的项都要进行hash.究竟为什么Subset函数会返回附注的所需集合呢,这里就要考虑根结点发生了什么变化. 对于事务中的任意项集,中的第一个项目肯定属于,在根部,通过对中的每个项目进行hash后,确定不是以中的项目为开始的项集. 同样对深度较低的结点运用这个结论,唯一附加的因素是,只要每个项集中的项目都按字典序排列着,如果仅对项进行hash后就到达当前的结点,那么只需考虑中排在之后的项.2.2 AprioriTid 算法AprioriTid算法的过程如图2所示,同样在计算过程
19、之前运用apriori-gen函数(2.1.1章节已给出)确定候选项集. 这个算法有意思的地方就是数据在第一步被扫描之后就不必再去计算它的支持度,而是被集合所取代. 集合中的每个元素都以形式存在,代表事务中潜在的频繁-项集,用表示整个集合. 当=1时,对应数据库,虽然概念上是每个项目被项集所取代;当1时,由算法(第10步)产生,其中的元素与事务相对应,表示为. 如果一个事务不包含候选-项集,则不会含有这个事务的入口记录. 因此,中入口记录的数目可能会少于数据库中事务的数目,尤其对于数值较大的. 另外,对于数值较大的,每条入口记录可能会比相对应的事务要小,因为可能只有少数候选集属于事务. 然而对
20、于数值较小的,每条入口记录可能会比相对应的事务要大,因为中的一条入口记录包括事务中所有的候选-项集.在2.2.1章节,我们给出了数据结构用来运行这个算法. 参考5可得这个验证的证明过程以及对商业中缓冲管理的讨论.1) large 1-itemsets;2) database ;3) for (2; +) do begin4) apriori-gen();/新的候选项集5) ;6) forall entries do begin7) /确定中的候选项集 /在事务中定义 set-of-itemsetsset-of-itemsets;8) forall candidates do9) .coumt;
21、10) if then 11) end12) countminsup13) end14) Answer图2:AprioriTid算法举例:考虑图3所示的数据库,假设事务的最小支持度为2,在第4步时对运用apriori-gen函数得到候选项集,从第6步到第10步,通过扫描的入口记录来计算中候选集的支持度并产生. 中的第一条入口记录是134,与事务100相对应. 第7步中对应中的入口记录为1 3,因为1 3是的一个元素,且1 3-1与1 3-3都是set_of_itemsets中的元素.对运用apriori-gen函数得到,对与作进一步计算得到,发现中缺少事务100和400的两条入口记录,因为他们
22、不包含中的任何项集. 于是中的候选项集2 3 5就证明是最大的,且是唯一的元素. 当用生成时,结果为空,那么计算结束.2.2.1 数据结构我们给每个候选项集分配一个唯一的号码,称为. 每个候选项集都按队列保存,则指针可通过来查找项集. 中的每个元素都以形式存在且每个都存储在连续的结构中.通过链接两个频繁(-1)-项集并运用Apriori-gen函数来产生一个候选-项集,我们为每个候选项集设定两个附加域:i)初始域;ii)扩展域. 初始域存储着产生的两个频繁(-1)-项集的,而扩展域存储着所有由的扩展而成的(+1)-项候选集的. 因此,如果候选集是由和产生的,那么初始域中存储着和的,同时,把的添
23、加到的扩展域中.图3:举例现在我们来描述图2中的第7步在上述数据结构中是如何运用的. 调回中入口记录对应的set_of_itemsets域,给所有属于事务的(-1)-候选集,记这种候选集的扩展域为,所有候选-项集的集合构成扩展集,对每个中的,初始域给出产生的两个项集的. 如果这些项集目前有set_of_itemsets的入口记录,那么可以总结出在事务中,且把加入中.3 运行为了评估这个方法在产生频繁项集时的有关运行情况,我们在IBM RS/6000 530H工作站作了几个关于测试CPU在33MHZ,64MB的存储器和AIX3.2的操作系统下运行效率的实验. 数据存于AIX文档程序中,并保存在“
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 挖掘 关联 规则 快速 算法 apriori 外文 翻译 22

限制150内