Apriori algorithm是关联规则里一项基本算法。是由Rakesh Agrawal和Ramakrishnan Srikant两位博士在1994年提出的关联规则挖掘算法。关联规则的目的就是在一个数据集中找出项与项之间的关系,也被称为购物蓝分析 (Market Basket analysis...
分类:
编程语言 时间:
2015-07-03 13:59:10
阅读次数:
167
引言:在关联分析中,频繁项集的挖掘最常用到的就是Apriori算法。Apriori算法是一种先产生候选项集再检验是否频繁的“产生-测试”的方法。这种方法有种弊端:当数据集很大的时候,需要不断扫描数据集造成运行效率很低。
而FP-Growth算法就很好地解决了这个问题。它的思路是把数据集中的事务映射到一棵FP-Tree上面,再根据这棵树找出频繁项集。FP-Tree的构建过程只需要扫描两次数据集。...
分类:
编程语言 时间:
2015-06-28 12:49:56
阅读次数:
287
前言:数据挖掘中的关联分析可以分成频繁项集的挖掘和关联规则的生成两个步骤,而Apriori算法是找频繁项集最常用到的一种算法。
关于关联分析和频繁项集请见:什么是关联分析?
中言:我们还是利用购物篮的例子来讲述Apriori算法的思路。
购物篮信息如下:
TID
Items 001
Cola, Egg, Ham
002
Cola, Diaper, Bee...
分类:
编程语言 时间:
2015-06-27 16:33:20
阅读次数:
214
国际权威学术组织the IEEE International Conference on Data Mining (ICDM) 2006年12本月十大评选经典的数据挖掘算法:C4.5, k-Means, SVM, Apriori, EM, PageRank, AdaBoost, kNN, Naive...
分类:
编程语言 时间:
2015-06-23 15:09:58
阅读次数:
107
国际权威学术组织the IEEE International Conference on Data Mining (ICDM) 2006年12本月十大评选经典的数据挖掘算法:C4.5, k-Means, SVM, Apriori, EM, PageRank, AdaBoost, kNN, Naive...
分类:
编程语言 时间:
2015-06-22 19:11:57
阅读次数:
189
Apriori在数据挖掘中是经典的频繁项集挖掘算法,其主要思想就是如果某个项集不频繁,则任何包含此项集的项集一定不频繁。而今天要实现的增量式的Apriori算法,有点像分布式的Apriori,因为我们可以把已挖掘的事务集和新增的事务集看作两个互相独立的数据集,挖掘新增的事务集,获取所有新增频繁集,然后与已有的频繁集做并集,对于两边都同时频繁的项集肯定全局频繁,而只有一边频繁的项集则需要统计其在两边的...
分类:
编程语言 时间:
2015-06-13 12:57:43
阅读次数:
159
这个问题在于实现Apriori算法的时候需要求各个频繁集的关联规则,而这时需要在求得最大的频繁集中求各个频繁集的真子集。然后在实现这一步的时候被卡主了,第一反应是用递归完成,但是面对数据挖掘中庞大的项目集,递归显然很低效,而且估计跑不起来,所以用迭代的方法显然比较靠谱。网上非递归的方法有用二进制加法...
分类:
编程语言 时间:
2015-06-12 09:47:04
阅读次数:
315
FP-Tree算法FPTree算法:在不生成候选项的情况下,完成Apriori算法的功能。FP-Tree:就是上面的那棵树,是把事务数据表中的各个事务数据项按照支持度排序后,把每个事务中的数据项按降序依次插入到一棵以NULL为根结点的树中,同时在每个结点处记录该结点出现的支持度。条件模式基:包含FP...
分类:
其他好文 时间:
2015-06-08 23:03:59
阅读次数:
175
引文: 学习一个算法,我们最关心的并不是算法本身,而是一个算法能够干什么,能应用到什么地方。很多的时候,我们都需要从大量数据中提取出有用的信息,从大规模数据中寻找物品间的隐含关系叫做关联分析(association analysis)或者关联规则学习(association rule learning)。比如在平时的购物中,那些商品一起捆绑购买销量会比较好,又比如购物商城中的那些推荐信息,都是根据用...
分类:
编程语言 时间:
2015-06-04 12:03:23
阅读次数:
256
上篇说明了原理,这篇就直接上核心代码了~
代码比较长,所以理解可能有点麻烦,核心思路就是计算选择的维度后遍历数据,逐步进行循环计算置信度,并淘汰每次循环后的最低值。
这里有一点要注意的,我一开始想用arraylist构造一个堆栈结构进行数据遍历的存储跟计算,因为这样效率比较高。。
但是后来发现,那么做的话,如果以后想要对类型跟因子的种类、数量进行修改的话,需要对代码进行大量重构才能实...
分类:
编程语言 时间:
2015-05-28 09:34:33
阅读次数:
245