FP-growth算法是基于Apriori算法构建的,Apriori算法是发现频繁项集的一种方法,但是Apriori算法是通过多次扫描数据集找到所有满足最小支持度的频繁项集,而FP-growth算法只扫描原始数据集两次,它发现频繁项集的基本过程分为两步:
- 构建FP树。需要对原始数据集扫描两遍,第一遍对所有元素项出现的次数进行统计,第二遍只考虑频繁元素。
- 挖掘频繁项集。
FP-growth算法只需要对数据库进行两次扫描,而Apriori算法对于每个潜在的频繁项集都会扫描数据集判定给定模式是否频繁,因此FP-growth算法的速度要比Apriori算法更快。
1 FP树数据结构
头指针表:记录所有频繁一项集出现的次数。
FP树:存储项集的出现频率,每个项集会以路径的方式存储在树中。
节点链表:相似项之间的链接。所有头指针表里的频繁一项集都是一个节点链表的头,依次指向FP树中该频繁一项集出现的位置。方便头指针表和FP树之间的练习查找和更新。
上面的事务列表将用于介绍生成FP树,设置支持度阈值为3,则出现次数不低于3次的项集为频繁项集,《机器学习实战》一书给出了FP树。
如上图,为带头指针表的FP树。