[翻译]机器学习之啤酒与纸尿裤-Association Rules and Apriori algorithm
原文链接:https://towardsdatascience.com/association-rules-2-aa9a77241654在营销界,一直流传有一个著名的“纸尿裤”案例:沃尔玛对旗下一家超市销售数量进行设定跟踪,发现一个奇怪现象,啤酒与尿不湿的销量在周末会出现成比例增长。超市对这个现象进行分析和讨论,并派出专员在卖场进行全天候观察。最后,谜底终于水落石出,发现啤酒和尿不湿多为男人在周末采购,而且购买这两种产品的顾客一般都是年龄在25至35周岁的青年男子,由于孩子尚在哺乳期,多数男人都会在下班后带尿不湿回家,而周末正是美国体育比赛的高峰期,一杯啤酒就着比赛是多么惬意的事!这家超市从中受到启发,对物品摆放进行了调整,将卖场内原来相隔很远的妇婴用品区与酒类饮料区的空间距离拉近,减少顾客行走时间,将啤酒与尿不湿摆放在一起,同时将牛肉干等简便下酒食品也摆放在一起,这样下来,全年营业额增加了数百万美元。这个著名的“纸尿裤”案例,直到今天,都被营销界广为称颂,奉为营销界精准营销的经典案例。那么,在大数据的今天,我们如何去挖掘更多的啤酒与纸尿裤的关系,创造更多的百万美元奇迹呢?当当当当当! 这时关联学习就派上了用场。我们来看看这个能轻松挣百万的算法长啥样子。
1.先导(Antecedent)和后继(Consequent)
如下图示,它包含两个概念,先导(Antecedent)和后继(Consequent)。具体地,在购物情形中,表示购买了牛奶和鸡蛋的顾客也会购买牛奶,那么商场就可以把面包、鸡蛋和牛奶放在一起或者是打包销售。
2.如何建立如上的先导和后继的关系呢?-量化指标
这里我们需要又引进几个概念
(1)Support-支持度
具体到购物场景里,这个指标描述了一个商品(例如上图中的牛奶)或者一个商品集(例如上图中的面包和鸡蛋组成的集合)被购买的概率。
例如面包被购买的频率远远大于沐浴露的频率,因此可以预料到,面包的Support值将远大于沐浴露。
再比如,考虑itemset1 = {面包、牛奶},itemset2={面包、沐浴露},由于大部分人会同时买面包和牛奶,而同时买面包和沐浴露的人则很少。因此,itemset1的support值将远大于itemset2的support值。
(2)Confidence-置信度
这个指标描述了买了商品X前提下,顾客买商品Y的概率。其实就是条件概率。具体到购物场景里,这个指标描述了买麦片的人里面有多少人会买牛奶的问题。
(3)Lift
Support-支持度替我们筛去了数据量不足的一些数据,例如,10000词交易中,至少发生过50次的商品我们才认为这个商品的数据是可靠的,即对于交易次数小于0.005的商品,我们认为这批商品没有足够多的数据取挖掘关联关系,因此,这部分商品将被舍弃。
而Confidence-置信度给予我们商品X与Y的关系,例如买麦片的人大多数也会买牛奶,那么麦片->牛奶的置信度会很高。
那么凭着这两个指标,我们是否就能决定不同商品之间的关联关系呢?我们来看几个例子。
根据市场分析酸奶→牛奶的置信度很高。那么牙刷→牛奶的置信度怎样?
答案是也很高!
对于一个购买频次高的商品,无论关联规则中的先导(Antecedent)是什么,该关联规则的Confidence-置信度都会很高。
读者们可以就以上图片中的案例自己分析一下。如上图示,有100次交易,其中10次交易是同时购买了牛奶和牙刷,70次只买了牛奶,4次仅仅买了牙刷。
这个时候,最后一个指标Lift就发挥作用了。话不多说,咱直接上公式:
这时我们考虑前面说的牙刷→牛奶的例子,它的confidence=10/(10+4)=0.7, 而买牛奶的频次比为80/100=0.8.
从上面两个数字我们会发现,买了牙刷后,买牛奶的概率(0.7)比原来无任何先验知识的情况下买牛奶的概率(0.8)要低。
也就是说,尽管牙刷→牛奶的置信度很高,小于1的Lift值表示,购买牙刷对于提升购买牛奶概率没有一点点帮助!!!
3.Association Rule Mining - Apriori Algorithm
有了以上的一些度量指标后该如何在成万上亿的商品中去挖掘重要商品之间的关系呢? 穷举是不现实的,仅仅10个商品就可以构建57000条关系。关系的数量随着商品的数量呈指数级上升。这时候, Apriori就派上了用场。
总的来说,关系生成可以分解为三步。
第一步是生成商品集合。例如{面包,鸡蛋,牛奶}。
第二步是由第一步的候选集合生成候选关系集合。例如基于上述的集合,对集合进行二分生成关系,可以有{面包→鸡蛋,牛奶},{面包,鸡蛋 → 牛奶} 等。
最后在候选关系集合选取topk lift的关系集合。
(1)生成候选商品集合
在所有的商品集合中,我们希望筛选出高频次的商品集合作为关系挖掘的基础。
Apriori算法可以加速我们筛选商品集合的过程。它有个重要的"定理",叫Apriori principle,也叫anti-monotone property of support:
频繁项集的所有子集都是频繁的,即
非频繁项集的超集都是非频繁的,即
这一性质能大大减少搜索频繁项集时的搜索空间。
{面包,鸡蛋}的交易数量>={面包,鸡蛋,蔬菜}的交易数量
(2)由候选商品集合生成候选关系集合
对于商品集合 {Bread,Egg,Milk,Butter},可以生成以下的关系集合:
(Egg, Milk, Butter → Bread), (Bread, Milk, Butter → Egg), (Bread, Egg → Milk, Butter), (Egg, Milk → Bread, Butter), (Butter→ Bread, Egg, Milk)
confidence也遵从anti-monotone property,即
(A,B,C→ D) ≥ (B,C → A,D) ≥ (C → A,B,D)。
对于学过概率的同学来说,这点很容易理解,我们来回忆下Confidence的公式:
对于Confidence(A,B,C→ D) , Confidence(B,C → A,D) , Confidence(C → A,B,D),由于分子都一样,都是P(ABCD),对于分母
P(ABC) <=P(BC) <=P( C )
应用如上规则后,我们可以省去大量的计算。
(3)在候选关系集合选取topk lift的关系集合
[翻译]机器学习之啤酒与纸尿裤-Association Rules and Apriori algorithm相关推荐
- 关联规则(Association Rules)
关联规则(Association Rules) 1. 关联规则的产生 2. 质疑 !关联规则是真的吗? 3. 如果是假的,研究还有意义吗? 4. 什么是关联规则 5. 应用场景 1. 关联规则的产生 ...
- 关联规则 Association rules
Association rules 什么是关联规则 定义介绍 关联规则算法 Apriori算法 Apriori原理 连接步和剪枝步 实例解释 代码实现 FP-Tree算法 FP-Tree原理结构 项头 ...
- Association Rules 关联规则
Association Rules 关联规则 除了apriori和FPGrowth目前还有那些方法用来发现关联规则? 关键词: 频繁项集,apriori算法,FPGrowth,关联规则, 频繁项集评估 ...
- 关联规则(Association Rules)python实现
前言 试着用python实现关联规则(Apriori算法),代码问题不少.转专业的一只小菜鸡,初学代码,写的很简陋,希望各位大牛能指出不足之处. 代码 输入是num个随机长度.随机字母组合的列表. 通 ...
- 运用RapidMiner进行关联分析(算子有read csv,select attribute,fp-growth,create association rules)
目录 问题 导入数据 方法一:通过工具栏选择Import,导入数据"数据集-关联分析.csv" 编辑方法二:通过算子载入数据集 数据探索 结果透视图 Step1:检查数据缺失值. ...
- 关联规则(Association Rules)学习
关联规则(Association Rules)是反映一个事物与其他事物之间的相互依存性和关联性,是数据挖掘的一个重要技术,用于从大量数据中挖掘出有价值的数据项之间的相关关系. 常见的购物篮分析 该过程 ...
- 打算翻译机器学习工具包--SHOGUN使用文档
SHOGUN是一个在机器学习尤其支持向量机方面很出色的开源项目,现在已经包含在Debian安装包中.自己现在正在学这方面的知识,但SHOGUN在国内使用好像很少,没有什么中文文档.虽然本人的E文很一般 ...
- 关联规则(Association Rules)笔记
1 关联规则产生的原因:购物篮问题 关联规则最初是为了解决购物篮问题而产生.上世纪九十年代,美国的沃尔玛超市发现,啤酒和尿布这两种完全不着边际的商品竟然有很高的概率一起被购买. 在一段时间之后,他终于 ...
- 【机器学习】关联规则挖掘算法 + 三大案例实战 + Apriori算法 + Python代码实现
文章目录 一.关联规则概述 1.1 关联规则引入 1.2 关联规则相关概念介绍 1.2.1 样本.事务.项集.规则 1.2.2 支持度.置信度 1.2.3 提升度 1.2.4 所有指标的公式 二.Py ...
最新文章
- docker部署Javaweb环境数据库连接问题
- 【互联网今日大事儿记】春运抢票开始啦!
- QML UI 与逻辑分开
- 017 包扫描器和标记注解
- 软件测试之-测试用例写作规范
- java程序单引号报错,javapoigetInpuStream报错br/是这样的, 爱问知识人
- android电话系统,Android电话系统之-rild.doc
- wps文档提取关键词_Cisdem Document Reader5实用文档阅读器
- Windows下安装node
- Python不再为字符集编码发愁,使用chardet轻松解决你的困扰。
- c语言规范标准c99中文版下载,c99标准找到了,中文HTML页面
- Python Tricks(十三)—— 欧几里得算法
- 广工大第12届ACM校赛A
- 移动应用UI设计模式pdf
- 中学计算机基础知识,初中信息技术学业水平考试计算机基础知识考点大全(重点汇总)...
- 马哥linux脚本,马哥全套linux运维教程
- 微信小程序/校园社区论坛/微信云开发/云函数
- 杨超越的经历故事性太强了,现实版的娱乐圈爽文
- jQuery小游戏之锅打灰太郎
- c汇编语言例题,第三章 汇编语言程序设计例题习题
热门文章
- UiPath自动化机器人有关版本问题解决和Robot连接到Orchestrator
- css系列-ol,ul
- pandas入门PPT
- 怎么输出链表最后一个元素_听说AI将是人类最后一个发明?听听他怎么说!
- antd Upload组件上传状态一直处于uploading
- yandex浏览器_15分钟内制作自己的文本编辑器:Yandex的实践
- oracle 远程访问配置,C#教程之Oracle 远程访问配置
- 分析和讯博客数据访问数和评论数
- android的照片恢复,安卓手机删除的照片如何恢复呢
- windows无法启动MySQL服务(位于本地计算机上)。错误1067:进程意外终止