基于Mapreduce的关联规则挖掘(1)

一、调研传统经典的关联规则挖掘算法,并对其进行综述。

关联规则挖掘再国内得到了充分的研究:自1993年R.A grawal等人提出关联规则挖掘问题以后,众多研究学者又相继提出了较有代表性的Apriori算法,CD(Count Distribution)算法,采用Hash技术的DHP算法、PDM(Parallel Data Mining)算法、Sampling抽样算法、动态项集计数算法DIC、FP-Growth算法、FUP(Fast Update)算法、OpportuneProject算法以及基于云模型的关联规则算法等。关联规则挖掘算法中,关联规则挖掘的经典算法主要包括Apriori、FP-Growth算法及Eclat算法,这三种算法至今仍是关联规则挖掘的基础性算法。

Apriori算法

Apriori 算法的主要思想是通过迭代的方法产生频繁项集。如今的大部分关联规则算法都是经典算法Apriori 的演绎和改进,在每次迭代过程中.主要有如下关健步骤:产生候选集,计算支持度,根据最小支持度阈值筛选出频繁项集。在迭代产生候选集的过程中会出现大量的冗余,包含所有满足最小支持度阈值及不满足的记录。候选集产生后,再次扫描数据库,以求得候选集中各子项的支持度。最后,所有支持度大于最小支持度阈值的项集.我们称之为频繁项集。

Apriori 算法的主要进程如下:
Apriori 首先通过遍历一次 D,对所有的项 C1 进行计数, 找到频繁 1-项集的集合 L1;然后通过将 L1 中的项进行连接得 到候选频繁 2-项集 C2;再次遍历一次 D,对 C2 中的所有 2-项 集进行计数,根据每个 2-项集的计数将不频繁的项集删去,得 到频繁 2-项集 L2。算法迭代运行,通过将 Lk中的项集进行连 接得到 Ck+1,运用先验性质将 Ck+1中不满足先验属性的项集 进行剪枝(即 Ck+1中每个项集的所有 k-子项集必须在 Lk中,否 则将该项集从 Ck+1中删除),遍历一次 D得到 Ck+1中项集的支 持度,将不频繁的项集删去,得到 Lk+1。迭代运行,直到不能得 到 Lk+1为止。具体流程如图 2所示。Apriori算法设计思想简 单且易于实现,但存在两个明显的缺点:a)需要多次遍历事务 数据库 D,会造成巨大的 I/O开销;b)会产生大量的中间候选 项集 Ck。假设|Lk-1|=n,则生成的|Ck|最多可能为 2n-1个。 当数据量很大时,上述两个缺点会变得无法容忍。
在这里插入图片描述

FP-growth算法

FP-growth算法常用在大型数据库中挖掘频繁项集。FP-growth算法是一种基于FP树并采用自下向上方式发现频繁项集的数据挖掘算法,先对数据库进行投影,得到一个频繁项,然后构造压缩的数据库结构。

FP树依次读入每条事务记录,接着按照事件发生频次将事务中的各项由高到低的排列映射到FP树上的路径。设定FP树的头结点为NULL,各树中的各分支节点记录了每个结点的频度计数,通过建立项头表实现前缀路径。然后,对FP树采取分而治之的挖掘方法去实现频繁项集的挖掘过程:根据项头表和FP建立的路径关系,找出各所包含的项集组合,完成项集支持度计数;根据最小支持度对项集组合进行筛选,并生成频繁项集。第一次扫描数据库D,得到如下的频繁项列表L:L={(a,4),(p,4),(c,3),(b,3)}。频繁项集在排序时是按照支持度计数递减顺序。
接下来的过程就是创建树的根部ROOT,第二次扫描数据库。通过对第一个事务扫描得到树的第一个分枝:{{a,1},(p,1),(c,1),(b,1)}。若有共同的分枝,计数分别增加1,两个事务加入到树中后,依此类推,最终生成的FP树。

FP-growth虽然克服了Apriori算法的两个缺点,但构造的 FP树需要全部装入内存,对于内存的需求量大,且递归构造项 的条件FP树需要很大的计算量。

Eclat算法

Apriori算法和FpGrowth都是从项集格式{TID: itemset}的事物集中挖掘频繁模式,其中TID是事物标识符,而itemset是事物TID中购买的商品。这种数据格式成为水平数据格式。

数据也可以用项-TID集格式{item:TID_set}表示,其中item是项的名称,而TID_set是包含item的事物标识符的集合。这种数据格式称为垂直数据格式。
等价变换类算法(Eclat算法)

Eclat算法加入了倒排的思想,具体就是将事务数据中的项作为key,每个项对应的事务ID作为value。只需对数据进行一次扫描,算法的运行效率会很高。
Ecalt算法的过程

  • 通过扫描一次数据集,把水平格式的数据转换成垂直格式;

  • 项集的支持度计数简单地等于项集的TID集的长度;

  • 从k=1开始,可以根据先验性质,使用频繁k项集来构造候选(k+1)项集;

  • 通过取频繁k项集的TID集的交,计算对应的(k+1)项集的TID集。

  • 重复该过程,每次k增加1,直到不能再找到频繁项集或候选项集

参考文献
[1]毛建景. 经典关联规则挖掘算法[J]. 河南科技:上半月, 2014(10):17-18.
[2]Kantardzic, Mehmed. Data mining. Concepts, models, methods and algorithms. 2nd ed.[M]// Data Mining: Concepts, Models, Methods and Algorithms. John Wiley & Sons, Inc. 2004.
[3]肖文, 胡娟, 周晓峰. 基于MapReduce计算模型的并行关联规则挖掘算法研究综述[J]. 计算机应用研究, 2018, 035(001):13-23.
数据格式

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值