作者:Sharp Sight

翻译:王亨

来源公众号:跟着菜鸟一起学R语言

前文推送:

rvest包,优雅的爬取猎聘网招聘信息

基于R语言构建的电影评分预测模型

jiebaR,从入门到喜欢

Catterplots包,让你绘制不一样的图

R语言怎么给中文分词?

JAVA如何与R完美结合起来

今天再来谈谈REmap包

ggplot2你需要知道的都在这...

R语言常用函数汇总

今天咱们来绘制一个知识图谱怎么样?

仅用四行代码就可以挖掘你的QQ聊天记录

今天来挖挖你的QQ聊天记录

干货收藏 | R语言之正则表达式

R语言| 使用REmap绘制超炫酷的地图

案例 | 通过R对照片进行情绪分析

我把我用R写的第一个爬虫就献给了国家

R | 对亚马逊新总部可能位置进行可视化

关联分析

概述

啤酒和尿布的故事,我估计大家都听过,这是数据挖掘里面最经典的案例之一。它分析的方法就关联分析。

关联分析,顾名思义,就是研究不同商品之前的关系。这里就发现了啤酒和尿布这两个看起来毫不相关的东西直接存在的微妙关系。

最经典的关联分析算法之一就是Apriori算法,也是数据挖掘十大算法之一。在R中就有一个包可以做关联分析——arules和arulesViz,前者用于关联规则的数字化生成而后者是前者的扩展包,它提供了几种对关联分析结果可视化技术,从分析到可视化一站式完成。

在了解学习关联分析之前,我们需要知道以下几个名词。

项集

英文名itemset,它是一个集合,举个例子,一个商场的所有商品的就是一个集合,也是一个项集。

关联规则

英文名Association Rule。一般记为X->Y,X成为关联规则的先决条件,Y称为关联规则的结果。关联规则有三个核心概念:支持度,置信度,提升度。

支持度

英文名Support。它表示的是项集{X,Y}同时含有X, Y的概率。该指标是建立强关联规则的第一个门槛,衡量所考察关联规则在量上的多少。我们可以通过最小阈值的设定,来剔除那些支持度较小的。

置信度

英文名 Confidence。它是第二个门槛,在这里我们也可以设置最小阈值。置信度表示在关联规则的先决条件X发生的条件下,Y发生的概率。如果跟前面的项集的概念联系到一块,置信度的意思就是如果在含有X的项集里面也含有Y的可能性。
confidence(X—>Y)=P(Y|X)=P(X, Y)/P(X)

提升度

英文名lift。提升度可以看做是对置信度的一个补充。置信度是在X发生的情况下,Y发生的概率。而提升度是在X发生的情况下,Y发生的概率与没有这个条件下项集中出现Y的可能性之比。
当lift为1时,表示X和Y相互独立,当lift值越大,关联性越强。

关联分析步骤

  • 选出满足支持度最小的阈值的所有项集。即频繁项集。该阈值一般设为5%—10%。

  • 从频繁项集中找出最小置信度的所有规则。置信度的阈值一般设置的比较高,如70%—90%。当然你要是想获取较多的关联规则,该阈值可以设置的较低。

apriori算法

arules包提供的apriori算法函数原型如下:

apriori(data, parameter = NULL, appearance = NULL, control = NULL)

现在来给大家介绍一下这些参数。

 参数 作用

data

数据

parameter

参数可以是一个列表,可以对支持度,置信度,每个项集所含项数的最大值最小值,以及输出结果等重要参数进行设置

appearance

可以对先决条件X和关联条件Y中具体包含的那些项目进行限制。默认是没有限制的。

control

控制算法的性能,也可以进行排序和报告进程。

现在就来分析一下啤酒和尿布的案例,arules包含有一个Groceries的数据集,该数据集是某杂货店一个月的真实交易数据,我今天就有这份数据来看看啤酒和尿布的故事是不是都是大人们编出来骗我们的。

library(arules)
data("Groceries")

由于数据集中酒的种类比较多,有canned beer,bottled beer,wine等,所以我直接把尿布napkins作为后继。

