最近上数据挖掘的课程,其中学习到了频繁模式挖掘这一章,这章介绍了三种算法,Apriori、FP-Growth和Eclat算法;由于对于不同的数据来说,这三种算法的表现不同,所以我们本次就对这三种算法在不同情况下的效率进行对比。从而得出适合相应算法的情况。
(一)算法原理
其中相应的算法原理在之前的博客中都有非常详细的介绍,这里就不再赘述,这里给出三种算法大概的介绍
但是这里给出每个算法的关键点:
1.1 Apriori算法:
限制候选产生发现频繁项集
重要性质:频繁项集所有非空子集也一定是频繁的。
主要步骤:
连接
剪枝
特点:需要多次扫描数据库,对于大规模数据效率很低!
Apriori算法原理详细介绍:http://www.cnblogs.com/90zeng/p/apriori.html
1.2 FP-Growth算法
通过模式增长挖掘频繁模式
主要步骤:
构建频繁模式树
构造条件模式基
挖掘频繁模式
特点:两次扫描数据库,采用分治的策略有效降低搜索开销
FP-Growth算法原理详细介绍:http://www.cnblogs.com/datahunter/p/3903413.html
1.3 Eclat算法
使用垂直格式挖掘频繁项集
主要步骤:
将数据倒排{ item:TID_set }
通过求频繁k项集的交集来获取k+1项集
特点:仅需要一次扫描数据库,TID集合很长的话需要消耗大量的内存和计算时间
Eclat算法原理详细介绍:
网友评论