【机器学习实战】FP-growth算法详解

code link

背景

支持度:出现的频率
置信度:“如果A那么B”的可信度

apriori算法 需要多次扫描数据,I/O 大大降低了时间效率

1. fp-tree数据结构

1> 项头表

记录所有的1项频繁集出现的次数,并降序排列

2> fp tree

根据项头表,构建fp树

3> 节点链表

所有项头表的1项频繁集都是一个节点链表的头,依次指向fp树中的位置,而且方便查找和更新

2. 项头表的建立

这里写图片描述
排序后的数据集进行了两步操作:
1> 删除每行关键字中支持度小于minSup的
2> 对关键字中剩下的元素按照支持度排序

3. fp tree和节点链表一起构建

开始节点为空
首先插入第一行关键字
这里写图片描述
接着插入第二行关键字,如果有重复的前缀路径,则路径上的节点+1
这里写图片描述
.
.
.
,
,
.
.
类似的我们插入所有的数据之后,fptree和链表也都建好了,下图即为最后的tree和节点链表
这里写图片描述

4.FP Tree的挖掘

对项头表从底部依次向上挖掘频繁集,对于项头表对应于fp树的每一项,我们要找到它的条件模式基(所有的路径前缀),更新该路径的节点数目。
F:
这里写图片描述
D:
这里写图片描述

这里写图片描述
最后是A,因为条件模式基为空,所以可不用挖掘
由此,我们得到了所有的频繁集(> 0.2),如果只要最大的频繁k项集,从上面分析可以看出,最大的是5项集,A----C----E----B----F

5.FP Tree步骤总结

1> 扫描数据,得到所有频繁一项集的计数,按照支持度保留满足的项,将频繁一项集放入项头表,并按降序排列
2> 扫描数据,重置原始数据(删除非频繁一项集,并按支持度排序)
3> 读入排序后的数据集,插入FP树,并构建节点链表
4> 挖掘频繁信息,按照项头表,从底向上依次寻找频繁集。

参考博主

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值