fpgrowth算法c语言,PFP(Parallel FPGrowth)

分布式FP-tree

41fff79e15dc1d17af812083c2eebae7.png

1.首先还是对购物篮数据进行排序,计数,假设min_sup=3.去掉支持度小于3的项。

2.按照fp-tree的画法,对第二列整理过的项建树,fcamp,fcabm,fb,cbp,fcamp,建立fp-tree如下:

30e50fa76fcb25c6fb14d6f279f7eae3.png

3.第三列是从右向左遍历第二列,得到至某点的路径,例如,到p的路径为fcam,到m的是fca,到a的是fc,到c的是f,该过程发生在map端,购物篮数据存放在各个节点上,产生如上图所示的第三列的

4.通过shuffle过程,发送至reducer,在reduce端很容易就发现了频繁模式

为了验证上述结果,用fp-tree挖掘频繁模式:

p:第一条路径上p计数为2,小于min_sup,则去掉所有计数为2的项(f,a,m),最右边的路径上c,p各出现1次,加上第一条路径上的p:2,c:2,最终为p:3,c:3

m:第一条路径上f2-c2-a2-m2,第二条路径f1-c1-b1-m1,过滤掉b之后,总共是f3-c3-a3-m3,最终模式是:f:3,c:3,a:3,m:3

b:挖不出任何东西

同理:

a:f:3,c:3,a:3

c:f:3,c:3

命理得证。

PFP算法瓶颈:

在reduce端,mapshuffle过后将所有数据放在了reduce端,同样很容易将reduce节点的内存撑爆

http://infolab.stanford.edu/~echang/recsys08-69.pdf给出了一种方法

1.假设分成两组G1和G2,G1包含商品c,a,p;G2包含商品f,b,m,

2.对每一个购物篮数据进行处理

第一个购物篮数据:f,c,a,m,p,分成G1,G2两组,上面的思想是根据商品映射出许多,在这里不再根据商品映射,而是根据分组映射,第一个购物篮中,G1组,最右边的是p,则自右向左写下购物篮fcamp,这里key是G1,value是fcamp;同理G2为key时,value是fcam,即;

第二个购物篮数据:f,c,a,b,m,分成G1,G2两组,

第三个购物篮数据:f,b,分成G1,G2两组,

第四个购物篮数据:c,b,p分成G1,G2两组,

第五个购物篮数据:c,b,p分成G1,G2两组,

过程如下图:

69124831d03db58d0cf937553e146264.png3.上面的会映射到G1,G2两台机,分别重构出fp-tree

原文:http://www.cnblogs.com/mlj5288/p/4448950.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值