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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ACBattle/article/details/81515961

Here is code

背景

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> 挖掘频繁信息,按照项头表,从底向上依次寻找频繁集。

参考博主

猜你喜欢

转载自blog.csdn.net/ACBattle/article/details/81515961
今日推荐