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:博文中如有什么不对的地方恳请大家指出,谢谢~