最近上数据挖掘的课程,其中学习到了频繁模式挖掘这一章,这章介绍了三种算法,Apriori、FP-Growth和Eclat算法;由于对于不同的数据来说,这三种算法的表现不同,所以我们本次就对这三种算法在不同情况下的效率进行对比。从而得出适合相应算法的情况。

(一)算法原理

其中相应的算法原理在之前的博客中都有非常详细的介绍,这里就不再赘述,这里给出三种算法大概的介绍

但是这里给出每个算法的关键点:

1.1 Apriori算法:

  • 限制候选产生发现频繁项集

  • 重要性质:频繁项集所有非空子集也一定是频繁的。

  • 主要步骤:

  1. 连接

  2. 剪枝

  • 特点:需要多次扫描数据库,对于大规模数据效率很低!

Apriori算法原理详细介绍:http://www.cnblogs.com/90zeng/p/apriori.html

1.2 FP-Growth算法

  • 通过模式增长挖掘频繁模式

  • 主要步骤:

  1. 构建频繁模式树

  2. 构造条件模式基

  3. 挖掘频繁模式

  • 特点:两次扫描数据库,采用分治的策略有效降低搜索开销

FP-Growth算法原理详细介绍:http://www.cnblogs.com/datahunter/p/3903413.html

1.3 Eclat算法

  • 使用垂直格式挖掘频繁项集

  • 主要步骤:

  1. 将数据倒排{ item:TID_set }

  2. 通过求频繁k项集的交集来获取k+1项集

  • 特点:仅需要一次扫描数据库,TID集合很长的话需要消耗大量的内存和计算时间

Eclat算法原理详细介绍:

网友评论