返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >R语言关联规则深入详解
  • 725
分享到

R语言关联规则深入详解

2024-04-02 19:04:59 725人浏览 安东尼
摘要

在用R语言做关联规则分析之前,我们先了解下关联规则的相关定义和解释。 关联规则的用途是从数据背后发现事物之间可能存在的关联或者联系,是无监督的机器学习方法,用于知识发现,而非预测。

在用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语言关联规则深入详解的文章就介绍到这了,更多相关R语言关联规则内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: R语言关联规则深入详解

本文链接: https://lsjlt.com/news/121697.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • R语言关联规则深入详解
    在用R语言做关联规则分析之前,我们先了解下关联规则的相关定义和解释。 关联规则的用途是从数据背后发现事物之间可能存在的关联或者联系,是无监督的机器学习方法,用于知识发现,而非预测。 ...
    99+
    2024-04-02
  • R语言Legend函数深入详解
    legend(x, y = NULL, legend, fill = NULL, col = par("col"), border = "black", lty, lwd, pc...
    99+
    2024-04-02
  • R语言数据类型深入详解
    R语言用来存储数据的对象包括: 向量, 因子, 数组, 矩阵, 数据框, 时间序列(ts)以及列表 意义介绍 1. 向量(一维数据): 只能存放同一类型的数据 语法: c(dat...
    99+
    2024-04-02
  • 详解Python 关联规则分析
    目录1. 关联规则1.1 基本概念1.2 关联规则Apriori算法2. mlxtend实战关联规则2.1 安装2.2 简单的例子3. 总结1. 关联规则 大家可能听说过用于宣传数...
    99+
    2024-04-02
  • R语言strsplit函数用法深入详解
    1、R语言strsplit用于分割字符串 创建测试数据 > test <- "aa bb cc dd ee ff" ##创建测试数据 > test [1] "a...
    99+
    2024-04-02
  • R语言基本语法深入讲解
    基本数据类型 数据类型 向量 vector 矩阵 matrix 数组 array 数据框 data frame 因子 factor 列表 list 向量 ...
    99+
    2024-04-02
  • R语言boxplot函数深入讲解
    箱线图简介 箱线图又称箱形图或盒须图,该图是由5个特征值绘制而成的图形。 5个特征值是变量的最大值、最小值、中位数、第1四分位数和第3四分位数。 连接两个分位数画出一个箱子,箱子用中...
    99+
    2024-04-02
  • R语言的数据输入深入讲解
    既然了解了R语言的基本数据类型,那么如何将庞大的数据送入R语言进行处理呢?送入的数据又是如何在R语言中进行存储的呢?处理这些数据的方法又有那些呢?下面我们一起来探讨一下。 首先,数据...
    99+
    2024-04-02
  • C语言枚举与联合体深入详解
    目录前言枚举枚举的定义枚举的使用枚举的优点联合(共用体)联合体的定义联合体的特点联合体大小的计算总结前言 在C语言中,有三个自定义类型——结构体,枚举,联合,...
    99+
    2024-04-02
  • 深入剖析Go语言与C语言的关联性
    go 语言与 c 语言在语法、数据类型和内存管理方面具有相似性。尽管两者均采用 c 风格语法和类似数据类型,但 go 语言引入了切片和通道等新类型。此外,go 语言采用垃圾回收机制,而 ...
    99+
    2024-04-08
    go语言 c语言 垃圾回收器
  • R语言变量赋值深入讲解
    变量可以使用向左,向右且等于操作符来分配值。可以使用 print() 或 cat() 函数打印变量的值。cat() 函数将多个项目并成连续并打印输出。 # Assignment ...
    99+
    2024-04-02
  • R语言逻辑回归深入讲解
    逻辑回归 > ###############逻辑回归 > setwd("/Users/yaozhilin/Downloads/R_edu/data") > ac...
    99+
    2024-04-02
  • 详解Python语言的变量命名规则
    Python语言变量命名规则详解 Python作为一种广泛应用的编程语言,具备简洁、易读的特点,其中变量命名规则是开发者必须熟悉和遵守的重要内容。本文将详细解释Python语言变量命名规则,并提供具体的代码示例。 变量命名的基本...
    99+
    2024-01-20
    详解 Python变量 命名规则
  • PHP正则替换:深入了解替换规则
    【PHP正则替换:深入了解替换规则,需要具体代码示例】 在PHP编程中,正则表达式是一项强大的工具,用于在字符串中进行模式匹配和替换。正则替换是一种常见的操作,通过定义模式进行搜索并替...
    99+
    2024-02-29
    php 替换 正则表达式
  • R语言数据类型和对象深入讲解
    以上数据类型均为原子向量。 单引号和双引号不做区分。 R语言中TRUE和FALSE 可以简化为T和F 多元素向量的生成方式 方式 1:使用c()函数 ,这个是最常见的 c(co...
    99+
    2024-04-02
  • 深入理解Go语言注释编码规范
    在Go语言中,注释编码规范是非常重要的,它不仅可以使代码更加易读和易维护,还能帮助其他开发者快速理解你的代码逻辑。本文将详细介绍Go语言中的注释编码规范,并附带具体的代码示例,帮助读者...
    99+
    2024-04-02
  • R语言中因子相关知识点详解
    因子是用于对数据进行分类并将其存储为级别的数据对象。 它们可以存储字符串和整数。 它们在具有有限数量的唯一值的列中很有用。 像“男性”,“女性”和True,False等。它们在统计建...
    99+
    2024-04-02
  • R语言关于卡方检验实例详解
    卡方检验是一种确定两个分类变量之间是否存在显着相关性的统计方法。 这两个变量应该来自相同的人口,他们应该是类似 是/否,男/女,红/绿等。 例如,我们可以建立一个观察人们的冰淇淋购买...
    99+
    2024-04-02
  • R语言中循环的相关知识详解
    目录repeatwhile向量for循环break和nextrepeat repeat是最存粹的循环,只要不让出来,就一直重复{}中的代码,可以在命令行中输入 repeat{prin...
    99+
    2023-03-19
    R语言 循环使用 R语言 循环
  • 深入了解go语言的关键变量
    在 go 语言中,变量是重要的数据存储容器。基本数据类型包括布尔型、整数型、浮点型、複数字和字符串型。通过 var 关键字声明变量,并可通过短变量声明在局部范围内使用。掌握关键变量的用法...
    99+
    2024-04-08
    go语言 关键变量
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作