rules<-apriori(Groceries,parameter = list(supp=0.001,conf=0.22),                appearance = list(rhs="napkins",default="lhs"))

在不断调整支持度和置信度,最终调到0.001和0.22,结果还是比较理想的,如果再大一点,生成的频繁项集就会比较少,而且更重要的没有包含啤酒的的项集,如果再小一点,生成的项集又太多,但包含啤酒的项集也不是很多。此时支持度为0.001,置信度为0.22,总共有53个频繁项集,但只有一条包含啤酒的频繁项集。当把支持度或置信度再调大一点,就没有包含酒的频繁项。

现在使用arulesViz包对结果进行可视化

library(arulesViz) plot(rules)

关联规则点的颜色深浅有提升度lift值得高低来决定的。
从图片中可以看到提升度高的,支持度比较低,置信度较高。

plot(x, method = NULL, measure = "support", shading = "lift",    interactive = NULL, engine = "default", data = NULL, control = NULL, ...)

如果我们要查看每个点所代表的项集,可以使用参数interactive。这样绘制的图形是交互式的。点击inspect就可以获取选定点的详细信息,点击一个点,再点filter按钮,然后点击右侧颜色条,就可以将小于该关联规则lift的其他关联规则点都过滤掉。
当一块点比较密集时,可以选两个点构成一个矩形区域,再点击zoom in就可把该区域放大,点击zoom out就会缩小。点击end就是退出。可以看下面的演示图。

plot(rules, interactive=TRUE)

这个包对结果的可视化效果还是很棒的,函数也提供了许多参数。下面是我简单绘制的,仅供“观赏”。

plot(rules6, method = "grouped")

其中measure参数可以控制散点的大小和颜色。

plot(rules6, method = "grouped",measure = "lift")

plot(rules6, method = "graph")

还有其他参数,在用的时候可以再好好研究。

分析完之后我有种被骗的感觉,为什么会这样,53个频繁项集,但只有一条包含啤酒的频繁项集。也许关联最强的不用分析我们都知道,关联最强的也许就是常识,往往那些关联不太强且容易被忽视到的才是最值得我们去发现的。

退一步想想,也许因为该数据量太小,只有一个月的,另外,这是数据来自一个grocery,并不是像沃尔玛那种supermarket,而且这个杂货店也不一定是美国的。所以大家可以把这篇文章看做是一个关联算法的练习。更多看法咱们留言区见。

 大家都在看 

2017年R语言发展报告(国内)

精心整理 | R语言中文社区历史文章合集(作者篇)

公众号后台回复关键字即可学习

回复 爬虫            爬虫三大案例实战  
回复 Python       1小时破冰入门

回复 数据挖掘     R语言入门及数据挖掘
回复 人工智能     三个月入门人工智能
回复 数据分析师  数据分析师成长之路 
回复 机器学习      机器学习的商业应用
回复 数据科学      数据科学实战
回复 常用算法      常用数据挖掘算法

