R-Apriori:基于Spark的基于有效Apriori的算法外文翻译资料
2022-11-27 14:36:30
英语原文共 8 页,剩余内容已隐藏,支付完成后下载完整资料
R-Apriori:基于Spark的基于有效Apriori的算法
摘要:关联规则挖掘仍然是从大型数据集中提取有意义的信息的非常流行和有效的方法。 它尝试在大型基于事务的数据集中查找项目之间的可能关联。为了创建这些关联,必须生成频繁的模式。“Apriori”算法及其一组改进的变体是最早提出的频繁模式生成算法之一,仍然是首选,因为它们易于实现和自然并行化。虽然Apriori存在许多高效的单机方法,但是现在大量数据量远远超出了单机的容量。 因此,需要跨多台机器进行扩展,以满足这种不断增长的需求数据。 MapReduce是分布式应用程序的流行容错框架。 然而,在每个MapReduce操作中的重磁盘I / O阻碍了在MapReduce平台上实施高效的迭代数据挖掘算法,例如Apriori。名为Spark的新建内存分布式数据流平台克服了MapReduce中的磁盘I / O瓶颈。因此,Spark为分布式Apriori提供了理想的平台。 然而,在Apriori的实现中,mos计算上昂贵的任务是生成具有用于单例频繁项目的所有可能对的候选集合,并且将每个对与每个事务记录进行比较。 在这里,我们提出了一种新的方法,通过消除候选生成步骤并避免昂贵的比较,大大降低了计算复杂度。我们进行深入的实验,以深入了解我们的方法的有效性,效率和可扩展性。 我们的研究表明,对于不同的数据集,我们的方法在Spark上胜过古典的Apriori和Spark的最新技术。
1.介绍
数据挖掘技术涵盖了广泛的技术,如聚类,分类和关联规则挖掘,从大型数据集中提取有意义的信息。 在本文中,我们关注关联规则挖掘,它以关联规则的形式在数据集中的变量之间产生有趣的关系。 为了创建这种关联规则,必须首先生成频繁的模式。 因此,频繁模式挖掘是任何关联规则挖掘过程的关键。
协会规则挖掘在各个领域都有许多应用。 历史上,它被用于市场篮子分析以寻找频繁出售的产品,这反过来允许公司制定更好的业务计划来安排和销售他们的产品。 我们用例子说明从关联规则挖掘中受益的广泛的应用程序。
- 犯罪检测/预防:对包含犯罪活动/事件的大型犯罪数据库进行频繁模式分析可以帮助预测一个城市最易发生犯罪的地区,或预测最有可能是重犯的犯罪分子[20,1]。
- 网络安全:大型网络日志文件中的频繁模式分析可以帮助识别最容易受到攻击的各种端口和IP地址[11]。 然后,该信息可用于阻止来自这些易受攻击的地址或端口的请求。
- 人群挖掘:从大量社会信息数据库中提取有用的模式可以更好地理解人群行为,从而提高货币收益的可能性[22,23]。
R. Agarwal等人提出的Apriori算法[18],基于观察,项目集是频繁的,只有所有的非空子集也是频繁的。它使用迭代方法,其中使用先前迭代的结果来查找当前迭代中的频繁项集。首先找到单例频繁项目,其中出现比用户指定的最小阈值(支持计数)更多次的项目被称为频繁项。然后使用基于Apriori方法的K-1频繁项集找到K个频繁项集。找到单例频繁项目后,生成候选集。第K次迭代的候选集具有所有可能子集在(K-1)次迭代中频繁的所有K个大小的组合。要查找Kfrequent项集,我们只检查所有可能子集存在于K-1频繁项集中的项集。现在这些Kth迭代的频繁项集用于生成K 1相位候选,并且迭代直到找到所有频繁模式。
Apriori算法的一个主要缺点是,如果项目数量大,并且整个数据集在每次迭代中被扫描多次,则第二阶段的候选集合太大。 Eacute;clat[16]解决了这个多次通过的这个问题
整个数据集使用水平方法。 在这种方法中,创建列表L,其中每行包含:1)项目i和2)包含项目i的相应交易列表。 通过计算第2列中包含项目i的交易数量,可以找到单例频繁项目。 在为第K次迭代创建候选集后,可以使用L中所有项目的第2列中的交易交集来查找项目集的支持。
这种方法消除了在每次迭代中对整个数据集进行多次扫描,与Apriori不同。 Eacute;clat进行数据集的单次传递,这使得它比Apriori快得多,但并不能解决第二阶段生成的项目太多的情况。 为了解决这个巨大的候选集问题,由J.Jhan等人提出了FPgrowth [8]算法。 在FP增长中,候选生成步骤被消除。
最初,找到单例频繁项集,并创建FP-Tree。 该FPTree用于查找各种尺寸的频繁图案。 该算法比Apriori快,因为它避免了候选生成步骤。上述算法在相对较小的数据集上以顺序的方式工作。随着数据集的大小增加,这些算法的效率下降。因此,为了处理大型数据集,引入并行算法。最初,实现了基于簇的并行算法[17]。这些基于簇的算法能够处理大型数据集,但它们是复杂的,并且具有诸如同步,数据复制等许多问题。因此,这些并行方法被MapReduce方法所取代。 MapReduce方法使关联规则挖掘过程非常快,因为像Apriori这样的算法可以实现更高的并行性。在Apriori算法的情况下,可以轻松生成键值对。已经提出了许多基于Mapreduce的Apriori算法的实现[13,12,7],与传统的Apriori相比,显示出高性能增益。 Hadoop [2]是将Apriori实现为Mapreduce模型的最佳平台之一。 Hadoop分布式文件系统(HDFS)用于存储数据集,然后扫描以查找频繁模式。之后,每个映射器从HDFS接收一个输入,并产生一个键值对,其中该项是密钥,该项的出现形成该值的有效负载。减号器组合一个键的不同值,以计算任何键的总计数。如果计数超过最小支持,则该项目被视为频繁,否则将从列表中删除。生成后,每次迭代重复该过滤过程候选人集。它使得发现频繁模式的过程高度平行和快速。然而,基于Hadoop的Apriori实现仍然存在一些限制。在Hadoop平台上,每次迭代和输入后,结果都存储到HDFS中来自HDFS进行下一次迭代,由于高I / O时间,降低了性能。但是Spark [15]是一个新的内存分布式数据流平台,通过使用RDD架构来解决这些问题,RDD架构在迭代结束时存储结果,并提供下一次迭代。火花平台上的Apriori实施在标准数据集上提供了更快的结果,这使Spark成为实施Apriori的最佳工具。最近,邱等人对于基于Spark RDD框架的另一种频繁项集挖掘(YAFIM)算法,[5]已经报告了各种基准平均几乎18倍的加速。他们的结果在现实世界观察到医疗数据比MapReduce框架快许多倍。我们认为YAFIM是目前最先进的Apriori实施。这些结果引发了我们的兴趣,了解Spark架构上的算法流程,并触发了我们消除了在算法的整个流程中似乎是耗时的步骤,即在YAFIM中进行不必要的计算的第二遍。
在本文中,我们提出了基于Spark RDD框架的并行Apriori算法的Reduced-Apriori(R-Apriori)。 此外,我们通过消除候选者生成来加快第二轮候选集的生成,以便与YAFIM(即,该状态)相比实现更高的加速。 该算法是第一作者PhD作品的一部分。 第一作者正在研究一个人群挖掘框架,分析大量的人群数据并预测人们的行为。 RAPriori用于Crowd Mining框架的第一阶段,用于分析大数据集,以提取有用的模式,可用于制定规则以显示Crowd行为。
本文的结构如下。 在第一节介绍了主题和动机之后,早期关于频繁项集挖掘的工作,主要是Apriori算法在第二节中报道。第三部分详细介绍了我们提出的R-Apriori算法。 第四节评估了R-Apriori的性能,并将其与YAFIM进行比较,我们将其视为最先进的解决方案。 第五节展示了R-Apriori算法在人群挖掘中的应用,第六部分总结了本文。
2早期工作
Apriori由R. Agarwal等[18]实施。两个算法Apriori和AprioriTid由R. Agarwal等人介绍发现交易数据集的所有重要关联规则。后来,做了许多改进,使Apriori更好,更高效,更快捷。宁丽等[17]提出了基于Mapreduce的Apriori的并行实现。他们使用lt;Key,Valuegt;对并行查找频繁项集,并评估并行Apriori算法的性能,并表明随着数据集大小的增加,他们的方法更有效率。 Zahra Farzanyar等[16]报道了一种基于Mapreduce框架的时间效率算法,称为IMRApriori,用于从大规模社交网络数据集中挖掘频繁项集,并表明与MRApriori算法相比,通过使用有效的修剪技术,它们的算法在执行时间方面实现了更好的性能。 Jian Guo等人的CMR-Apriori [9]是一种改进的Apriori算法,使用编码进行改进MapReduce的。他们将其应用于书籍推荐服务系统,发现CMR-Apriori算法胜过传统的Apriori。 Xin Yue Yang et al。[20]在Hadoop上使用云计算实现了Apriori,其中云层是底层云计算框架,可以轻松处理并发控制,网络通信和容错等问题。林明仁等[14]提出了基于Apriori并行实施的三种新方法,称为SPC,FPC和DPC,并进行了测试他们针对不同的集群和数据库大小。洪建秋等[5]在Spark平台上提供了基于Mapreduce的Apriori算法(YAFIM)实现,与Hadoop相比,在运行时显示出实质性的改进Apriori的实现。 YAFIM比所有基于Hadoop的算法快了许多倍,但是对于候选对的数量太多的第二阶段,它的效率并不高。
R-APRIORI算法介绍,Apriori是一种算法,它使用迭代方法在事务数据库中查找频繁项集,并从这些频繁项集中生成关联规则。这是基于一个观察结果,只有当所有非空子集都是频繁的时候,项目集才是频繁的。 Apriori的每个第k次迭代生成长度为k的频繁模式。第一次查找长度为1的所有频繁项。现在生成具有每个可能的非空子集频繁的长度为2的所有可能组合的候选集。在第二次迭代中,发现长度为2的所有频繁项集。现在这些长度为2的频繁项目集用于创建具有所有非空子集频繁的长度为3的所有可能组合的候选集。此过程重复,直到没有频繁的项目集。 R.Agarwal等人[17]的Apriori实现具有单个阶段,其中每次迭代最初从早期迭代的结果生成候选集,并扫描数据集以查找候选集中的项集的出现,并且产生出现超过用户指定的最小支持的项集作为频繁项集。在Hadoop上存在Apriori的MapReduce实现。 Hadoop通过提供并行存储和计算环境,使Apriori更具可扩展性和可靠性。
YAFIM(另一个频繁的项集挖掘)[5],这是一个在Spark上的Apriori实现,显着优于Apriori的Hadoop实现。 最初,来自HDFS的事务数据集被加载到Spark中的Spark RDD(弹性分布式数据集)中,这些是Spark中的基于内存的数据对象,以充分利用可用的集群内存。 它使用两个阶段:在第一阶段,它产生所有单例频繁项,并且在第二阶段,它迭代地使用k个频繁项集来生成(k 1)个频繁项集。
我们提出的R-Apriori是Spark上的并行Apriori实现。 它为YAFIM增加了一个阶段。 R-Apriori在处理工作流模型中有三个阶段。 我们对第二阶段的修改减少了Apriori中生成对的计算次数。寻找频繁的对是Apriori最时间和最耗时的步骤,通过我们的方法大大简化了。
在R-Apriori,第一阶段与YAFIM类似。 我们进一步将第二阶段划分为与YAFIM不同的二项目集生成,然后以与YAFIM相同的方式生成所有后续k项集。 下一节解释所有
R-Apriori的三个阶段详细。
3.1实施
3.1.1第一阶段
来自HDFS的事务数据集被加载到Spark RDD中,以充分利用集群内存,并为集群中的故障提供弹性。将输入文件广播到每个工作节点,使其可在本地向每个工作人员提供。随后,在数据集上应用一个flatMap()函数来读取事务,然后在每个事务上再次使用一个flatMap()函数来读取每个事务。在flatMap()进程完成后,map()函数将每个Item转换为(Item,1)键/值对。最后,调用reduceByKey()函数来计算每个项目的频率,并修剪频率小于最小支持计数的项目。剩余项目存储在Singleton频繁项目集中。图1(a)给出了在阶段I中用于计算单例频繁项目的算法。图1(b)给出了显示数据流动和I相各阶段控制的谱线图。图1(c)是映射器和还原器的输入和输出流的图形描述。
3.1.2第二阶段
在Spark的古典Apriori的第二次迭代中,候选集是从单例频繁项产生的。 该候选集存储在散列树中以使搜索更快。 每个映射器都需要一个事务,并为候选集中存在的该事务产生所有可能的对。 减速机组合所有出现的一对,如果其数量超过最小支持,则将其收益。 第二次迭代是Apriori算法由于其生成巨大候选集而耗时最多的迭代。
例如,对于103个频繁的单身人士,有近106个候选人。 为了检查这么多的候选人,每次交易是耗时的。
在R-Apriori中,我们通过以下方式提高了2nditify的性能:1)删除候选集生成步骤,2)使用bloom过滤器代替散列树。
在R-Apriori中,单例频繁项存储在一个bloom过滤器中,因为bloom过滤器比hash树更快,并且可以轻松地存储长度为1的项目。Mapper将每个事务处理并修剪,使其只包含存在于bloom过滤器中的项目 并为修剪的事务中的项产生所有可能的对。 减速器将每对作为键,并计算每对的总计数,并产生总数超过用户指定的最小支持的所有对。 如同预期的那样,映射器和还原器的输出与R-Apriori类似,就像在Spark上的古典Apriori一样。 然而
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[26040],资料为PDF文档或Word文档,PDF文档可免费转换为Word