Apriori算法原理

关联分析

从大规模数据集中寻找物品间的隐含关系,就是关联分析(关联规则学习)。比较常用的关联规则挖掘的方法是Apriori算法。
先举例来说明什么是关联分析。下面是某个杂货店的交易清单:

交易号码商品
001豆奶,莴苣
002莴苣,尿布,啤酒,甜菜
003豆奶,尿布,啤酒,橙汁
004莴苣,豆奶,尿布,啤酒
005莴苣,豆奶,尿布,橙汁

相关概念:

  1. 项集:由0个或多个项组成的集合。
    001中有2个项(豆奶,莴苣);002中有4个项(莴苣,尿布,啤酒,甜菜)。{豆奶,甜菜}就可称之为2项集;{莴苣,尿布,啤酒,甜菜}是4项集。

  2. 频繁项集:经常出现在一起的物品集合。
    比如{豆奶,尿布,啤酒}

  3. 支持度:数据集中包含该项集的记录所占的比例。
    {豆奶}的支持度:Sopport(豆奶) = 4/5 = 0.8
    {豆奶,尿布}的支持度:Sopport(豆奶,尿布) = 3/5 = 0.6

  4. 置信度(可信度,confidence)
    规则X=》Y的置信度表示数据集中包含X的有多大可能也包含Y。confidence(X=>Y)
    confidence(X=>Y) = Support(XUY)/Support(X)
    confidence(豆奶=>莴苣) = S u p p o r t ( 豆 奶 U 莴 苣 ) S u p p o r t ( 豆 奶 ) {Support(豆奶U莴苣)}\over{Support(豆奶)} Support()Support(U) = 3 / 5 4 / 5 {3/5}\over{4/5} 4/53/5 = 3/4 = 0.75
    也就是“豆奶=>莴苣”的可信度为75%,即有75%的可能性买了豆奶的人会买莴苣。

Apriori原理

假如有4种商品:商品0,商品1,商品3,商品4。现在想知道哪些是经常被购买的商品组合(可能同时购买的商品种类),通过穷举的方式可以看到可以有下面的组合形式。

在这里插入图片描述
想找到经常在一起购买的物品集合(项集),在上面的描述中需要计算支持度。比如对于集合{0,2},在计算其支持度时,需要遍历每一条记录,并查询该记录中是否包含0和2,如果包含就对计数值count加1。遍历完所有的数据之后,通过计数值count来除以总的交易记录数,即可得支持度。

上面的4种商品中,可能出现的组合({0},{1},{2},{3},{01},{02},{03},{1,2},{1,3},{2,3},{0,1,2},{0,1,3},{0,2,3},{1,2,3},{0,1,2,3})有4+6+4+1=15种,那么单单找{0,2}就需要遍历数据15次,即

4种商品,有 C 4 1 + C 4 2 + C 4 3 + C 4 4 = 2 4 − 1 {C_4^1}+{C_4^2}+{C_4^3}+{C_4^4} = {2^4-1} C41+C42+C43+C44=241商品组合;
n种商品,有 2 n − 1 {2^n-1} 2n1种组合;
所以,一旦商品数目增加,计算时间就很大了。

Apriori原理就是为了降低计算时间而出现的!因为Apriori原理可以减少可能感兴趣的项集。Apriori原理就是说,如果某个项集是频繁的,那么它的所有子集也是频繁的。
即在上边的问题中,如果{0, 2}是频繁的,那么{0}、{2}也是频繁的;但正面看,好像没什么用,但反过来想一想,也就是说如果一个项集不是频繁的,那么它的超集({1,2}的超集是{0,1,2},{1,2,3},{0,1,2,3})也不是频繁的。
也就是说对于项集{1,2},若已知它是不频繁的,那么就推断{0,1,2},{1,2,3},{0,1,2,3}也是不频繁的,也就不再计算{0,1,2},{1,2,3},{0,1,2,3}的支持度,这就在一定程度上减少了计算量。

在这里插入图片描述

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值