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