码迷,mamicode.com
首页 > 其他好文 > 详细

PFP(Parallel FPGrowth)

时间:2015-04-22 23:44:39      阅读:293      评论:0      收藏:0      [点我收藏+]

标签:

分布式FP-tree

技术分享

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

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

技术分享

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

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两组,上面的思想是根据商品映射出许多<k,v>,在这里不再根据商品映射,而是根据分组映射,第一个购物篮中,G1组,最右边的是p,则自右向左写下购物篮fcamp,这里key是G1,value是fcamp;同理G2为key时,value是fcam,即<G1,fcamp><G2,fcam>;

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

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

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

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

过程如下图:

技术分享3.上面的<k,v>会映射到G1,G2两台机,分别重构出fp-tree

 

PFP(Parallel FPGrowth)

标签:

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!