关联分析

概述

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

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

最经典的关联分析算法之一就是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,而且这个杂货店也不一定是美国的。所以大家可以把这篇文章看做是一个关联算法的练习。

注:

作者:王亨

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

原文链接:http://blog.csdn.net/wzgl__wh/

R语言关联分析之啤酒和尿布相关推荐

  1. R语言︱情感分析—词典型代码实践(最基础)(一)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:词典型情感分析对词典要求极高,词典中 ...

  2. [R语言] R语言PCA分析教程 Principal Component Methods in R

    R语言PCA分析教程 Principal Component Methods in R(代码下载) 主成分分析Principal Component Methods(PCA)允许我们总结和可视化包含由 ...

  3. R语言效用分析 ( 效能分析、Power analysis)、除了pwr包之外还有其它包、例如、基因研究中的效能分析、MBESS包可用于各种形式的效能分析和最少样本量确定、其他效用分析包的简要介绍

    R语言效用分析 ( 效能分析.Power analysis).除了pwr包之外还有其它包.例如.基因研究中的效能分析(power analysis).MBESS包可用于各种形式的效能分析(power ...

  4. R语言效用分析 ( 效能分析、Power analysis)确定样本量、假设检验与两类错误、pwr包进行效用分析 ( 效能分析、Power analysis)的常用函数列表

    R语言效用分析 ( 效能分析.Power analysis)确定样本量.假设检验与两类错误.pwr包进行效用分析 ( 效能分析.Power analysis)的常用函数列表 目录

  5. R语言生存分析(survival analysis)与生存资料有关的概念详解

    R语言生存分析(survival analysis)与生存资料有关的概念详解 目录 R语言生存分析(survival analysis)与生存资料有关的概念详解 #生存分析

  6. R语言单因素方差分析(One-Way ANOVA)实战:探索性数据分析(EDA)、单因素方差分析模型结果解读(检查模型假设)、分析不同分组的差异TukeyHSD、单因素方差分析的结果总结

    R语言单因素方差分析(One-Way ANOVA)实战:探索性数据分析(EDA).单因素方差分析模型结果解读(检查模型假设).分析不同分组的差异TukeyHSD.单因素方差分析的结果总结 目录 R语言 ...

  7. R语言生存分析寿命表(life table)实战案例:比较两种药物治疗感染患者的生存时间

    R语言生存分析寿命表(life table)实战案例:比较两种药物治疗感染患者的生存时间 目录

  8. R语言生存分析COX回归分析实战:以乳腺癌数据为例

    R语言生存分析COX回归分析实战:以乳腺癌数据为例 目录

  9. R语言生存分析Log-rank假设检验组间生存曲线比较实战

    R语言生存分析Log-rank假设检验组间生存曲线比较实战 目录 R语言生存分析Log-rank假设检验组间生存曲线比较实战 #log-rank检验

最新文章

  1. 安卓setclicklistener函数没有_金主脚本按键精灵安卓按键初体验—乱斗西游2自动签到...
  2. 信息系统项目管理师历年论文题目
  3. 驾驶卡丁车 模拟,迷宫(女赛)
  4. PerfMon常用计数器
  5. Java数组排序解码
  6. idea中svn的更新、检出、提交操作
  7. (王道408考研操作系统)第四章文件管理-第一节2:文件的逻辑结构
  8. 暑期训练日志----2018.8.6
  9. mysql view在测试过程的应用
  10. 《Java编程的逻辑》终于上市了!,java开发面试笔试题
  11. php post获取dvi,如何利用http来发送post请求
  12. Mono 的Virtual PC 虚拟机
  13. tensorflow和keras的关系
  14. android镜像_如何在任何Windows PC上镜像和控制您的Android手机
  15. 聚合数据API用法简介
  16. matlab rand 2 3 4,matlab随机函数rand的使用
  17. 英语单词:through; fall through; write through
  18. C,C++,Python实现兔子生兔子问题
  19. artifact is missing.
  20. oracle数据库锁表很多,oracle锁表的原因_数据库

热门文章

  1. 内网穿透远程查看内网监控摄像头
  2. 阿卡迪亚大学计算机专业好考吗,普通高中学生如何考取阿卡迪亚大学?
  3. Espresso Test 3: Fragment Test
  4. 删除launchpad中无法正常移除的图标
  5. CSS聊天对话气泡伪类
  6. matlab求自相关频率,使用自相关求周期性
  7. 商丘学院计算机基础,商丘学院
  8. kali linux无线驱动安装,Kali Linux 安装WIFI无线网卡驱动:rtl8822bu 教程
  9. 流利阅读12.17 Why are the 'yellow vests' still protesting in France? His name is Macron
  10. 回顾2021几件印象深刻的事