找到一篇关于Apriori算法的文章,通熟易懂,值得一看!
原文出处:
http://blog.sina.com.cn/s/blog_6e85bf420100ogn2.html
Apriori算法是我的第一个数据挖掘算法,算处女作吧,哈哈哈。在这之前我对数据挖掘算法恐惧,觉得太难了,只是大致看了下原理,然后在clementine上拖几个控件跑下demo,运行的结果很好但是总觉得技术含量不高,我不知道为什么要这么做,为什么那些参数要那么设置,更糟糕的是发现那些算法过一段时间都忘记了。没办法,不入虎穴焉得虎子,我逼迫自己根据书上提供的讲解和伪码,琢磨着用什么数据结构保存数据?怎么把算法用程序实现?。。。。。。。万事开头难,好在我还是把这个算法写出来了,我获得了自信,使得我真正喜欢上了数据挖掘,现在看看自己写的那个算法,觉得有好多地方不成熟,哈哈哈。
每一行表示一条交易,共有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很大的话,




