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

注:

作者:王亨

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

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

原文地址:http://blog.51cto.com/11576874/2060368

时间: 2024-10-08 11:43:28

R语言关联分析之啤酒和尿布的相关文章

R语言--关联分析

经典段子--"啤酒与尿布",即很多年轻父亲在购买孩子尿布的时候,顺便为自己购买啤酒.关联分析中,最经典的算法Apriori算法在关联规则分析领域具有很大的影响力. 项集 这是一个集合的概念,每个事件即一个项,如啤酒是一个项,尿布是一个项,若干项的集合称为项集,如{尿布,啤酒}是一个二元项集. 关联规则 关联规则一般记为 \(X\rightarrow Y\) 的形式,X称为先决条件,右侧为相应的关联结果,用于表示出数据内隐含的关联性.如:关联规则 尿布 \(\rightarrow\) 啤

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

笔者寄语:词典型情感分析对词典要求极高,词典中的词语需要人工去选择,但是这样的选择会很有目标以及针对性.本文代码大多来源于<数据挖掘之道>的情感分析章节.本书中还提到了监督算法式的情感分析,可见博客: R语言︱情感分析-基于监督算法R语言实现笔记. 可以与博客 R语言︱词典型情感分析文本操作技巧汇总(打标签.词典与数据匹配等)对着看. 词典型情感分析大致有以下几个步骤: 训练数据集.neg/pos情感词典.分词+数据清洗清洗(一.二.三级清洗步骤).计算情感得分.模型评价 ----------

R语言文本分析(2)

R语言文本分析(2) 在获得了数据之后,通常需要对文本中的每个词出现的频次进行统计,以便获得出现频次较高的词汇.当然,在英文中,冠词以及be动词可能是出现次数最多的一部分词汇了,后续的学习和处理中通常需要将这部分的词汇移除之后再进行处理. 初学者,先统计之,后续处理以待明天. 下面代码,简单统计频次,进行排序,找出指定词汇出现的频次,绘制在文本中出现的时间,并根据章节对novel进行分节处理. 代码来自上篇提到的书. # 使用table统计每个单词出现的频数 moby.freqs <- tabl

R语言︱情感分析文本操作技巧汇总(打标签、词典与数据匹配等)

笔者寄语:情感分析中对文本处理的数据的小技巧要求比较高,笔者在学习时候会为一些小技巧感到头疼不已. 主要包括以下内容: 1.批量读取txt字符文件(导入.文本内容逐行读取.加入文档名字). 2.文本清洗(一级清洗,去标点:二级清洗去内容:三级清洗,去停用词) 3.词典之间匹配(有主键join.词库匹配%in%) 4.分词之后档案id+label的加入 5.情感打分(关联情感词join.情感分数aggerate.情感偏向) -------------------------------------

R语言空间分析功能简介

大家知道,R语言的软件包都是各领域专家贡献而来,通过一个统一的开放的语言环境神奇地组装到了一起,然后开始产生化学反应,为大数据分析立下汗马功劳. R中已经有一个Spatial软件包.通过library(sp)即可加载,如果提示没有安装,使用install.packages("sp")进行安装即可,安装过程中需要选择一个软件分发站的镜像. 然后使用getClass("Spatial")即可查看类的信息.返回信息如下: > getClass("Spati

R语言生存分析可视化分析

完整原文链接:http://tecdat.cn/?p=5438 生存分析对应于一组统计方法,用于调查感兴趣事件发生所花费的时间. 生存分析被用于各种领域,例如: 癌症研究为患者生存时间分析, “事件历史分析”的社会学 在工程的“故障时间分析”. 在癌症研究中,典型的研究问题如下: 某些临床特征对患者的生存有何影响? 个人三年存活的概率是多少? 各组患者的生存率有差异吗? 基本概念 在这里,我们从定义生存分析的基本术语开始,包括: 生存时间和事件 生存功能和危险功能 癌症研究中的生存时间和事件类型

R语言重要数据集分析研究——需要整理分析阐明理念

1.R语言重要数据集分析研究需要整理分析阐明理念? 上一节讲了R语言作图,本节来讲讲当你拿到一个数据集的时候如何下手分析,数据分析的第一步,探索性数据分析. 统计量,即统计学里面关注的数据集的几个指标,常用的如下:最小值,最大值,四分位数,均值,中位数,众数,方差,标准差,极差,偏度,峰度 先来解释一下各个量得含义,浅显就不说了,这里主要说一下不常见的 众数:出现次数最多的 方差:每个样本值与均值的差得平方和的平均数 标准差:又称均方差,是方差的二次方根,用来衡量一个数据集的集中性 极差:最大值

用R语言分析詹姆斯的客场得分

篮球小皇帝--勒布朗·詹姆斯(LeBron James), 1984年12月30日出生在美国·俄亥俄州·阿克伦,美国男子职业篮球运动员,司职小前锋,现效力于克利夫兰骑士队. 勒布朗·詹姆斯在2003年的NBA选秀大会中,首轮第一顺位被克利夫兰骑士队选中.2003-2010年,詹姆斯在骑士队效力7年,期间获得两届NBA最有价值球员(MVP).2010年转会至迈阿密热火队,与德怀恩·韦德.克里斯·波什组成"三巨头"阵容. 现在,用R语言来分析詹姆斯(LBJ)与哪个球队相遇时,表现得最好.先

在 SPSS Statistics 和 Modeler 中调用 R 语言的实现和应用

http://www.ibm.com/developerworks/cn/data/library/ba/ba-1401spss-r/index.html 登录 | 注册   IBM 技术主题 软件下载 社区 技术讲座 搜索 developerWorks 打印本页面 用电子邮件发送本页面 新浪微博 人人网 腾讯微博 搜狐微博 网易微博 Digg Facebook Twitter Delicious Linked In developerWorks 中国 技术主题 Information Mana