啤酒和尿布的故事是真的吗相关推荐

  1. 再探传说──啤酒与尿布的故事

    在数据分析的领域里,有一个非常经典的故事,这个故事常常被用来强调数据分析的价值. 美国大型超市沃尔玛(Walmart),利用数据分析,发现每周五的晚上,啤酒与尿布的销售量呈现正向关系.也就是每个周五的 ...

  2. 啤酒与尿布的故事可以休矣

    其实到现在我还在怀疑「啤酒和尿布」(Beer and Nappies)故事的真实性.这个故事最开始应该是从一些做商务智能(BI) 的软件厂商那里传出来的,神乎其神.按理说,这个故事应该给超级市场以无限 ...

  3. 数据挖掘思维和实战20 Apriori 与 FP-Growth:不得不再说一遍啤酒与尿布的故事

    这一课时,我们进入第四种数据挖掘算法--关联分析的学习.关联分析是一种无监督学习,它的目标就是从大数据中找出那些经常一起出现的东西,不管是商品还是其他什么 item,然后靠这些结果总结出关联规则以用于 ...

  4. 数据挖掘著名案例——啤酒与尿布

    前言 "啤酒与尿布"的故事是营销届的神话,"啤酒"和"尿布"两个看上去没有关系的商品摆放在一起进行销售.并获得了很好的销售收益,这种现象就是 ...

  5. 啤酒与尿布?挖掘商品之间的关联性分析(1):机器学习之Apriori算法

    从这个贸易战看:强权即是真理,没有所谓的自由贸易和平等.中国之大已容不下一个安静的键盘.不过是又一次鸦片战争.除了愤怒还是愤怒,除了一心想为崛起而澎湃还是一心想为崛起而澎湃.中华文明三四千年的历史都是 ...

  6. 啤酒和尿布:一文看懂关联规则

    啤酒和尿布:一文看懂关联规则 一.关联规则 二.Apriori算法 2.1 相关概念 2.2 实现步骤 2.3 代码实现 谈到大数据在零售业的应用,不得不提到一个经典的营销案例–啤酒和尿布的故事,有个 ...

  7. 如何用Python挖掘“啤酒和尿布”的关系?(Apriori算法挖掘关联规则)

    一.什么是关联规则挖掘? "啤酒与尿布"的故事大家都听过吧,一些年轻的父亲在去超市给孩子买尿布的时候,会顺便给自己买点啤酒,超市发现这个规律之后,就把啤酒和尿布的货架放在一起,这次 ...

  8. R语言关联分析之啤酒和尿布

    关联分析 概述 啤酒和尿布的故事,我估计大家都听过,这是数据挖掘里面最经典的案例之一.它分析的方法就关联分析. 关联分析,顾名思义,就是研究不同商品之前的关系.这里就发现了啤酒和尿布这两个看起来毫不相 ...

  9. 还记得啤酒和尿不湿的故事吗?我用Python带你一起玩玩关联规则!

    大部分朋友应该听过"啤酒"和"尿布"的故事--超市分析顾客的商品购买记录,发现"啤酒"和"尿布"经常被一起购买,背后的原 ...

最新文章

  1. 同时测试多个服务是否存活的脚本[shell和perl]
  2. HTML form 标签的 method 属性
  3. Android模仿京东登录注册,Android:布局实例之模仿京东登录界面
  4. 阿里云弹性计算产品负责人:让客户用上本地化的公共云
  5. 模拟请求分页式存储管理 ---4种置换算法
  6. 【解题报告】Leecode 438. 找到字符串中所有字母异位词——Leecode每日一题系列
  7. oracle控制文件修复,oracle控制文件的损坏或完全丢失的恢复办法
  8. 【Java】Java 反射 object is not an instance of declaring class
  9. Java Web学习总结(19)——web.xml配置详解
  10. 灭霸—个人冲刺(5)
  11. 泰拉瑞亚Terraria for Mac(动作冒险游戏)
  12. IT、电商、系统、架构等名称名词解释
  13. python热力相关系数图_【Python可视化6】Seaborn之heatmap热力图
  14. java 常用的时间相关转化
  15. Python爬虫技术及PyQt5界面编程实现12306火车票查询
  16. 「镁客·请讲」七鑫易维黄通兵:追求更自然的人机交互,眼球追踪技术正在路上...
  17. python壁纸程序代码_40行Python代码+奇技淫巧搞定专属电脑壁纸库
  18. Mysql存储过程-新增数据时多条件判定是否已经存在某值
  19. BadUSB+ProMicro+Arduino做一个插入U盘自动攻击
  20. python一边接收数据,一边对数据进行实时处理导致数据丢失

热门文章

  1. 基于java智能家居,基于JAVA的智能家居控制系统的设计(信息控制端的设计)-论文二稿...
  2. 兔斯基QQ表情全集GIF篇下载(到8月2日)234整理
  3. 养生之道--21天改变体质
  4. 服务器安全狗拦截微信,服务器软件安全狗误拦截百度蜘蛛
  5. 蝙蝠软件显示未能连接到服务器,蝙蝠侠无法连接服务器如何解决
  6. CEC2017基础函数说明Python版本
  7. (7,3)循环码编码译码
  8. HDMI_CECARC
  9. 安卓学习笔记5.6—列表视图
  10. mtk平台 声音从mic到speaker loadspeaker handset间的关系