文献综述(或调研报告):
频繁项集挖掘是一种流行的数据挖掘技术。 Apriori,Eclat和FP-Growth是频繁项集挖掘的最常见算法。随着数据集大小的增加,通过评估每种算法的可伸缩性,已经进行了相当多的研究来比较这三种算法之间的相对性能。与Apriori算法相比,Eclat和FP-Growth都可最大程度地增加最大交易量和频繁项集密度。[1]
Apriori,Eclat和FP-Growth算法有几种通常的实现[5],[6],[7]。
以往关于频繁项目集挖掘的大多数研究都集中在单个数据集上频繁项目集算法之间的性能差异[8]。还探讨了超参数(例如最小支持)对频繁项集挖掘算法性能的影响[9]。一些论文利用了UCI机器学习存储库中的通用数据集[10]。许多论文都使用了IBM Quest Synthetic Data Generator [11]或它的某些变体。还有一些论文利用了基于Python的生成器,该生成器基于IBM的工作[12].
研究现状
引入频繁项目集挖掘是一种在包含这些项目的篮子/交易的数据库中找到频繁项目分组的方法[13]。 该数据库由一系列类似于客户下订单的购物篮组成。 这些订单是由一些物品组成的单个篮子。 诸如亚马逊和其他在线零售商之类的公司,根据他们过去的购买历史以及其他具有类似购物篮的历史,利用频繁的商品集来建议消费者可能想要购买的其他商品[14]。
朴素算法仅生成所有可能的项目集,计算其支持量,然后丢弃某些项目集以下的所有项目集最低支持水平。常数S或sigma;通常表示支持阈值。在所有情况下,计算所有可能的项目集仅是O(N)量级的操作,其中N是数据库中的购物篮数量。但是,朴素算法在生成计数时还需要2i个存储单元来存储所有这些项目集,其中i是单个项目的数量。这些存储单元通常为32位或64位整数。这种内存需求意味着,除了数量很少的单个项目外,朴素的算法是不可能的。当使用64位整数保存计数时,理论上,具有128GB可用RAM的计算机只能计算34个项目。当认为N可能是零售商(如沃尔玛或亚马逊)要出售的不同商品的总数时,很明显,朴素方法在实践中没有用。[1]
Apriori基于其超集和子集之间的频繁项集的层次单调性。正如单调性所显示的那样,频繁项集的子集也必须是频繁的。同样,不频繁项目集的超集也必须不频繁[2]。这允许将Apriori算法实现为广度优先搜索。戈达尔的论文(2003)和其他人不能用big-O注释来代表Apriori的表现。[3]
Eclat由Zaki,Parthasarathy,Ogihara和Li在1997年提出[16]。Eclat的输入参数与Apriori略有不同,因为提供了前缀I。此前缀指定在调用Eclat所找到的任何项集中必须存在的前缀模式。此更改允许项目集的深度递归构建。对Eclat的初始调用使用{}的I值,这意味着不需要特定的前缀。最初的呼叫将找到所有单项频繁项集。然后,Apriori算法将递归调用自身,每次通过添加包含与调用函数一起使用的值I的项目集来增加I,但又长了一个项目。这个过程将一直持续到I的值增长到算法遍历所有长度的篮子的足够长度为止。像Apriori一样,Eclat通常不是用big-O表示的。但是,从这项研究的实验中获得的结果表明,项目集密度和篮子的频繁程度如何使这些算法可以用big-O计算成本来表示。有几种不同的方法可以在递归Eclat算法中存储支持值。最常见的方法是使用称为trie的结构。这是Borgelt(2012)用于实现本研究论文研究的Apriori,Eclat和FP-Growth版本的方法。[4]
Han,Pei和Yin在2000年引入了频繁的模式增长(FP-Growth),以完全放弃候选代[15]。FP-Growth算法通过使用Trie来存储实际的篮子来完成的,而不是像Apriori和Eclat那样存储候选人。 Aprori在很大程度上是一种水平广度的算法。 同样,Eclat是一种垂直的深度优先的算法。 FP-Growth的trie结构提供了数据的垂直视图。 但是,FP-Growth还会为每个具有高于阈值支持级别的支持的单个项目添加一个头表。此头表包含通过Trie连接每个相同类型节点的链表。 除了由trie提供的垂直视图之外,头表还为FP-Growth提供了数据的水平视图。 FP-Growth的算法与Eclat相似,因为它没有用big-O分析来表示。 由Goethals定义的FP-Growth表示为算法4。 [3]
以上是毕业论文文献综述,课题毕业论文、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。