6.2-Apriori算法

关联分析

  许多商业企业在日复一日的运营中积聚了大量的交易数据。例如,超市的收银台每天都收集大量的顾客购物数据。例如,下表给出了一个这种数据集的例子,我们通常称其为购物篮交易(market basket transaction)。表中每一行对应一个交易,包含一个唯一标识TID和特定顾客购买的商品集合。零售商对分析这些数据很感兴趣,以便了解其顾客的购买行为。可以使用这种有价值的信息来支持各种商业中的实际应用,如市场促销,库存管理和顾客关系管理等等。
这里写图片描述
  频繁集指的就是数据集中经常一起出现的组合,比如{bread,milk}就是频繁集中的一个例子,{diaper,beer}也是频繁项中的一个例子,而根据上表也可以找到{diaper to beer}的关联规则。而我们要通过关联分析大规模数据来发现数据之间的关系,如何定义关系的强弱呢?这时候我们用支持度(Support)和置信度(Confidence)来定义。

支持度:数据集中包含该项集记录所占的比例,上例中{beer}的支持度=3/5,{diaper,beer}的支持度=3/5。
置信度:针对像频繁集数量>=2的情况,例如{diaper,beer},那么置信度=支持度({diaper,beer})/支持度({diaper})。这意味着买beer的人一定会买diaper。

Apriori原理

  假设我们有一家经营着4种商品(商品0,商品1,商品2和商品3)的杂货店,2图显示了所有商品之间所有的可能组合:
这里写图片描述
  对于单个项集的支持度,我们可以通过遍历每条记录并检查该记录是否包含该项集来计算。对于包含N中物品的数据集共有 2N1 2 N − 1 种项集组合,重复上述计算过程是不现实的。
  研究人员发现一种所谓的Apriori原理,可以帮助我们减少计算量。Apriori原理是说如果某个项集是频繁的,那么它的所有子集也是频繁的。更常用的是它的逆否命题,即如果一个项集是非频繁的,那么它的所有超集也是非频繁的。
  在图3中,已知阴影项集{2,3}是非频繁的。利用这个知识,我们就知道项集{0,2,3},{1,2,3}以及{0,1,2,3}也是非频繁的。也就是说,一旦计算出了{2,3}的支持度,知道它是非频繁的后,就可以紧接着排除{0,2,3}、{1,2,3}和{0,1,2,3}。
这里写图片描述

举例说明频繁项算法

有4条交易
{A、C、D}
{B、C、E}
{A、B、C、E}
{B、E}
使用min_support=2作为支持度阈值,最后我们筛选出来的频繁集为{B、C、E}
这里写图片描述

  当用apriori算法找出频繁项集之后,可以用他们来产生关联规则,关联规则的计算方式为:

P(A|B)=P(AB)P(B) P ( A | B ) = P ( A B ) P ( B )

  即当B发生时,A发生的概率。我们可以用这个来进行推荐,如果我们指定置信度为70%,当P(A|B)>=70%时,我们将在客户买A商品时给他推荐B商品,例如当有个顾客买了把{B,E}放进购物车了,我们应该给她推荐什么商品呢?
  我们来计算{B,E}=>{C}的概率,即当他把{B,E}放进购物车了,我们给他推荐商品{C}的概率,这里计算的到:
置信度为:2/3=66.6%
  即他有50%的概率会选者C,到底推不推,看你设置的最小置信度了,如果大于你设置的最小置信度则推。

算法缺点:
  每次由(k-1)项集L(K-1)产生K项集L(K)时,自连接产生采用枚举的方式,而且产生的项集每次都得去扫描一下数据库
  如何提高Apriori算法的效率,有比较多的方法:基于散列,抽样等方式,比较出名的改进算法有FPGrowth算法

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值