FP树挖掘算法实现

Fptree算法:

  FP-growth算法,采用的是分而治之的思想,在挖掘的过程中不会像Apriori算法那样,产生大量的候选集,Apriori算法中如果有10^4个频繁一项集会导致10^7个频繁二项集,而对长度为100的频繁模式,会产生2^100个候选,并且在重复扫描数据库的过程中,通过模式匹配检查一个很大的候选集是很耗时间的,FP-tree在经过第一遍扫描之后,会把数据库中的频集压缩进一棵频繁模式树,同时依然保留其中的关联信息 。

  Fp树结构的好处:

    (1)完整性:

      

      不会打破任何事物数据中的长模式。

 

      为频繁模式的挖掘保留了完整的信息。

 

     (2)紧凑性:

  

       减少了不相关的信息,非频繁的项会被删除。

   

       按频率递减排列,似的更频繁的项更容易在树中被共享。

 

       数据量比原数据库小。


1.Fptree树的构建

  (1)首先统计项的出现次数,选取最小支持度,选出事物所有项中的频繁项,构建头表Flist

  (2)创建树的根节点,用null标记。

  (3)将每个事物中的项按递减的支持度技术排列,并对每个事物创建一个分枝。

  (4)当一个事物考虑增加分枝的时候,沿共同前缀上的每个节点的计数加1,为跟随前缀后的项创建节点并连接。

   (5)头表连接每个节点在树中出现的。



1.Fptree树的挖掘

  由长度为1 的频繁模式开始,构造他的条件模式基(一个“子数据库”,由FP树中与后

 

缀模式一起出现的前缀路径集组成)。

 

  构造该初始后缀模式的条件FP树,并递归的在该树上实现挖掘。模式增长通过后缀模式

 

与条件FP树产生的频繁模式连接实现。



对每个条件模式基比如m的条件模式基fca:2 fcab:1

 

为基中的每一项累计计数,为模式基中的频繁项构建FP树。



实验数据介绍

  本文在验证算法性能时使用的数据是Facebook应用数据集,在前面章节中介绍的基于MapReduceFP-tree边权值计算算法的详细流程时同样是使用Facebook应用数据集。Facebook应用数据集是加利福尼亚欧文分校收集并发布的,数据集中的数据格式如下:



算法分析和实验结果分析:

  本算法分为三个步骤:

 

(1) 使用一个MapReduce计算每个用户使用app的个数,并放到一起。

 

Map:计算每个用户的app个数。


Reduce:将每个用户的app个数合并到一起。


结果:



(2) 将用户分组,使fptree能在不同的机器上并行,达到分布式计算。





结果:



(3)分组后对不同的组使用Fptree并行挖掘生成所有的用户对,并计算用户之间的相

 

似度,用的是jaccard相似度计算。





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值