在用R语言做关联规则分析之前,我们先了解下关联规则的相关定义和解释。

关联规则的用途是从数据背后发现事物之间可能存在的关联或者联系,是无监督的机器学习方法,用于知识发现,而非预测。

关联规则挖掘过程主要包含两个阶段:第一阶段从资料集合中找出所有的高频项目组,第二阶段再由这些高频项目组中产生关联规则。

接下来,我们了解下关联规则的两个主要参数:支持度和置信度。

用简化的方式来理解这两个指标,支持度是两个关联物品同时出现的概率,而置信度是当一物品出现,则另一个物品也出现的概率。

假如有一条规则:牛肉—>鸡肉,那么同时购买牛肉和鸡肉的顾客比例是3/7,而购买牛肉的顾客当中也购买了鸡肉的顾客比例是3/4。这两个比例参数是很重要的衡量指标,它们在关联规则中称作支持度(support)和置信度(confidence)。对于规则:牛肉—>鸡肉,它的支持度为3/7,表示在所有顾客当中有3/7同时购买牛肉和鸡肉,其反应了同时购买牛肉和鸡肉的顾客在所有顾客当中的覆盖范围;它的置信度为3/4,表示在买了牛肉的顾客当中有3/4的人买了鸡肉,其反应了可预测的程度,即顾客买了牛肉的话有多大可能性买鸡肉。

关联规则算法中最常用是Apriori算法。

下面我们用R来做个关联规则的算法实例。在R中有一个arules包,我们可以用数据集Groceries作为实例。

library(arules)
data(Groceries) #加载数据集
inspect(Groceries) #查看数据内容

做完基础动作后,我们就需要求频繁项集,即满足最小支持度的关联关系数据子集数量。

freq=eclat(Groceries,parameter = list(support=0.05,maxlen=10))
inspect(freq) #查看频繁项集情况

' items support

[1] {whole milk,yogurt} 0.05602440

[2] {whole milk,rolls/buns} 0.05663447

[3] {other vegetables,whole milk} 0.07483477

[4] {whole milk} 0.25551601

[5] {other vegetables} 0.19349263

[6] {rolls/buns} 0.18393493

[7] {yogurt} 0.13950178

[8] {soda} 0.17437722

[9] {root vegetables} 0.10899847

[10] {tropical fruit} 0.10493137

[11] {bottled water} 0.11052364

[12] {sausage} 0.09395018

[13] {shopping bags} 0.09852567

[14] {citrus fruit} 0.08276563

[15] {pastry} 0.08896797

[16] {pip fruit} 0.07564820

[17] {whipped/sour cream} 0.07168277

[18] {fruit/vegetable juice} 0.07229283

[19] {domestic eggs} 0.06344687

[20] {newspapers} 0.07981698

[21] {butter} 0.05541434

[22] {margarine} 0.05856634

[23] {brown bread} 0.06487036

[24] {bottled beer} 0.08052872

[25] {frankfurter} 0.05897306

[26] {pork} 0.05765125

[27] {napkins} 0.05236401

[28] {curd} 0.05327911

[29] {beef} 0.05246568

[30] {coffee} 0.05805796

[31] {canned beer} 0.07768175'

从结果来看,总共有31个频繁项集,其中有很多只有一个条目的内容,最小支持度可能太大了。

接下来我们选择小一点的支持度,利用Apriori函数建立模型

model<-apriori(Groceries,parameter=list(support=0.01,confidence=0.5))
summary(model)

set of 15 rules

rule length distribution (lhs + rhs):sizes

3

15

Min. 1st Qu. Median Mean 3rd Qu. Max.

3 3 3 3 3 3

summary of quality measures:

support confidence lift

Min. :0.01007 Min. :0.5000 Min. :1.984

1st Qu.:0.01174 1st Qu.:0.5151 1st Qu.:2.036

Median :0.01230 Median :0.5245 Median :2.203

Mean :0.01316 Mean :0.5411 Mean :2.299

3rd Qu.:0.01403 3rd Qu.:0.5718 3rd Qu.:2.432

Max. :0.02227 Max. :0.5862 Max. :3.030

mining info:

data ntransactions support confidence

Groceries 9835 0.01 0.5

接下来查看,具体的规则内容

inspect(model)

< lhs rhs support

[1] {curd,yogurt} => {whole milk} 0.01006609

[2] {other vegetables,butter} => {whole milk} 0.01148958

[3] {other vegetables,domestic eggs} => {whole milk} 0.01230300

[4] {yogurt,whipped/sour cream} => {whole milk} 0.01087951

[5] {other vegetables,whipped/sour cream} => {whole milk} 0.01464159

