FP-growth算法
Apriori原理是说如果一个元素项是不频繁的,那么那些包含该元素的超集也是不频繁的。Apriori算法从单元素项集开始,通过组合满足最小支持度要求的项集来形成更大的集合。支持度用来度量一个集合在原始数据中出现的频率。
FP-growth算法基于Apriori构建,但采用了高级的数据结构减少扫描次数,大大加快了算法速度。FP-growth算法只需要对数据库进行两次扫描,而Apriori算法对于每个潜在的频繁项集都会扫描数据集判定给定模式是否频繁,因此FP-growth算法的速度要比Apriori算法快。
如何产生频繁项集
1 构建FP-tree
2 对FP-tree进行挖掘,产生频繁项集
一:构造FP-tree
FP树时一种输入数据的压缩表示,它通过逐个读入事务,并把事务映射到FP树中的一条路径来构造,由于不同的事务可能会有若干个相同的项,因此它们的路径可能部分重叠。路径相互重叠越多,使用FP树结构获得的压缩效果越好,如果FP树足够小,能够存放在内存中就可以直接从这个内存中的结构提取频繁项集,而不必重复地扫描存放在硬盘上的数据。
构建步骤
(1)扫描一次数据集,确定每个项的支持度计数。丢弃非频繁项,而将频繁项按照支持
度的递减排序。
(2)算法第二次扫描数据集,构建FP树。读入第一个事务后,创建一个根结点用符号null
标记,然后创建路径包含该事务。
(3)依次读取事务。直到每个事务都映射到FP树的一条路径。读入所有的事务后形成FP树。
下图显示了一个数据集,它包含1