在以前的博客中介绍过数据挖掘的一个基本问题频繁项集挖掘。对于这一问题,有很多不同思想的算法。同时,也有一些优化策略可以在算法基本不变的情况下大大提高算法的效率。今天介绍两个:竖向数据库(Vertical database)、Diffsets 两个策略非常相像,都是换了一个角度处理数据,巧妙而有效率。
Vertical mining
为了说明这一策略,我用AprioriTID算法和Apriori做一比较:
首先可以将数据库做如下转换:
这时,如果要计算一个项集(itemset)的支持数时,就不用扫描一遍数据库了,而可以对tid数据库做交集。
例如,要计算{pasta,lemon}的支持数: