2014年3月18日
摘要: FP-Growth算法 FP-Growth(频繁模式增长)算法是韩家炜老师在2000年提出的关联分析算法,它采取如下分治策略:将提供频繁项集的数据库压缩到一棵频繁模式树(FP-Tree),但仍保留项集关联信息;该算法和Apriori算法最大的不同有两点:第一,不产生候选集,第二,只需要两次遍历数据库,大大提高了效率。算法伪代码算法:FP-增长。使用FP-树,通过模式段增长,挖掘频繁模式。输入:事务数据库D;最小支持度阈值min_sup。输出:频繁模式的完全集。1. 按以下步骤构造FP-树:(a) 扫描事务数据库D 一次。收集频繁项的集合F 和它们的支持度。对F 按支持度降序排序,结果为频繁项表 阅读全文
posted @ 2014-03-18 17:47 carekee 阅读(532) 评论(0) 推荐(0) 编辑
摘要: 接着前面的博客Frequent Pattern之四继续分析。结果聚合请看伪码如下:这个mapreduce实际上完成了一个index的功能,把上一步的结果进行了一个处理,它把上一步得到的frequent pattern按照item做了索引,这要得到的最后结果就是某一个item对应着一组frequent pattern。它把这些frequent pattern放在一个堆里,便于按频率的高低顺序进行访问。伪码中的if-else其实就是把frequent pattern插入堆,如果堆满了,和频率最小的那个节点(也就是根节点)比较一下,如果新节点的值大的话,删掉根节点,插入新节点。这样做的目的是始终保持 阅读全文
posted @ 2014-03-18 17:35 carekee 阅读(485) 评论(1) 推荐(0) 编辑
摘要: 这一篇博客接前面的博客分析MapReduce框架下FP Growth算法详细步骤。Sharding这一步没什么好讲的,将数据库分成连续的大小相等的几个块,放置在不同的机器上。以Hadoop来讲,其框架本身就将整个数据库放在不同的机器上,形成不同的分区,因此在Hadoop上我们本身都不需要做什么。F_list计算这一步来讲也没什么好讲的,就是一个简单的频率统计,这是MapReduce最简单的一种应用。下面给出伪码,读者自己分析一下很容易看明白。条目分组这一步难度也不大。将F_list分成几个组而已。从这一步开始,为了更好得阐述算法的详细步骤,我们举个例子来说明问题。后边的所有步骤的举例都是基于这 阅读全文
posted @ 2014-03-18 17:34 carekee 阅读(1877) 评论(2) 推荐(0) 编辑
摘要: 前面的博客分析了关联分析中非常重要的一个算法-FP Growth.该算法根据数据库在内存中构造一个精巧的数据结构-FP Tree,通过对FP Tree不断的递归挖掘就可以得到所有的完备Frequent Patterns.但是在目前海量数据的现状下,FP Tree已经大到无法驻留在计算机的内存中。因此,并行化是唯一的选择。这篇博客主要讲一下如何在MapReduce框架下进行并行FP挖掘,它主要的算法在文献1中有详细描述。如何进行FP Growth的并行化呢?一个很自然的想法就是,将原始的数据库划分成几个分区,这几个分区分别在不同的机器上,这样的话我们就可以对不同数据分区并行得进行FP Growt 阅读全文
posted @ 2014-03-18 17:33 carekee 阅读(484) 评论(0) 推荐(0) 编辑
摘要: 数据挖掘中有一个很重要的应用,就是Frequent Pattern挖掘,翻译成中文就是频繁模式挖掘。这篇博客就想谈谈频繁模式挖掘相关的一些算法。定义何谓频繁模式挖掘呢?所谓频繁模式指的是在样本数据集中频繁出现的模式。举个例子,比如在超市的交易系统中,记载了很多次交易,每一次交易的信息包括用户购买的商品清单。如果超市主管是个有心人的话,他会发现尿不湿,啤酒这两样商品在许多用户的购物清单上都出现了,而且频率非常高。尿不湿,啤酒同时出现在一张购物单上就可以称之为一种频繁模式,这样的发掘就可以称之为频繁模式挖掘。这样的挖掘是非常有意义的,上述的例子就是在沃尔玛超市发生的真实例子,至今为工业界所津津乐道 阅读全文
posted @ 2014-03-18 17:29 carekee 阅读(388) 评论(1) 推荐(0) 编辑
摘要: FP树构造FP Growth算法利用了巧妙的数据结构,大大降低了Aproir挖掘算法的代价,他不需要不断得生成候选项目队列和不断得扫描整个数据库进行比对。为了达到这样的效果,它采用了一种简洁的数据结构,叫做frequent-pattern tree(频繁模式树)。下面就详细谈谈如何构造这个树,举例是最好的方法。请看下面这个例子:这张表描述了一张商品交易清单,abcdefg代表商品,(ordered)frequent items这一列是把商品按照降序重新进行了排列,这个排序很重要,我们操作的所有项目必须按照这个顺序来,这个顺序的确定非常简单,只要对数据库进行一次扫描就可以得到这个顺序。由于那些非 阅读全文
posted @ 2014-03-18 17:28 carekee 阅读(1570) 评论(1) 推荐(0) 编辑
摘要: 在关联规则挖掘领域最经典的算法法是Apriori,其致命的缺点是需要多次扫描事务数据库。于是人们提出了各种裁剪(prune)数据集的方法以减少I/O开支,韩嘉炜老师的FP-Tree算法就是其中非常高效的一种。支持度和置信度严格地说Apriori和FP-Tree都是寻找频繁项集的算法,频繁项集就是所谓的“支持度”比较高的项集,下面解释一下支持度和置信度的概念。设事务数据库为:A E F GA F GA B E F GE F G则{A,F,G}的支持度数为3,支持度为3/4。{F,G}的支持度数为4,支持度为4/4。{A}的支持度数为3,支持度为3/4。{F,G}=>{A}的... 阅读全文
posted @ 2014-03-18 17:27 carekee 阅读(1119) 评论(0) 推荐(0) 编辑