Apriori算法_自整理
声明:本篇所有内容均为本人上网学习整理所得,用于自己复习与交流,侵删。
所借鉴的文章:
https://blog.csdn.net/sanqima/article/details/42746419
https://blog.csdn.net/qq_43634001/article/details/93360360
https://blog.csdn.net/zaishuiyifangxym/article/details/97645929
还有B站菊安酱的视频
大家可以查看这些文章和视频来学习。
关联规则挖掘的本人提法:一家超市想要提高销量,想要从客户的购物清单中找寻商品间的关联规则,如:买尿布的人百分之70会购买啤酒。
Apriori就是寻找关联规则的算法。效率较低
定义:
关联规则:一个有方向的规则,比如尿布 => 啤酒 [support=2%;confidence=70%] 这里表示的是,买尿布的人百分之七十会买啤酒,但并不是表示买啤酒的人可能会买尿布,仔细思考一下,这面向的是两个人群,只是其中有交集。
项:一个商品类别就是一个项
项集:即项的集合,比如{尿布,啤酒,花生,火腿,套套}
支持度(support):一个项集在整个数据集中出现的概率,或者说所占百分比
置信度(confidence):针对于关联规则的指标,其实是概率论中的知识,公式如下:即AB的支持度除以A的支持度
提升度:置信度除以另一个项的支持度,提升度等于1时,表明两者独立,大于1,表示该关联规则是有效的强关联规则,小于等于1,则无效(也许这只是因为一次打折)。如果,在买尿布的前提下,有百分之70的几率会买啤酒,而买啤酒的几率本身就为百分之70,那么简单认为买尿布对买啤酒的概率没有提升,或者说无作用。
频繁项集:通过自己设定最小支持度,满足最小支持度的项集被称为频繁项集
Apriori算法原理:如果一个项集是频繁的,则它的所有子集一定也是频繁的
逆否命题:如果一个子集是非频繁的,那么包含该子集的任何集都是非频繁的(超集)
Apriori算法流程:
先生成只包含单项的项集的集C1,然后计算C1中各项集的支持度,不满足最小支持度的项集(即非频繁项集)将被筛选出去(这里的筛选是根据Apriori的逆否原理进行的)。
接下来自链接生成只包含两个项的项集的集C2,后续步骤相同。
最后将所得的频繁项集输出,生成相应的关联规则,并计算其置信度,例如:
{1,2,3}
则计算:1=>{2,3},2=>{1,3},1=>{2},{2,3}=>1等关联规则的置信度。