关联规则挖掘的Apriori算法改进综述
- 格式:doc
- 大小:95.00 KB
- 文档页数:8
Apriori算法的改进及实例Apriori算法是数据挖掘中常用的一种频繁项集挖掘算法,它可以用来发现数据集中频繁出现的项集,从而为关联规则挖掘提供支持。
Apriori算法在处理大规模数据集时存在效率低下的问题。
对Apriori算法进行改进是一项重要的工作,本文将介绍一些Apriori算法的改进方法以及相关的实例应用。
一、改进方法1. 基于FP树的改进FP树(Frequent Pattern tree)是一种用于高效挖掘频繁项集的数据结构,它可以帮助减少遍历数据集的次数,从而提高挖掘效率。
基于FP树的改进主要包括两个步骤:首先构建FP树,然后通过挖掘FP树来发现频繁项集。
FP树的构建过程包括以下几个步骤:首先扫描数据集,统计每个项的支持度,并按支持度排序;然后根据排序后的项集构建FP树的头指针表和FP树;最后根据FP树和头指针表来挖掘频繁项集。
基于FP树的改进方法可以减少数据集的遍历次数,从而提高挖掘效率。
FP树的数据结构可以更快地发现频繁项集,从而进一步提高算法的效率。
2. 基于集合的预处理在进行频繁项集挖掘之前,可以先对数据集进行一些预处理操作,以减少数据集的规模。
预处理过程可以包括去除低支持度的项,合并相似的项,转换数据格式等操作。
通过预处理,可以减少不必要的计算,从而提高算法的效率。
针对大规模数据集的频繁项集挖掘问题,可以采用并行计算的方法来提高算法的效率。
通过并行计算,可以同时处理多个数据块,从而减少算法的运行时间。
二、实例应用下面我们将通过一个实例来演示Apriori算法的改进及其实际应用。
假设我们有一个交易数据集,其中包括多个交易记录,每条记录表示一次购买行为,包括多个商品。
我们的目标是挖掘出频繁出现的商品组合,以及它们之间的关联规则。
通过以上改进方法的应用,我们可以更高效地挖掘频繁项集,并发现商品之间的关联规则,从而为商家提供更准确的销售策略,为消费者提供更个性化的购物推荐。
Apriori算法是一种常用的频繁项集挖掘算法,但在处理大规模数据集时存在效率低下的问题。
Apriori算法的改进及实例Apriori算法是一种用于挖掘频繁项集的经典算法,它通过生成候选项集和剪枝的方式来减少搜索空间,从而高效地找到频繁项集。
随着数据规模的不断增大,Apriori算法的效率和性能也受到了挑战。
研究人员们提出了许多改进的方法,以提高Apriori算法的效率和性能。
本文将介绍一些Apriori算法的改进和实例。
1. Apriori算法改进之一:FP-growth算法FP-growth算法是一种基于树结构的频繁项集挖掘算法,它通过构建一棵FP树(频繁模式树)来表示数据集,从而避免了生成候选项集和多次扫描数据集的过程。
FP-growth算法的思想是先构建出数据集的FP树,然后利用FP树来挖掘频繁项集,从而避免了Apriori算法中生成候选项集的过程,大大提高了算法的效率。
下面是一个简单的FP-growth算法的实例:假设有如下的数据集:{1, 2, 3, 4},{1, 2, 4},{1, 2},{2, 3, 4},{2, 3},{3, 4},{2, 4}首先构建数据集的FP树:1) 第一次扫描数据集,统计每个项的支持度,得到频繁1项集{1, 2, 3, 4}和支持度{4, 7, 4, 6};2) 对频繁1项集根据支持度进行排序{4, 7, 6, 4},得到频繁1项集的顺序{3, 1, 4, 2};3) 第二次扫描数据集,创建FP树;4) 根据数据集创建FP树如下图所示:2/| \1 3 4| |4 4FP树的根节点是空集,根据第一次扫描数据集得到频繁1项集的顺序,依次插入树中。
接下来利用FP树来挖掘频繁项集:1) 首先从FP树的叶子节点开始,对于每一个项头表(item header table)中的项,按照条件模式基的方式来获取频繁项集;2) 对于每一个项头表中的项,从叶子节点到根节点回溯,得到条件模式基;3) 对于每一个条件模式基,利用条件FP树来获取频繁项集;4) 依次获取频繁项集{1, 2, 3, 4}、{2, 3, 4}、{2, 4}。
收稿日期:2010-05-17;修回日期:2010-07-17。
基金项目:教育部科学研究项目(09yj c870032);重庆市科技攻关计划项目(CSTC2008AC2126;CSTC2009AC2034);重庆市自然科学基金资助项目(CSTC2008BB2065);重庆理工大学科研青年基金资助项目(2010ZQ22)。
作者简介:崔贯勋(1978-),男,河南鄢陵人,实验师,硕士,主要研究方向:数据库; 李梁(1964-),男,重庆人,副教授,主要研究方向:软件工程; 王柯柯(1977-),女,四川南充人,讲师,硕士,主要研究方向:软件工程; 苟光磊(1980-),男,重庆人,实验师,硕士,主要研究方向:人工智能; 邹航(1979-),男,重庆人,实验师,硕士,主要研究方向:数据挖掘。
文章编号:1001-9081(2010)11-2952-04关联规则挖掘中Apri ori 算法的研究与改进崔贯勋,李 梁,王柯柯,苟光磊,邹 航(重庆理工大学计算机科学与工程学院,重庆400054)(cgxy @vi p .qq .co m )摘 要:经典的产生频繁项目集的Apr i o ri 算法存在多次扫描数据库可能产生大量候选及反复对候选项集和事务进行模式匹配的缺陷,导致了算法的效率较低。
为此,对A prior i 算法进行以下3方面的改进:改进由k 阶频繁项集生成k +1阶候选频繁项集时的连接和剪枝策略;改进对事务的处理方式,减少A pr i or i 算法中的模式匹配所需的时间开销;改进首次对数据库的处理方法,使得整个算法只扫描一次数据库,并由此提出了改进算法。
实验结果表明,改进算法在性能上得到了明显提高。
关键词:数据挖掘;关联规则;A pr i or i 算法;频繁项集;候选项集中图分类号:T P311.13 文献标志码:AR esearch and i m prove m ent on Apriori algorith m of associ ati on rule m i ni ngC U I Guan -xun ,L I L iang ,WANG Ke -ke ,GOU Guang -le,i ZOU H ang(S c h ool of C o mpu ter S cience and Eng i n e ering,Chongqing Un i v e rsit y of T ec hnolo gy,Ch ong qi ng 400054,Ch i na )Abstract :T he c lassic Apr i o ri algor it h m for discovering frequent ite m sets scans the database m any ti m es and the pa ttern m atch i ng bet w een cand i date ite m sets and transacti ons is used repea ted l y ,so a large nu m ber of candida te ite m sets w ere produced ,w hich results i n l ow e fficiency o f the a l gor ith m.The i m proved A prior i a l gor it hm i m proved it from t hree aspects :firstly ,the strategy o f the jo i n step and the prune step w as i m proved when cand i da te frequent (k +1)-i te m setsw ere generated from frequent k -ite m se ts ;second l y ,t he m ethod of dea li ng w it h transacti on w as i m proved to reduce the ti m e of pattern m atch i ng to be used i n the Apr i o ri a l gor it hm ;i n the end ,t he me t hod o f deali ng w ith da tabase w as i m proved ,wh ich lead to only once scann i ng o f t he da tabase dur i ng the w ho le course of the a l go rith m.A cco rding to these i m prove m ents ,an i m proved algor it h m was i ntroduced .The effic i ency of A pri o ri algor it h m got i m prove m ent both i n ti m e and i n space .T he experi m ental results o f the i m proved a l gor ith m show that t he i m proved a l go rith m is mo re e fficient than the orig i na.lK ey words :data m i ning ;asso ciati on ru le ;A priori a l go rith m;frequent ite m sets ;candida te i te m se t0 引言关联规则挖掘作为数据挖掘的重要研究内容之一,主要研究事务数据库、关系数据库和其他信息存储中的大量数据项之间隐藏的、有趣的规律。
Apriori算法的改进及实例
Apriori算法是一种数据挖掘中经典的关联规则挖掘方法。
它被广泛用于挖掘大量数据中的隐式关联,从而发现购物篮(market basket)分析中的频繁项集和关联规则。
随着数据处理能力和分析能力的不断提升,Apriori算法也不断出现改进版本,使其在实际的商业领域中有更好的应用和发挥。
1. 算法模型的改进
Apriori算法在计算复杂度方面有一定的缺陷。
若数据集是大量的,则计算费时会变得很长。
而如何加快Apriori算法的运算,也成为学习者所探讨的问题之一。
改进的Apriori算法通过层次划分处理数据,来加快其处理速度,从而增强其在实际应用中的可行性。
2. Apriori算法的改进实例
例如,若采用层次划分的Apriori算法来挖掘购物篮(market basket)分析中的频繁项集和关联规则,首先可以将数据集根据项数进行划分。
具体而言,若某个项集有n个项,则可以将其划分为n个子集,每个子集的项数均小于n。
然后,用Apriori算法计算每个子集中的支持度,再综合其结果,用Apriori算法得出最终的结果。
这样,可以大大提高Apriori算法的运算效率,从而加快关联规则的挖掘过程。
此外,其他对Apriori算法的改进还包括增加处理噪声数据等方法。
比如,人们可以使用深度学习和模式发现方法在做Apriori算法改进时,来处理杂讯和非结构型数据,以便找出更准确的频繁项集和关联规则。
如果能够成功地完成这项改进,将更加方便地挖掘大规模的市场数据,使得购买者与销售者之间的贴合度更加接近,以便更有效地挖掘出商业价值。
基于关联规则的Apriori改进算法的研究综述关联规则挖掘是数据挖掘领域中的重要研究方向,在商品推荐、市场营销等领域具有广泛应用。
Apriori算法是关联规则挖掘中最为经典的算法之一,具有易于实现和广泛适用的特点。
但是,Apriori算法在处理大规模数据时面临着计算复杂度高和存储空间大的问题。
近年来,对Apriori算法的改进成为了研究热点,主要包括以下几个方面的改进:1. 改进剪枝策略剪枝策略是Apriori算法中的重要环节,可以大幅度减少不必要的计算。
改进Apriori算法的研究中,常常着眼于改进剪枝策略。
例如,Fast Apriori算法提出了一种新的剪枝策略,它针对频繁项集中的非频繁子集,通过计算非频繁子集的支持度来剪枝。
该算法相比于传统的Apriori算法,能够减少剪枝次数,提高计算速度。
2. 优化候选项集生成Apriori算法中,每次必须生成所有的候选项集,这会导致计算复杂度高和存储空间大。
为了解决这个问题,一些研究者提出了优化候选项集生成的方法。
例如,Eclat算法通过利用垂直数据格式,能够避免反复地生成候选项集,从而减少计算量。
3. 基于分区的并行处理Apriori算法中的计算量非常大,尤其是在大规模数据处理时。
为了提高Apriori算法的计算效率,一些研究者提出了基于分区的并行处理方法。
该方法将数据进行分区处理,并利用多个处理节点并行地处理每个分区,从而大大提高了算法的计算效率。
4. 基于关键字压缩的存储优化Apriori算法在处理大规模数据时,需要占用大量存储空间。
为了优化存储,一些研究者提出了基于关键字压缩的存储优化方法。
该方法利用关键字编码压缩数据,从而大幅度减少算法的存储空间。
综上所述,Apriori算法的改进研究主要集中在剪枝策略、候选项集生成、并行处理和存储优化等方面。
这些改进方法在不同的数据挖掘场景下具有不同的适用性,可以根据具体情况选择最适合的算法。
基于关联规则的Apriori改进算法的研究综述摘要:关联规则是数据挖掘中常用的方法,而Apriori算法是其中的一个经典算法。
随着数据量的不断增大和数据维度的不断增加,传统的Apriori算法存在着效率低下和计算复杂度高的问题。
对Apriori算法的改进研究成为了数据挖掘领域的热点之一。
本文将对基于关联规则的Apriori改进算法进行综述,包括优先队列技术、剪枝技术、分布式Apriori算法等方面的研究进展进行了总结,并对未来的研究方向进行了展望。
关键词:关联规则;Apriori算法;改进算法;优先队列;剪枝技术;分布式算法二、Apriori算法及其问题Apriori算法是由Agrawal等人于1993年提出的一种用于挖掘关联规则的经典算法,它的主要思想是利用频繁项集的性质来挖掘关联规则。
Apriori算法的关键步骤包括频繁项集的发现和关联规则的生成,其中频繁项集的发现是通过逐层搜索的方式来实现的,而关联规则的生成则是通过频繁项集来计算支持度和置信度来实现的。
传统的Apriori算法存在着效率低下和计算复杂度高的问题,主要表现在以下几个方面:1. 大量的候选集生成:在Apriori算法中,由于需要逐层搜索频繁项集,因此需要产生大量的候选集来进行支持度计算,这导致了计算的复杂度变高;2. 大量的频繁项集:由于数据量的增加和维度的增加,导致了频繁项集的数量也呈指数级增长,这也对计算带来了巨大的挑战;3. 存储空间的消耗:频繁项集的存储对于大规模数据来说是一个巨大的挑战,因为频繁项集的数量庞大,存储空间的消耗也随之增加。
针对这些问题,对Apriori算法进行改进成为了研究的热点之一。
三、基于关联规则的Apriori改进算法为了解决传统Apriori算法存在的问题,研究者们提出了众多的改进算法,主要包括优先队列技术、剪枝技术、分布式算法等方面的研究。
1. 优先队列技术优先队列技术是一种高效的候选集生成方法,它的主要思想是通过维护一个按照支持度降序排列的队列来存储候选集,并在生成候选集时优先选择支持度较高的候选集。
Apriori算法的改进及实例Apriori算法是一种非常基础的频繁模式挖掘算法,它通过遍历数据集多次来发现数据集中的频繁项集,从而用于规则挖掘等数据分析任务。
然而,由于该算法在遍历数据集时需多次读取数据,其性能通常较低,特别是当数据集较大时。
因此,有必要对Apriori 算法进行改进,以提高算法的效率。
1. 基于剪枝的改进Apriori算法中最费时间的操作之一是在k-项集中查找k+1-项集的所有候选项,而有些候选项可能并不是频繁项集。
因此,可以通过剪枝来减少候选项集合的大小,从而提高算法的效率。
最常用的剪枝策略是Apriori原理。
该原理指出:如果一个项集是频繁的,那么它的所有子集也必须是频繁的。
因此,在构建k+1项集时,可以先对k项集进行剪枝,丢弃不符合Apriori原理的候选项。
例如,在构建3-项集时,可以通过先对2-项集进行剪枝,丢弃不含有频繁2-项集子集的候选3-项集。
由于Apriori算法需要多次遍历数据集,其处理大型数据集的效率相对较低。
为了解决这个问题,可以采用分布式计算的方法。
分布式计算是一种将计算任务分解成多个子任务,交由多个计算节点进行处理的方法,从而加速计算过程。
基于MapReduce的分布式计算框架是实现Apriori算法的有效方式。
该框架可将大型数据集分成多个块,交由多个计算节点并行地处理。
具体地,每个计算节点会首先对本地数据进行频繁项集的挖掘,然后将挖掘结果上传到总控节点。
总控节点会对所有挖掘结果进行汇总和整合,以生成全局频繁项集。
在Apriori算法中,每个项集的大小和每个项的取值范围都可能不同,因此项集的存储和操作会造成较大的开销。
为了减少开销,可以将项集转换为唯一的哈希值,用哈希表代替原始的项集列表进行存储和操作。
基于哈希表的改进可以大大缩小内存开销,从而提高算法的性能。
同时,哈希表的查找和插入操作均可在O(1)时间内完成,可进一步加速算法的运行速度。
举个例子,当处理一个包含数百万个顾客购买记录的数据集时,可以使用基于哈希的改进,将每个顾客购买记录转换为唯一的哈希值,并将哈希值存储在哈希表中。
关联规则挖掘的Apriori算法改进综述1引言数据挖掘是一种半自动地从大量的、不完全的、有噪声的、模糊的、随机的数据中,提取出隐含在其中潜在有用的信息和知识的过程。
数据挖掘从数据中提取人们感兴趣的可用信息和知识,并将提取出来的信息和知识表示成概念、规则、规律和模式。
数据挖掘,又称数据库中的知识发现(Knowledge Discovery in Database, KDD),指的是从大型数据库的数据仓库中提取人们感兴趣的知识,这些知识是隐含的、事先未知的潜在有用信息,换言之,数据挖掘是一个利用各种分析工具在海量数据中,发现模型和数据间关系的过程,这些模型和关系可以用来作出预测。
对于数据挖掘技术的研究已引起了国际人工智能和数据库等领域专家与学者的广泛关注,这其中在事务数据库中挖掘关联规则是数据挖掘领域中的一个非常重要的研究课题。
关联规则是美国IBM Almaden research center的Rabesh Agrawal等人于1993年首先提出的,最近几年在数据挖掘研究领域对关联规则挖掘的研究开展得比较积极和深入[1]。
关联规则挖掘是发现大量数据中项集之间有趣的关联或相关关系。
随着大量数据不停被地收集和存储,许多业界人士对于从数据库中挖掘关联规则越来越感兴趣。
2 Apriori算法2.1关联规则挖掘问题的形式化描述对于经常使用的数据,同一文件的不同版本之间的内容往往会有重复,因此数据冗余比较多,如果采用增量式压缩就可以大大节省磁盘空间。
但是这样的数据是压缩的,一旦用户需要查询/恢复数据就需要解压过程,因此这会使系统性能降低。
设I={i1,i2,…,im}是由m个不同的项目组成的集合,给定一个事务数据库D,其中的每一个事务T是I中一组项目的集合,即T⊆I,T有一个唯一的标识符TID。
若项集X⊆I 且X⊆T,则事务T包含项集X。
一条相联规则就是形如X⇒Y的蕴涵式,其中X⊆I,Y⊆I,x∩Y=Φ。
相联规则X⇒Y成立的条件是:(l)它具有支持度s,即事务数据库D中至少有s%的事务包含XY ∪;(2)它具有置信度c,即在事务数据库D中包含X的事务至少有c%同时也包含Y。
关联规则的挖掘问题就是在事务数据库 D 中找出具有用户给定的最小支持度minsup 和最小置信度minconf的关联规则。
2.2 Apriori算法简介1994 年,Rakesh AgrawalRama 和Krishnan Skrikant 首先提出了Apriori算法[2],它是一种最有影响的挖掘布尔关联规则频繁项集的算法。
Apriori 算法是一种最有影响的挖掘布尔关联规则频繁项集的算法,其核心是使用候选项集找频繁项集。
Apriori算法使用一种称作逐层搜索的迭代方法k-项集用于搜索以(k+l)-项集。
首先,找出频繁1-项集的集合,该集合记作L1,L1 用于找频繁2-项集的集合L2,L2 从用于找L3.如此下去,直到不能找到频繁项集。
3 Apriori算法的改进3.1 DDApriori算法[3]从Apriori算法可以看出, 对每一Ci均对数据库扫描一次,而这时有些事务已经对频繁项集的生成不产生作用, 减少数据库 D 内不起作用的事务对于算法来说是很有必要的,本算法的基本思想就基于此。
该算法是在每次计算Ci支持记数的过程中, 给不包含Ci中的任何项集的事务打上删除标记,在以后的扫描计数中不加考虑。
其实在Ci扫描过数据库后,与Ci中某一项集相同的事务t , 如果其支持记数小于Vmin sup, 这一事务对后面的频繁项集将不产生作用, 因此它也可以从数据库中删去。
本算法通过增加这一事实,得出的算法比[ 3]中算法更有效。
随着i 值的增大, 删除的事务也不断增大, 因而有效降低了候选项集的计数速度, 提高了整个算法的效率。
算法: DDApri ori使用根据候选生成的逐行迭代找出频繁项集输入: 事务数据库D; 最小支持记数阈值Vmin s up输出: D中的频繁项集L方法:10) L1= find frequent 1- itemsets( D) ; /20) for( i= 2; Li- 1≠∅; i + + ) {30) Ck= aproiri _gen( Li- 1, Vmin sup) ; //产生新的候选项集, 此函数同于Apriori算法中的函数40) for each transaction t∈D{ //扫描D并计数41) if t . delet e= 0 then do be gin50) Ct= subset( Ci , t) ; //获取t的子集作为候选51) if Ct= ∅then52) t . delet e= 1 //打上删除标志53) els e //对每一个Ct进行计数并记录内容54) if Ct= c then t . count + + , t . t ext= c60) for each candi date c ∈Ct .70) c. count + + ;71) end80) }81) if 0< t. count and t. text . count< Vmin_sup then82) t . delete= 1 //去掉已无作用的事务t90) Li= { c∈Ci | c. c ount≥Vmin_sup} // 得到满足条件的Li100) }110) return L= ∪iLi ;下面举例说明。
设最小支持记数为2。
支持度计数简记为Sup。
图示如下:L1C2 database L2从图中可以看出, 在C2 扫描数据库时, 数据库中的事务T200, T400, T500, T700 在C2 中, 且它的支持记数小于2, 因此在C3 扫描时, 数据库 D 已经不再考虑它们,数据库已经有了很大的缩小,这对于大型数据来说是很有用处的。
3.2基于矩阵的MApriori算法本算法的基本思想为, 对数据库给出一个矩阵表示。
具体方法为: 对每一成员按一序排列,事务集也按一序列进行排列。
成员分别表示行向量, 事务表示列向量,若第i 个成员在第j 个事务中,则矩阵的第i 行, 第j 列的值为1,否则为0, 称其为数据库的布尔矩阵。
上面的数据库可以用矩阵表示如下:此矩阵的行向量之和为成员出现的次数, 则一项集的支持记数可求出。
对于二项集{ Ii , Ij }只需扫描第i 行与第j 行即可,他们同一列的值均为1 的个数, 即为二项集{ Ii , I j }的支持Item set{ I1 I2}{ I1 I3}{ I1 I4}{ I1 I5}{ I2 I3}{ I2 I4}{ I2 I5}{ I3 I4}{ I3 I5}{ I4 I5}TID itemT100 I1 I2 I5T200 I1 I4T300 I3 I5T400 I2 I4T500 I3 I4T600 I2 I3T700 I4 I5T800 I1 I2 I3 I5T900 I1 I2 I3Item set Sup{ I1 I2} 3{ I1 I3} 2{ I1 I5} 2{ I2 I3} 3{ I2 I5} 2{ I3 I5} 2Item set{ I1 I2 I3}{ I1 I2 I5}{ I2 I3 I5}TID itemT100 I1 I2 I5T300 I3 I5T600 I2 I3T800 I1 I2 I3I5T900 I1 I2 I3Item set Sup{ I1 I2 I3} 2{ I1 I2 I5} 2记数,依此类推。
只需扫描矩阵的第i1 , i2 , , ik 行,他们同一列的值均为1 的个数即为k 项集{ Ii 1 , I i 2 , , I ik }的支持记数。
可以看出, Ci扫描数据库时只扫描一部分, 而不是Apriori 算法要扫描全部数据库, 这样算法效率就高。
此算法中Ci 的求法与Apriori算法一样,算法描述如下:算法:MApri ori使用根据候选生成的逐行迭代找出频繁项集。
输入: 事务数据库D的布尔矩阵M; 最小支持记数阈值Vmin_sup.输出: D中的频繁项集L方法:10) L1 = find_frequent 1- it emsets( D) ;20) for( i= 2;Li- 1≠∅; i ++ ) {30) Ci= aproiri_gen(Li- 1 ,Vmin_sup) ; //产生新的候选项集40) for each transaction c ∉Ci{ //扫描矩阵M 并计数50) for ( j= 1; j ≤M_列数; j ++ )if M [ c_1] [ j] = 1 and M [ c_2] [ j] = 1 and. . . and M [ c_i] [ j] = 1 then70) c. c ount + + ;80) }90) Li= { c∈Ci | c. count≥Vmin_sup} ; 得到满足条件的Li100) }110) return L=∪iLi;作为理解, 取上一例子作以简单说明。
由布尔矩阵的各行和可以得出一项集的支持记数,从而求出L1 , 进而得出C2。
对C2 中的每一项集扫描数据库的布尔矩阵, 并且记数。
比如对二项集{ I 1 , I 2 } ,只需扫描第一行与第二行, 每一列同为1 的记数,得出它的支持记数为3。
依次取遍C2 , 支持记数大于或者等于Vmin_sup 的项集生成L2 , 由L 2 生成C3 ,在对C3 中的每三项集扫描布尔矩阵, 这时要扫描3 行。
依此类推,直到算法终止。
3.3 基于数组的改进方法[4]与Apr i or i算法有关的变种有很多,这些变体通常针对如下三个目标中的一个或者多个: ①最小化扫描数据的次数;②最小化必须分析的候选项集; ③最小化计算每个候选集频率所需的时间。
文献[5]提出了一种基于内存数组的算法, 该算法只扫描一次数据库,建立数据库的镜像内存数组,将对数据库的扫描转化为对内存数组的扫描, 由于内存的寻址和读写速度都远远大于磁盘的寻址和读写速度, 所以该算法大大提高了Apriori算的运行速度。
算法如下:输入: Database D; Minimum support thres hold min_sup输出: L , frequent item sets in D方法:L1 = Find Large Item 1( D, A[ n] [m ], min_sup) ;L2 = Find Large Item 2( L1, A[ n] [m ] , min_sup );L≠∅; k+ + ) do beginf or( k= 3 ;1-kL) ;Ck = Apriori_gen (1-kf or( i= 1 ; i< = n; i++ ) do beginC i= CandDb _gen ( Lk- 1, A [ n] [ m ], m i n_sup) ;for all candidate c∈Ci c . count+ + ;endLk = { c∈Ck | c . coun t≥min_ sup}endL = ∪kLk算法分析如下:( 1) 函数F i ndLarge Ite m1(D, A [ n] [m ], min_sup)是先扫描数据库D,对每一个事务分解成单个项目存放在二维数组A [ n ][ m ]中( n是事务个数, m 是每个事务项目数), 同时对各个项目进行统计, 找出频繁1- 项集。