大家好,又见面了,我是你们的朋友全栈君。
文章目录- 1. “啤酒与尿布”的案例
- 2. Aprior算法核心术语
- 事物集
- 记录(事务)
- 项目(项)
- 项目集(项集)
- K项集
- 支持度(Support)
- 置信度(Confidence)
- 最小支持度(min_support)
- 最小置信度(min_confidence)
- 提升度
- 频繁K项(目)集
- 候选K项(目)集
- 3. Aprior算法的三大性质(关联规则的三大性质)
- 4. Aprior算法实现过程
- 5. 数据挖掘
- 5.1 寻找关联属性
- 5.2 生成关联规则
- 5.3 更加严谨的栗子
- 6. Aprior算法的优缺点
- 6.1 改进Aprior算法
- 6.2 FP-growth算法
- 6.3 FP-growth算法实例
- 6.4 FP-growth算法优缺点
- 事物集
- 记录(事务)
- 项目(项)
- 项目集(项集)
- K项集
- 支持度(Support)
- 置信度(Confidence)
- 最小支持度(min_support)
- 最小置信度(min_confidence)
- 提升度
- 频繁K项(目)集
- 候选K项(目)集
- 5.1 寻找关联属性
- 5.2 生成关联规则
- 5.3 更加严谨的栗子
- 6.1 改进Aprior算法
- 6.2 FP-growth算法
- 6.3 FP-growth算法实例
- 6.4 FP-growth算法优缺点
国际权威的学术组织the IEEE International Conference on Data Mining (ICDM) 2006年12月评选出了数据挖掘领域的十大经典算法:C4.5
, k-Means
, SVM
, Apriori
, EM
, PageRank
, AdaBoost
, kNN
, Naive Bayes
, CART
这十个算法涵盖了分类、聚类、统计学习、关联分析和链接分析等重要的数据挖掘研究和发展主题
本节主要研究Apriori
算法
1. “啤酒与尿布”的案例
“啤酒与尿布”
的故事产生于20世纪90年代的美国沃尔玛超市中,沃尔玛的超市管理人员分析销售数据时发现了一个令人难于理解的现象:在某些特定的情况下,“啤酒”
与“尿布”
两件看上去毫无关系的商品会经常出现在同一个购物篮中,这种独特的销售现象引起了管理人员的注意,经过后续调查发现,这种现象出现在年轻的父亲身上。
在美国有婴儿的家庭中,一般是母亲在家中照看婴儿,年轻的父亲前去超市购买尿布。父亲在购买尿布的同时,往往会顺便为自己购买啤酒,这样就会出现啤酒与尿布这两件看上去不相干的商品经常会出现在同一个购物篮的现象。如果这个年轻的父亲在卖场只能买到两件商品之一,则他很有可能会放弃购物而到另一家商店,直到可以一次同时买到啤酒与尿布为止。沃尔玛发现了这一独特的现象,开始在卖场尝试将啤酒与尿布摆放在相同的区域,让年轻的父亲可以同时找到这两件商品,并很快地完成购物;而沃尔玛超市也可以让这些客户一次购买两件商品、而不是一件,从而获得了很好的商品销售收入,这就是“啤酒与尿布”故事的由来。
当然“啤酒与尿布”的故事必须具有技术方面的支持。1993年美国学者Agrawal
提出通过分析购物篮中的商品集合,从而找出商品之间关联关系的关联算法,并根据商品之间的关系,找出客户的购买行为。艾格拉沃从数学及计算机算法角度提出了商品关联关系的计算方法——Aprior算法
。沃尔玛从上个世纪90年代尝试将Aprior算法
引入到POS
机数据分析中,并获得了成功,于是产生了“啤酒与尿布”的故事。
什么是关联规则挖掘?
简单的来讲关联规则挖掘
就是用于发现数据库中属性之间的有趣联系。
如:顾客在购买牛奶时,是否也可能同时购买面包?
根据关联规则,我们能够做什么?
例如上面的栗子,我们可以得出结论购买牛奶的人一定会购买面包,所以我们可以:
- 帮助商家进行有针对性的促销
- 进行合理的货架摆放
2. Aprior算法核心术语
“啤酒与尿布”
是通过人工观察并发现事物规律的典型栗子,这也引出数据挖掘十大算法之一的Aprior算法
——关联规则挖掘算法
,这个算法其实并不像其他算法这么难,甚至算法本身也并没有提出什么新的概念
我们先规定一个商品表单,用来理解下面出现的一些术语
单号 | 商品 |
---|---|
1 | ABCD |
2 | ABCE |
3 | BDEF |
4 | BCDE |
5 | ACDF |
6 | ABC |
7 | ABE |
事物集
如上面的表格,{ABCD,ABCE,BDEF….},所有的流水记录构成的集合
记录(事务)
如上面的表格,我们把ABCD叫做一条记录(事物)
项目(项)
一条记录中A、B、C … 叫做一个项目(项)
项目集(项集)
由项组成的集合,如{A,B,E,F},{A,B,C}就是一个项集
K项集
项集中元素的个数为K,如{A,B,E,F}就是4项集
支持度(Support)
sup(x) = 某个项集X在事物集中出现的次数 / 事物集中记录的总个数
如X = {A,C} 则Sup(X)= 4 / 7 = 0.57
置信度(Confidence)
置信度其实就是某个项集的条件概率。Con(x=>y) = sup(xy) / sup(x) , 对应条件概率的算法:P(y | x) = P(xy) / p(x)
例如:X = {A}, Y = {C} 则Con(X=>Y)= Sup(