[6] {pip fruit,other vegetables} => {whole milk} 0.01352313

[7] {citrus fruit,root vegetables} => {other vegetables} 0.01037112

[8] {tropical fruit,root vegetables} => {other vegetables} 0.01230300

[9] {tropical fruit,root vegetables} => {whole milk} 0.01199797

[10] {tropical fruit,yogurt} => {whole milk} 0.01514997

[11] {root vegetables,yogurt} => {other vegetables} 0.01291307

[12] {root vegetables,yogurt} => {whole milk} 0.01453991

[13] {root vegetables,rolls/buns} => {other vegetables} 0.01220132

[14] {root vegetables,rolls/buns} => {whole milk} 0.01270971

[15] {other vegetables,yogurt} => {whole milk} 0.02226741

confidence lift

[1] 0.5823529 2.279125

[2] 0.5736041 2.244885

[3] 0.5525114 2.162336

[4] 0.5245098 2.052747

[5] 0.5070423 1.984385

[6] 0.5175097 2.025351

[7] 0.5862069 3.029608

[8] 0.5845411 3.020999

[9] 0.5700483 2.230969

[10] 0.5173611 2.024770

[11] 0.5000000 2.584078

[12] 0.5629921 2.203354

[13] 0.5020921 2.594890

[14] 0.5230126 2.046888

[15] 0.5128806 2.007235>

我们可以按照支持度对各关联规则进行排名后进行查看

inspect(sort(model,by="support")[1:10])

< lhs rhs support

[1] {other vegetables,yogurt} => {whole milk} 0.02226741

[2] {tropical fruit,yogurt} => {whole milk} 0.01514997

[3] {other vegetables,whipped/sour cream} => {whole milk} 0.01464159

[4] {root vegetables,yogurt} => {whole milk} 0.01453991

[5] {pip fruit,other vegetables} => {whole milk} 0.01352313

[6] {root vegetables,yogurt} => {other vegetables} 0.01291307

[7] {root vegetables,rolls/buns} => {whole milk} 0.01270971

[8] {other vegetables,domestic eggs} => {whole milk} 0.01230300

[9] {tropical fruit,root vegetables} => {other vegetables} 0.01230300

[10] {root vegetables,rolls/buns} => {other vegetables} 0.01220132

confidence lift

[1] 0.5128806 2.007235

[2] 0.5173611 2.024770

[3] 0.5070423 1.984385

[4] 0.5629921 2.203354

[5] 0.5175097 2.025351

[6] 0.5000000 2.584078

[7] 0.5230126 2.046888

[8] 0.5525114 2.162336

[9] 0.5845411 3.020999

[10] 0.5020921 2.594890>

可以看到结果中,当购物篮中有other vegetables和yogurt两个物品时,也有whole milk的支持度最好,达到0.02。

具体的关联规则情况我们还要根据业务的实际情况进行筛选,也可以在建立关联规则模型的过程中去掉那些明显无用的规则。

比如我们要求结果中,被关联项是whole mile 同时lift值要大于2.2

inspect(subset(model,subset=rhs%in%"whole milk"&lift>=2.2))

< lhs rhs support confidence lift

[1] {curd,yogurt} => {whole milk} 0.01006609 0.5823529 2.279125

[2] {other vegetables,butter} => {whole milk} 0.01148958 0.5736041 2.244885

[3] {tropical fruit,root vegetables} => {whole milk} 0.01199797 0.5700483 2.230969

[4] {root vegetables,yogurt} => {whole milk} 0.01453991 0.5629921 2.203354>

再看结果中,只剩下4个lift值较高的关联规则。

lift=P(L,R)/(P(L)P(R)) 是一个类似相关系数的指标。lift=1时表示L和R独立。这个数越大,越表明L和R存在在一个购物篮中不是偶然现象。

相关的筛选规则的符合解释:

%in%是精确匹配

%pin%是部分匹配,也就是说只要item like '%A%' or item like '%B%'

%ain%是完全匹配,也就是说itemset has ’A' and itemset has ‘B'

同时可以通过 条件运算符(&, |, !) 添加 support, confidence, lift的过滤条件。

