FP-growth--频繁模式树

介绍

FP-growth(Frequent Pattern Tree, 频繁模式树), 是韩家炜提出的挖掘频繁项集的方法,是将数据集存储在一个特定的称作 FP 树的结构之后发现频繁项集或频繁项对,即常在一块出现的元素项的集合 FP 树。FP-growth 算法比 Apriori 算法效率更高,在整个算法执行过程中,只需遍历数据集 2 次,就能够完成频繁模式发现,其发现频繁项集的基本过程如下:(1)构建 FP树(2)从 FP 树中挖掘频繁项集
FP-growth 的一般流程如下:1:先扫描一遍数据集,得到频繁项为 1 的项目集,定义最小支持度(项目出现最少次数),删除那些小于最小支持度的项目,然后将原始数据集中的条目按项目集中降序进行排列。2:第二次扫描,创建项头表(从上往下降序),以及 FP 树。3:对于每个项目(可以按照从下往上的顺序)找到其条件模式基(CPB,conditional patten base), 递归调用树结构,删除小于最小支持度的项。如果最终呈现单一路径的树结构,则直接列举所有组合;非单一路径的则继续调用树结构,直到形成单一路径即可。

内容

构造FP树

TidItems
1I1, I2, I5
2I2, I4
3I2, I3
4I1, I2, I4
5I1, I3
6I2, I3
7I1, I3
8I1, I2, I3, I5
9I1, I2, I3

扫描数据集,对每个物品进行计数:

项集支持度
I27
I16
I36
I42
I52

设最小支持度计数为2
扫描数据库,统计支持度计数,得到频繁1-项集,按支持度降序排列

TidItems
1I2,I1,I5
2I2, I4
3I2, I3
4I2,I1,I4
5I1, I3
6I2, I3
7I1, I3
8I2,I1,I3,I5
9I2,I1, I3
null I2:7 I1:4 I3:2 I4:1 I5:1 I3:2 I4:1 I5:1 I1:2 I3:2

挖掘FP树

得到了FP树和项头表以及节点链表,我们首先要从项头表的底部项依次向上挖掘。对于项头表对应于FP树的每一项,我们要找到它的条件模式基。所谓条件模式基是以我们要挖掘的节点作为叶子节点所对应的FP子树。得到这个FP子树,我们将子树中每个节点的的计数设置为叶子节点的计数,并删除计数低于支持度的节点。从这个条件模式基,我们就可以递归挖掘得到频繁项集了
I 5 I_5 I5开始,对于头表中的每个 I i I_{i} Ii,确定自身为频繁模式,再挖掘以 I i I_{i} Ii为后缀的频繁模式
将所有的祖先节点计数设置为叶子节点的计数
前缀路径/条件模式基:
< I 2 , I 1 : 1 > 、 < I 2 , I 1 , I 3 : 1 > <I2,I1:1>、<I2,I1,I3:1> <I2,I1:1><I2,I1,I3:1>
频繁模式:
{ I 2 , I 5 : 2 } \{I2,I5:2\} {I2,I5:2} ( { I 2 , I 5 : 2 } \{I2,I5:2\} {I2,I5:2}(2的含义指的是 I 2 , I 5 I_2,I_5 I2I5都是2)
{ I 1 , I 5 : 2 } \{I1,I5:2\} {I1,I5:2}
{ I 2 , I 1 , I 5 : 2 } \{I2,I1,I5:2\} {I2,I1,I5:2}
提取以I4的前缀路径/条件模式基:
<I2,I1:1>、<I2: 1> (I1被砍掉了)
I4为后缀的频繁模式: { I 2 , I 4 : 2 } \{I2,I4:2\} {I2,I4:2}
提取以I3为后缀的频繁模式
有两分支,则:
对于条件FP树头表中的每个Ii,与I3连接确定频繁模式 I i , I 3 {Ii, I_3} Ii,I3,支持度等于Ii的支持度。
递归挖掘条件FP树,提取以 I i , I 3 {I_i, I_3} Ii,I3为后缀的频繁模式
频繁模式:
{ I 1 , I 3 : 4 } \{I1,I3:4\} {I1,I3:4}
{ I 2 , I 3 : 4 } \{I2,I3:4\} {I2,I3:4}
{ I 2 , I 1 , I 3 : 2 } \{I2,I1,I3:2\} {I2,I1,I3:2}
I 1 I_1 I1为后缀
{ I 2 I 1 : 4 } \{I2 I1:4\} {I2I1:4}
I 2 I_2 I2只有前缀,没有后缀

条件模式基条件FP树产生的频繁模式
I5{I2 I1:1}, {I2 I1 I3:1}<I2:2, I1:2>{I2 I5:2}, {I1 I5:2}, {I2 I1 I5:2}
I4{I2 I1:1}, {I2:1}<I2: 2>{I2 I4:2}
I3{I2 I1:2}, {I2:2}, {I1:2}<I2: 4, I1: 2>, <I1: 2>{I2 I3:4}, {I1 I3:4}, {I2 I1 I3:2}
I1{I2:4}<I2: 4>{I2 I1:4}
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值