Apriori算法整理

首先两个基本概念

支持度:A事件和B事件同时发生的概率

置信度:在A发生的事件中同时发生B的概率,P(B|A)=P(AB)/P(A)。

例子:[支持度:3%,置信度:40%]

支持度3%:意味着3%顾客同时购买牛奶和面包

置信度40%:意味着购买牛奶的顾客40%也购买面包

智慧商场模型:目标是找到经常一起购买的物品集合,从而优化商场货物的摆放,提高销售额。

计算一个集合(商品所有可能组合)的支持度指多少比例的交易记录包含该集合。

多少个组合就需要遍历多少遍整个交易记录

当商品量很大的时候,商品的所有可能组合数量也很大,计算量很大

为了降低所需的计算时间,出现了Apriori原理。

Apriori原理:

如果某个项集是频繁的,那么它的所有子集也是频繁的。

如果某个项集是非频繁的,那么它的所有超集也是非频繁的

Apriori算法流程包括连接和剪枝两个步骤,连接指的是自连接,剪枝则删去支持度不满足最小支持度阈值的非频繁项集。

发现关联规则,从频繁项集中找到强关联规则,什么是强关联规则呢?

指通过某个元素集推导出另一个元素集,比如有一个频繁项集{底板,胶皮,胶水},那么一个可能的关联规则是

那么一个可能的关联规则是{底板,胶皮}→{胶水},即如果客户购买了底板和胶皮,则该客户有较大概率购买胶水。这个频繁项集可以推导出6个关联规则:

  {底板,胶水}→{胶皮},

  {底板,胶皮}→{胶水},

  {胶皮,胶水}→{底板},

  {底板}→{胶水, 胶皮},

  {胶水}→{底板, 胶皮},

  {胶皮}→{底板, 胶水}

关联规则是如何计算的呢?

例:下图是某日超市的购物记录(注意Items已经排好序),使用上面叙述的Apriori算法实现了挖掘频繁项集,其中频繁项集I={i1,i2,i5}为频繁3-项集合L3,求由I产生哪些强关联规则?(最小支持度阈值为20%,最小置信度阈值为80%)



 


I的非空子集有{i1,i2}、{i1,i5}、{i2,i5}、{i1}、{i2}和{i5}。 
结果关联规则如下,每个都列出置信度 
1).i1 ∧i2=>i5 ,共10个事务;5个事务包含i1,i2;2个事务包含i1,i2和i5   confidence=2/5=40%,support=2/10=20%
2).i1 ∧i5=>i2 ,共10个事务;2个事务包含i1,i5;2个事务包括i1,i2和i5   confidence=2/2=100%,support=2/10=20%
3).i2 ∧i5=>i1 ,共10个事务;2个事务包含i2,i5;2个事务包含i1,i2和i5    confidence=2/2=100%,support=2/10=20%
4).i1=>i2 ∧i5 ,共10个事务;7个事务包含i1;2个事务包含i1,i2和i5       confidence=2/7=28%,support=2/10=20%
5).i2=>i1 ∧i5 ,共10个事务;8个事务包含i2;2个事务包含i1,i2和i5       confidence=2/8=25%,support=2/10=20%
6).i5=>i1 ∧i2 ,共10个事务;2个事务包含i5;2个事务包含i1,i2和i5       confidence=2/2=100%,support=2/10=20%

因最小置信度阈值为80%,最小支持度阈值为20%,则236规则符合要求,是频繁项集I={i1,i2,i5}产生的强关联规则且可以输出。

可以看出,Apriori算法需要经常扫描全表,效率并不高。

FP-Growth算法是Apriori算法的改进版

将树型结构引入算法中,将提供频繁项集的数据库压缩到一棵频繁模式树,但仍保留项集关联信息;与Apriori算法最大的不同有两点:

第一,不产生候选集

第二,只需要两次遍历数据库,大大提高了效率

总共扫描两次数据库,第一次扫描将每个item按照频数降序排序,第二次扫描即构造FP树

通过FP树可以递归挖掘频繁项集,但不能发现关联规则。



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值