首页 > 编程语言 > 详细

关联规则挖掘-Apriori算法

时间:2020-02-16 01:20:42      阅读:117      评论:0      收藏:0      [点我收藏+]

1. 搞懂关联规则中的几个重要概念:支持度、置信度、提升度;
2. Apriori 算法的工作原理;
3. 在实际工作中,我们该如何进行关联规则挖掘。

一、搞懂关联规则中的几个概念(支持度、置信度、提升度)

Apriori 算法的核心就是理解频繁项集和关联规则。在算法运算的过程中,还要重点掌握对
支持度、置信度和提升度的理解。

 

超市购物的例子,下面是几名客户购买的商品列表:

技术分享图片

1.1、什么是支持度呢?

支持度是个百分比,它指的是某个商品组合出现的次数与总次数之间的比例。支持度越
高,代表这个组合出现的频率越大。


在这个例子中,我们能看到“牛奶”出现了 4 次,那么这 5 笔订单中“牛奶”的支持度就
是 4/5=0.8。
同样“牛奶 + 面包”出现了 3 次,那么这 5 笔订单中“牛奶 + 面包”的支持度就是
3/5=0.6。

1.2什么是置信度呢?

它指的就是当你购买了商品 A,会有多大的概率购买商品 B,在上面这个例子中:
置信度(牛奶→啤酒)=2/4=0.5,代表如果你购买了牛奶,有多大的概率会购买啤酒?
置信度(啤酒→牛奶)=2/3=0.67,代表如果你购买了啤酒,有多大的概率会购买牛奶?

我们能看到,在 4 次购买了牛奶的情况下,有 2 次购买了啤酒,所以置信度 (牛奶→啤酒)=0.5,

而在 3 次购买啤酒的情况下,有 2 次购买了牛奶,所以置信度(啤酒→牛奶)=0.67。

所以说置信度是个条件概念,就是说在 A 发生的情况下,B 发生的概率是多少。

1.3什么是提升度呢?

我们在做商品推荐的时候,重点考虑的是提升度,因为提升度代表的是“商品 A 的出现,
对商品 B 的出现概率提升的”程度。

提升度 (A→B)= 置信度 (A→B)/ 支持度 (B)


这个公式是用来衡量 A 出现的情况下,是否会对 B 出现的概率有所提升。
所以提升度有三种可能:
1. 提升度 (A→B)>1:代表有提升;
2. 提升度 (A→B)=1:代表有没有提升,也没有下降;
3. 提升度 (A→B)<1:代表有下降。

 1.4频繁项集 itemsets

itemsets, rules = apriori(data, min_support=0.5, min_confidence=1)

就是支持度大于等于最小支持度 (Min Support) 阈值的项集

 1.5关联规则rules

例如A与B出现的概率很高

data数据集是列表形式,里面每一个值可以是集合或者列表

 

k=1时,单个商品

例如啤酒

{1:{(‘啤酒‘,):3,(‘尿布’,):5}

2:{(‘啤酒’,‘尿布’):3,}

}

from efficient_apriori import apriori
# 设置数据集
data = [(牛奶,面包,尿布),
(可乐,面包, 尿布, 啤酒),
(牛奶,尿布, 啤酒, 鸡蛋),
(面包, 牛奶, 尿布, 啤酒),
(面包, 牛奶, 尿布, 可乐)]
# 挖掘频繁项集和频繁规则
itemsets, rules = apriori(data, min_support=0.5, min_confidence=1)
print(itemsets)
print(rules)

 

data 是个 List 数组类型,其中每个值都可以是一个集合。实际上你
也可以把 data 数组中的每个值设置为 List 数组类型,比如:

data = [[牛奶,面包,尿布],
[可乐,面包, 尿布, 啤酒],
[牛奶,尿布, 啤酒, 鸡蛋],
[面包, 牛奶, 尿布, 啤酒],
[面包, 牛奶, 尿布, 可乐]]

 

# 挖掘频繁项集和关联规则
itemsets, rules = apriori(data, min_support=0.5, min_confidence=1)
print(itemsets)
print(rules)

最小支持度和最小置信系数,这样我们可以找到支持度大于 50%,置信系数为 1
的频繁项集和关联规则。

技术分享图片

你能看出来,宁浩导演喜欢用徐峥和黄渤,并且有徐峥的情况下,一般都会用黄渤。

 

Apriori原理为:如果某一项集是频繁的,则它的所有子集也是频繁的,反之,如果某一项集是非频繁的,则其所有超集也是非频繁的。

生成关联规则需要:频繁项集列表、包含频繁项集支持数据的字典、最小可信度。

用更高效的方法来进行挖掘频繁项集:使用FP-growth算法来高效发现频繁项集

互联网在处理庞大的用户数据时就是使用FP-growth算法,来发现频繁项集,找出经常一起出现的词对。

 

二、提出问题

导演是如何选择演员的

三、获取数据

https://movie.douban.com/

在豆瓣电影中输入导演名字

 周星驰

技术分享图片

 

采用Python,进行爬虫

 

 

 

 

1111

关联规则挖掘-Apriori算法

原文:https://www.cnblogs.com/foremostxl/p/12309809.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!