FP树

Apriori算法需要产生大量候选项集,重复计算support_count 

把事务集中关联信息及count记录在树上,扫描树即可 

 

FP树主要分成两步 = FP树构建 + FP树挖掘 

构造初始FP树 => 挖掘FP树获得条件模式基 => 构造条件FP树 => 挖掘条件FP树 => ... 如此递归直至树只有单路径  

 

以具体例子说明,事务集D为

{I1, I2, I5}

{I2, I4}

{I2, I3}

{I1, I2, I4}

{I1, I3}

{I2, I3}

{I1, I3}

{I1, I2, I3, I5}

{I1, I2, I3}

假设最小支持度计数=2 

 

构造FP树

输入:事务集D 

输出:FP树 

对频繁1项集按support_count排序

I2:7 ; I1:6 ; I3:6 ; I4:2 ; I5:2   (count都>=2,无需排除)

事务集D就按照排序顺序依次处理,构造FP树(类似于字典树构造,但多了表头)  α={I2,I1,I3,I4,I5}

 

挖掘FP树

对FP树,从I5 => I2 每项从树中找到其前缀路径事务集,构造条件FP树,直至树为单路径或空

(1)β={I5:2}   D1= {I2, I1: 1} {I2, I1, I3: 1} (每个事务后面都省略了I5:1, 受其制约, count取最小值1)

对D1中1项集排序: I2:2 ; I1:2 (I3:1不满足最小支持度计数,排除掉)

使用D1构造条件FP树(太简单了表头不画了) α={I2,I1}

此时为单路径,此时α的每种组合αk => 产生模式β=β∪αk ,其support_count为β中结点最小的计数

因此得到频繁模式: {I2,I5:2} {I1,I5:2} {I2,I1,I5:2}

(2)β={I3:6} D1={I2,I1:2} {I2:2} {I1:2} 

排序:I2:4 I1:4 

构造条件FP树 α={I2,I1} 

此时非单路径,需要递归

<1>β={I3,I1:4}  D2={I2:2} 构造FP树

 

 

单路径=> 频繁模式{I3,I1,I2:2} {I3,I1:4}

<2>β={I3,I2:4}  D2={} 不构造FP树

=>频繁模式{I3,I2:4}

(3)后面的I4 I2 I1类似 ...

 

 

因为一些东西本来就懂了,因此没有细讲,只是为了把FP树递归构造过程理顺

具体看书《数据挖掘概念与技术》P168

posted on 2016-04-22 13:11  IvanSSSS  阅读(1301)  评论(0编辑  收藏  举报

导航