数据挖掘(一)——Apriori关联规则算法及评估
1、Apriori算法概述
大家不要害怕,在《数据挖掘概念与技术》一书中,Apriori算法是作为第一个数据挖掘算法来讲的,没有大公式,而且很容易理解, 直接上算法的手推图:
图片左上角是原数据,图片下半部分是步骤。
首先查找频繁一项集,项集就是项的集合(项,如:面包、牛奶等等),频繁项集可以理解为出现频度高或出现次数多的项集,如频繁{ 面 包 , 牛 奶 面包,牛奶 面包,牛奶}表示买面包就很可能买牛奶或买牛奶就很可能买面包。怎么查找频繁一项集呢?先把所有的一项集列出来,{ 面 包 面包 面包}{ 牛 奶 牛奶 牛奶}{ 啤 酒 啤酒 啤酒}{ 尿 布 尿布 尿布},然后统计每个一项集的支持度计数,比如对于{ 面 包 面包 面包},小明、小红、小赵三个人买了,那{ 面 包 面包 面包}的支持度计数就是3,以此类推。然后我们设定支持度阈值为2,也就是说买面包的人少于两个我们就懒得考虑这一项了,因为买面包的人很少那挖掘它的意义也不大,据此找到支持度计数大于等于2的项集,作为频繁一项集。如图中1、2步。
第二步是由频繁一项集产生二项集再选出频繁二项集(这里我们先不考虑先验性质),直接将频繁一项集按照不重复的原则组合成二项集,可以理解为排列组合,四个里面挑两个, C 4 2 = 6 C^2_4=6 C42=6,一共有6个二项集{ 面 包 , 牛 奶 面包,牛奶 面包,牛奶}{ 面 包 , 啤 酒 面包,啤酒 面包,啤酒}{ 面 包 , 尿 布 面包,尿布 面包,尿布}{ 牛 奶 , 啤 酒 牛奶,啤酒 牛奶,啤酒}{ 牛 奶 , 尿 布 牛奶,尿布 牛奶,尿布}{ 啤 酒 , 尿 布 啤酒,尿布 啤酒,尿布}。然后计算每个二项集的支持度计数,比如{ 面 包 , 牛 奶 面包,牛奶 面包,牛奶},同时买面包牛奶的是小红、小赵两人,所以的支持度计数是2,以此类推。之后再将支持度计数和阈值比较,选出频繁二项集{ 面 包 , 牛 奶 面包,牛奶 面包,牛奶}{ 啤 酒 , 尿 布 啤酒,尿布 啤酒,尿布}。如图中3、4步。
第三步是构造三项集并选出频繁三项集,直接将频繁一项集和频繁二项集进行组合(后续构造n项集也是频繁n-1项集与频繁一项集组合),仍按照不重复原则,构造出三项集,然后计算支持度计数,并与阈值比较得到频繁三项集。这里我们发现所有三项集都不满足支持度阈值的要求,所以算法结束,给出结果,最终频繁项集为{ 面 包 , 牛 奶 面包,牛奶 面包,牛奶}{ 啤 酒 , 尿 布 啤酒,尿布 啤酒,尿布}。如图中第5步。
没错,你就是呼唤胜利的男神!通过上述分析,你已经基本掌握了Apriori算法!
那我们再来说一下先验性质是什么东西,有助于我们进一步学习Apriori算法。
先验性质:频繁项集的所有非空子集也一定是频繁的。简单讲,{ 面 包 , 牛 奶 , 啤 酒 面包,牛奶,啤酒 面包,牛奶,啤酒}是频繁三项集,则{ 面 包 , 牛 奶 面包,牛奶 面包,牛奶}{ 面 包 , 啤 酒 面包,啤酒 面包,啤酒</