FP Tree的数据结构
FP Tree算法引入了一些数据结构来临时存储数据,这些数据结构有3个组成部分,分别是项头表、FP Tree 、节点链表
FP Tree的构建
1、源数据的准备:
下面的数据为源数据,我们将用下面的数据构建FP tree
TID | Items |
1 | {A,B,E} |
2 | {B,C,D} |
3 | {A,E} |
4 | {B,E,F} |
5 | {B,C} |
6 | {F} |
7 | {A,E} |
2、构建表头项:我们先设定最小支持度的阈值为10%,然后把所有的1项频繁集按照出现的频率从高到底排列,由于D的出现次数为1,低于阈值10%,所以不会出现在表头项,得到如下表格
单项频繁集 | 频率 |
B | 4 |
E | 4 |
A | 3 |
C | 2 |
F | 2 |
3、把源数据中的集合按照表头项的顺序重新排列,得到如下表格
TID | Items |
1 | {B,E,A} |
2 | {B,C,D} |
3 | {E,A} |
4 | {B,E,F} |
5 | {B,C} |
6 | {F} |
7 | {E,A} |
4、PF Tree是一棵以null为根节点的树,从第一条数据{B,E,A}开始,FP Tree中无与B->E->为公共前缀的路径,所以结构如下图,冒号后面的为经过该节点的路径数目
5、接下来到第二条数据{B,C,D},节点B为B->C->D的公共前缀,所以经过B节点的路径数目会变成2,形成如下结构
6、重复上述的步骤,把所有记录都记录到FP Tree上,最后会形成如下结构
7、把项头表的各个节点分别指向对应的节点,并指向树中和它同名的节点,最后得到如下结构图,也就是一棵完整的FP Tree
PS:博文中如有什么不对的地方恳请大家指出,谢谢~