R语言 关联规则的更多相关文章

  1. R语言︱关联规则+时间因素=序贯关联规则

    序贯模型=关联规则+时间因素. 了解这个模型可以参考李明老师的<R语言与网站分析 [李明著][机械工业出版社][2014.04][446页]>,第九章,第二节的"序列模型关联分析 ...

  2. [R语言]关联规则2---考虑items之间严格的时序关系

    前面介绍了关联规则1---不考虑用户购买的items之间的时序关系,但在一些情况下用户购买item是有严格的次序关系了,比如在某些休闲游戏中,用户购买了道具A才能购买道具B,且道具A和B只能购买一次, ...

  3. [R语言]关联规则1---不考虑items之间的时序关系

    本文介绍的是关联规则,分为两部分:第一部分是---不考虑用户购买的items之间严格的时序关系,每个用户有一个“购物篮”,查找其中的关联规则.第二部分--- 考虑items之间的严格的时序关系来分析用 ...

  4. 大数据时代的精准数据挖掘——使用R语言

    老师简介: Gino老师,即将步入不惑之年,早年获得名校数学与应用数学专业学士和统计学专业硕士,有海外学习和工作的经历,近二十年来一直进行着数据分析的理论和实践,数学.统计和计算机功底强悍. 曾在某一 ...

  5. 关联规则-R语言实现

    关联规则code{white-space: pre;} pre:not([class]) { background-color: white; }if (window.hljs && ...

  6. R语言实现关联规则与推荐算法(学习笔记)

    R语言实现关联规则 笔者前言:以前在网上遇到很多很好的关联规则的案例,最近看到一个更好的,于是便学习一下,写个学习笔记. 1 1 0 0 2 1 1 0 0 3 1 1 0 1 4 0 0 0 0 5 ...

  7. python调用R语言,关联规则可视化

    首先当然要配置r语言环境变量什么的 D:\R-3.5.1\bin\x64; D:\R-3.5.1\bin\x64\R.dll;D:\R-3.5.1;D:\ProgramData\Anaconda3\L ...

  8. R语言书籍的学习路线图

    现在对R感兴趣的人越来越多,很多人都想快速的掌握R语言,然而,由于目前大部分高校都没有开设R语言课程,这就导致很多人不知道如何着手学习R语言. 对于初学R语言的人,最常见的方式是:遇到不会的地方,就跑 ...

  9. R 语言的优劣势是什么?

    R 语言的优劣势是什么? 2015-05-27 程序员 大数据小分析   R,不仅仅是一种语言 本文原载于<程序员>杂志2010年第8期,因篇幅所限,有所删减,这里刊登的是全文. 工欲善其 ...

随机推荐

  1. 如何在网页启动Windows服务

    由于公司有许多windows服务进行业务的处理,所以对服务的维护也是一个比较头痛的问题,因为自己也不知道服务什么时候自动停了,而且更主要的原因是服务都是由运维部门在维护管理,开发这边没有直接操作服务的 ...

  2. ASP.NET Identity登录原理 - Claims-based认证和OWIN

    MVC5 - ASP.NET Identity登录原理 - Claims-based认证和OWIN 在Membership系列的最后一篇引入了ASP.NET Identity,看到大家对它还是挺感兴趣 ...

  3. mac 下安装oh my zsh

    1.直接从github上下载 git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh  2.拷贝到账户目录下 cp ~/. ...

  4. ACM STUDY

    ACM学习<二>   穷举算法思想:     一句话:就是从所有可能的情况,搜索出正确的答案. 步骤:     1.对于一种可能的情况,计算其结果.     2.判断结果是否满足,YES计 ...

  5. storm源码之storm代码结构【译】

    storm源码之storm代码结构[译] 说明:本文翻译自Storm在GitHub上的官方Wiki中提供的Storm代码结构描述一节Structure of the codebase,希望对正在基于S ...

  6. NuGet的本地服务器安装与Package的发布

    NuGet的本地服务器安装与Package的发布 主要的步骤是按照下面的例子来做的: NuGet学习笔记(1)——初识NuGet及快速安装使用 NuGet学习笔记(2)——使用图形化界面打包自己的类库 ...

  7. 对象池化技术 org.apache.commons.pool

    恰当地使用对象池化技术,可以有效地减少对象生成和初始化时的消耗,提高系统的运行效率.Jakarta Commons Pool组件提供了一整套用于实现对象池化的框架,以及若干种各具特色的对象池实现,可以 ...

  8. 二.redis 数据类型

    本文介绍下redis支持的各种数据类型包括string,list ,set ,sorted set 和hash 1. keysredis本质上一个key-value db,所以我们首先来看看他的key ...

  9. DRP项目总结

    DRP项目在6号就已经完工了,总共花费了一个半月的时间,从对java的懵懵懂懂,到现在的略微熟悉,对整个java web开发的认知,清晰了很多.涉及到的web项目开发的必备知识,也都有一次得到锻炼和提 ...

  10. easyUI datagrid 动态绑定列名称

    easyUI 基于Jquery ,所以需要引用Jquery文件 easyUI自带了很多样式文件,可以根据需要,引用相应的css文件. 其中datagrid是一个根据json数据,js前端生成前端显示的 ...