Apriori算法 fpgrowth算法

Apriori算法是我的第一个数据挖掘算法,算处女作吧,哈哈哈。在这之前我对数据挖掘算法恐惧,觉得太难了,只是大致看了下原理,然后在clementine上拖几个控件跑下demo,运行的结果很好但是总觉得技术含量不高,我不知道为什么要这么做,为什么那些参数要那么设置,更糟糕的是发现那些算法过一段时间都忘记了。没办法,不入虎穴焉得虎子,我逼迫自己根据书上提供的讲解和伪码,琢磨着用什么数据结构保存数据?怎么把算法用程序实现?。。。。。。。万事开头难,好在我还是把这个算法写出来了,我获得了自信,使得我真正喜欢上了数据挖掘,现在看看自己写的那个算法,觉得有好多地方不成熟,哈哈哈。

Apriori算法属于关联分析,是Agrawal在1993提出来的。它的功能是找出频繁项集,例如:超市购物中,那些商品总是同时被购买,如啤酒和尿不湿总是被同时购买,这时商家就可以把他们放在一起使得啤酒和尿不湿的销量更多,哈哈哈。其核心是:先找频繁项集是1的元素,在这基础上找频繁项集时2的元素,,,,,,,在频繁项集是K的元素中找频繁项集是K+1的元素。如有如下数据:


每一行表示一条交易,共有9行,既9笔交易,左边表示交易ID,右边表示商品名称。最小支持度是22%,那么每件商品至少要出现9*22%=2次才算频繁。第一次扫描数据库,使得在每条交易中,按商品名称递增排序。第二次扫描数据,找频繁项集为1的元素有:

左边表示商品名称,右边表示出现的次数,都大于阈值2。在此基础上找频繁项集是2的元素,方法是两两任意组合,第三次扫描数据得到它们出现的次数:


这里{I1,I4},{I3,I4},{I3,I5},{I4,I5}出现的次数都小于2,过滤掉,实际频繁项集为2的元素有:


在这基础上找频繁项集为3的元素,此时就有规律性了,在频繁项集为K的元素上找频繁项集为K+1的元素的方法是:在频繁项集为K的项目(每行记录)中,假如共有N行,两两组合,满足两两中前K-1个元素相同,只后一个元素要求前一条记录的商品名称小于后一条记录的商品名称,这样是为了避免重复组合,求它们的并集得到长度为K+1的准频繁项集,那么最多共有种可能的组合,有:
想想如果N很大的话,是一个多么庞大的数字,这时就要用到Apriori的核心了:如果K+1个元素构成频繁项集,那么它的任意K个元素的子集也是频繁项集。然后将每组K+1个元素的所有长度为K的子集,有中组合,在频繁项集为K的项集中匹配,没有找到则删除,用第一条记录{I1,I2,I3}它的长度为2的频繁项集有:分别是:{I1,I2},{I1,I3},{I2,I3}种情况,幸好这三种情况在频繁项集为2的项集中都找到了。通过这步过滤,得到的依旧是准频繁项集,它们是:,此时第四次扫描数据库,得到真正长度为3的频繁项集是
因为{I1,I2,I4}只出现了1次,小于最小支持度2,删除。就这个例子而言,它的最大频繁项集只有3,就是{I1,I2,I3}和{I1,I2,I5},我想不用我多说大家都明白了。
Apriori算法 fpgrowth算法
可见--Apriori算法有个最大的问题就是要产生大量准频繁项集或者说候选集,效率不高,并且要多次扫描数据库,在后面的PF_growth算法将避免了这两个个问题。


  

爱华网本文地址 » http://www.413yy.cn/a/25101016/303855.html

更多阅读

新名词 启发式算法与元启发式算法 启发式算法有哪些

启发式算法(HeuristicAlgorigthm)是一种基于直观或经验构造的算法,在可接受的花费(指计算时间、计算空间等)给出待解决优化问题的每一实例的一个可行解,该可行解与与最优解的偏离程度一般不可以事先预计。启发式算法是一种技术,这种

鸡兔同笼吹哨算法 ---古已有之 鸡兔同笼计算机算法

鸡和兔15只,共有40只脚,鸡和兔各几只?算法:假设鸡和兔训练有素:吹一声哨,抬起一只脚:40-15=25。再吹哨,又抬起一只脚:25-15=10。这时鸡都一屁股坐地上了,兔子还两只脚立着。所以,兔子有10÷2=5只,鸡有15-5=10只。【同一个知识点,有教育方法强弱的区别,找

“启发式搜索算法”简介 启发式搜索算法有哪些

何谓启发式搜索算法  在说它之前先提提状态空间搜索。状态空间搜索,如果按专业点的说法就是将问题求解过程表现为从初始状态到目标状态寻找这个路径的过程。通俗点说,就是在解一个问题时,找到一条解题的过程可以从求解的开始到问题的

转载 MeanShiftCodefortheEdgeDetectio meanshift聚类算法

原文地址:MeanShiftCodefortheEdgeDetectionandImageSegmentationsystem(Edison)作者:徐大帅哼一、概述MeanShift并不算一种很新的特征空间分析算法,但是它原理简单,计算速度较快,通常能在一次分割后形成大量小的模态区域。这样便直接将

C#程序实现Canny边缘检测算法 边缘检测算法实现

转载自:http://blog.csdn.net/yjz_uestc/article/details/6664937Canny边缘检测是被公认的检测效果最好的边缘检测方法,是由JohnF.Canny于1986年提出,算法目标是找出一个最优的边缘检测的方法,所谓最优即:1.好的检测:算法能够尽可能的标

声明:《Apriori算法 fpgrowth算法》为网友雾里看花分享!如侵犯到您的合法权益请联系我们删除