FP-growth算法
Apriori算法可能受到两种非平凡开销的影响:一方面它可能需要产生大量候选项集;另一方面它可能需要重复的扫描整个数据库,通过模式匹配检查一个很大的候选集合。这样检查数据库中每个事务来确定候选项集支持度的开销很大。
那么是否可以设计一种方法,挖掘全部频繁项集而无须这种代价昂贵的候选产生过程?一种试图这样做的方法称为频繁模式增长(Frequent-Pattern Growth,FP-growth)。它采取如下分治策略:首先,将代表频繁项集的数据库压缩到一颗频繁模式树(FP树),该树仍保留项集的关联信息。然后,把这种压缩后的数据库划分成一组条件数据库,每个数据库关联一个频繁项或模式段,并分别挖掘每个条件数据库。对于每个“模式片段”,只需要考察它相关联数据集。因此,随着被考察的模式的“增长”,这种方法可以显著地压缩被搜索的数据集的大小。
FP-growth算法的基本思路:
- 扫描一次事务数据库,找出频繁1-项集合,记为L,并把它们按支持度计数的降序进行排列。
- 基于L,再扫描一次事务数据库,构造表示事务数据库中项集关联的FP树。
- 在FP树上递归地找出所有频繁项集。
- 最后在所有频繁项集中产生强关联规则。