据我所知,解决频繁模式挖掘(FPM)问题的算法的发展,改进的道路有一些主要的检查点。首先,Agrawal 等人在 1993 年提出了Apriori算法。,以及问题的形式化。该算法能够通过使用格子来维护数据,从集合(幂集)中剥离出一些集合。该方法的一个缺点是需要重新读取数据库来计算每个扩展集的频率。2^n - 1
后来,在 1997 年,Zaki 等人。提出了算法Eclat,该算法将每个集合的结果频率插入到晶格内。这是通过在网格的每个节点上添加一组事务 ID 来完成的,该集合具有从根到被引用节点的项目。主要贡献是不必重新读取整个数据集即可知道每个集合的频率,但构建此类数据结构所需的内存可能会超过数据集本身的大小。
2000 年,韩等人。提出了一个名为FPGrowth的算法,以及一个名为 FPTree 的前缀树数据结构。该算法能够提供显着的数据压缩,同时还允许仅产生频繁项集(不生成候选项集)。这主要是通过按降序对每个事务的项目进行排序来完成的,因此最频繁的项目是树数据结构中重复次数最少的项目。由于频率仅在深入遍历树时才会下降,因此该算法能够剥离非频繁项集。
编辑:
据我所知,这可能被认为是最先进的算法,但我想知道其他提出的解决方案。FPM 还有哪些其他算法被认为是“最先进的”?这种算法的直觉/主要贡献是什么?
FPGrowth 算法在频繁模式挖掘中是否仍然被认为是“最先进的”?如果不是,什么算法可以更有效地从大型数据集中提取频繁项集?