R语言做关联分析

article/2025/9/18 7:11:29

目录

(一)案例简介

案例使用

数据预处理

分析结果

完整代码


  目录   关联分析

理解关联分析的相关概念:关联分析、支持度、置信度、强规则、项集、频繁项集等。 掌握关联分析的基本方法:数据是事务的或关系的,如何由大量的数据中发现关联规则 ?什么样的关联规则最有趣?

 案例资料

(一)案例简介

只有对商场销售数据进行分析,才能了解客户的购买特性,发现不同类别商品的共同特征及其规则,并进而通过这些规则对商场的市场定位、商品定价、新商品采购等进行决策。 本案例采用某大型超市的购物篮数据集,每一组数据表示不同的顾客一次在商场购买的商品 集合。案例的样本数据如表 1.1 所示。


表 1.1 某大型超市的购物篮样本数据

案例使用

读入数据

安装和加载聚类挖掘算法相关的包:arules,用于关联规则的数字化生成,提供 Apriori 和 Eclat

这两种快速挖掘频繁项集和关联规则算法的实现函数。

>install.packages("arules")>library(arules)>library(Matrx)                                                                                            >shopping.df<-as.data.frame(read.csv(file="D:/GLFX/WH.csv",header=F))#读取数据>shopping.df

数据预处理

将原始数据集转换成数据项集。

每个商品用唯一的一个代码表示如下:

I1:面包 

I2:鸡蛋

I3:西红柿

I4:茄子

I5:皮带

I6:手表

所有的商品可以表示为数据项集

I: I={I1, I2, I3, I4, I5, I6}

每一条交易记录可以表示为一个数据项集:

T1={I1, I2, I3} T2={I1, I4} T3={I4, I5} T4={I1, I4}

T5={I1, I2, I3, I4, I6} T6={I2, I3, I6}

T7={I2, I3, I6}

#则所有数据项集的集合 D={T1,T2,T3,T4,T5,T6,T7}>Trade1 <- c("In1","In2","In3")>Trade2 <- c("In1","In4")>Trade3 <- c("In4","In5")>Trade4 <- c("In1","In4")>Trade5 <- c("In1","In2","In3","In4","In6")>Trade6 <- c("In2","In3","In6")>Trade7 <- c("In2","In3","In6")>D <- list(Trade1,Trade2,Trade3,Trade4,Trade5,Trade6,Trade7)>D

>shopping.t<- as(D, "transactions")>shopping.t

>inspect(shopping.t)

设定支持度和可信度阈值,选择关联规则挖掘算法产生关联规则

apriori()函数的基本格式:apriori(data, parameter = NULL, appearance = NULL, control = NULL)

当放置相应的数据集,并设置各个参数值(如:支持度和置信度的阈值)后,运行该函数即可生成满足需求的频繁项集或关联规则等结果。 Parameter 参数可以对支持度(support)、置信度(confidence)、每个项集所含项数的最大值/最小值(maxlen/minlen),以及输出结果(target)等重要参数进行设置。如果没有对其进行设值,函数将对各参数取默认值:support=0.1,confidence=0.8,maxlen=10,minlen=1,target=“rules”/“frequent itemsets”(输出关联规则/频繁项集)。

而参数 appearance 可以对先决条件 X(lhs)和关联结果 Y(rhs)中具体包含哪些项进行限制出现。如:设置 lhs=beer,将仅输出 lhs 中含有“啤酒”这一项的关联规则,在默认情况下,所有项都将无限制出现。 Control 参数用来控制函数性能,如可以设定对项集进行升序(sort=1) 还是降序( sort=-1)排序,是否向使用者报告进程(verbose=TURE/FALSE) (1)通过支持度、置信度控制 将支持度的最小阈值(minsup)设置为 0.001,置信度最小阈值(mincon) 设为 0.5,其他参数不进行设定取默认值,并将所得关联规则名记为 ShoppingRules0

>ShoppingRules0<-apriori(shopping.t,parameter=list(support=0.001,confidence=0.5)) #生成关联规则

以上输出结果包括指明支持度、置信度最小值的参数详解(parameter specification)部分,记录算法执行过程中相关参数的算法控制(algorithmic control)部分,以及 apriori 算法的基本信息和执行细节,如 apriori 函数的版本、各步骤的程序运行时间等。

>ShoppingRules0 #显示 ShoppingRules0 中生成关联规则条数

>inspect(ShoppingRules0) #观测 ShoppingRules0 中的规则

可以看到 ShoppingRules0 中共包含 62 条关联规则。观察每条观测,关联规则的先后顺序与可以表明其关联性强度的三个参数值的取值大小没有明显关系。

主要通过支持度控制

>ShoppingRules.sorted_sup <- sort(ShoppingRules0, by="support")

#给定置信度阈值为 0.01,按支持度 排序>

>inspect(ShoppingRules.sorted_sup[1:10])

如上输出结果,10 条强关联规则按照支持度从高到低的顺序排列出来。这种控制规则强度的方式可以找出支持度最高的若干条规则。当我们对某一指标要求苛刻时,可以优先考虑该方式, 易于控制输出规则的条数。

主要通过置信度控制

以下类似,按照置信度选出前 10 条强关联规则,由输出结果得到了 10 条置信度高达 100%的关联规则,比如第一条规则:购买靴子,都购买了茄子。这就是一条相当有用的关联规则,正如这些物品在超市中往往摆放的很近

>ShoppingRules.sorted_con <- sort(ShoppingRules0, by="confidence")>inspect(ShoppingRules.sorted_con[1:10])

主要通过提升度控制

>ShoppingRules.sorted_lift <- sort(ShoppingRules0, by="lift")

#给定支持度阈值为 0.01,置信度阈值为 0.5, 按提升度排序

>inspect(ShoppingRules.sorted_lift[1:10])

提升度可以说是筛选关联规则最可靠的指标,且得到的结论往往也是有趣有用的。由以上输出   结果可以看到强度最高的关联规则为{鸡蛋,茄子}→{手表},{西红柿,茄子}→{手表}等。

分析结果

销量最高的产品

>itemsets_sho<-apriori(shopping.t,parameter= >list(supp=0.1,target="frequent itemsets"),control = list(sort=-1))#将 apriori()中目标参数取值设为“频繁项集”

inspect(itemsets_sho[1:5])

适合捆绑销售的产品

Eclat 算法的核心函数为 eclat()来获取最适合捆绑销售,其格式为: eclat(data, parameter = NULL, control = NULL)与 apriori()相比,参数 parameter 和 control 被保留,其作用与 apriori()中基本相同,但要注意,parammeter 中的输出结果(target)一项不可设置为 rules,即通过 eclat()函数无法生成关联规则,并且 maxlen 的默认值为 5。

>itemsets_esho<-eclat(shopping.t,parameter=list(minlen=2,maxlen=3,supp=0.1,target="frequent itemsets"),control = list(sort=-1))

>inspect(itemsets_esho)

完整代码

install.packages("arules")
library(arules)
library(Matrix)
shopping.df<-as.data.frame(read.csv(file="D:/GLFX/WH.csv",header=F))
shopping.df
Trade1 <- c("In1","In2","In3") 
Trade2 <- c("In1","In4") 
Trade3 <- c("In4","In5") 
Trade4 <- c("In1","In4") 
Trade5 <- c("In1","In2","In3","In4","In6") 
Trade6 <- c("In2","In3","In6") 
Trade7 <- c("In2","In3","In6")
D <- list(Trade1,Trade2,Trade3,Trade4,Trade5,Trade6,Trade7) 
D
shopping.t<- as(D, "transactions")
shopping.t
inspect(shopping.t)
ShoppingRules0 <- apriori(shopping.t,parameter = list(support=0.001,confidence=0.5)) #生成关联规则
ShoppingRules0 #显示 ShoppingRules0 中生成关联规则条数
inspect(ShoppingRules0) #观测 ShoppingRules0 中的规则
ShoppingRules.sorted_sup <- sort(ShoppingRules0, by="support")#给定置信度阈值为 0.01,按支持度 排序>
inspect(ShoppingRules.sorted_sup[1:10])
ShoppingRules.sorted_con <- sort(ShoppingRules0, by="confidence")
inspect(ShoppingRules.sorted_con[1:10])
ShoppingRules.sorted_lift <- sort(ShoppingRules0, by="lift") #给定支持度阈值为 0.01,置信度阈值为 0.5, 按提升度排序 
inspect(ShoppingRules.sorted_lift[1:10])
itemsets_sho <- apriori(shopping.t, parameter = list(supp=0.1,target="frequent itemsets"),control = list(sort=-1)) #将 apriori()中目标参数取值设为“频繁项集”
inspect(itemsets_sho[1:5])
itemsets_esho <- eclat(shopping.t, parameter = list(minlen=2,maxlen=3,supp=0.1,target="frequent itemsets"),control = list(sort=-1))
inspect(itemsets_esho)


http://chatgpt.dhexx.cn/article/WxxCAPDM.shtml

相关文章

数据关联分析

数据挖掘算法&#xff1a;关联分析一&#xff08;基本概念&#xff09; 一.基本概念 我们来看上面的事务库&#xff0c;如同上表所示的二维数据集就是一个购物篮事务库。该事物库记录的是顾客购买商品的行为。这里的TID表示一次购买行为的编号&#xff0c;items表示顾客购买了…

关联性——灰色关联分析

1、作用 对于两个系统之间的因素&#xff0c;其随时间或不同对象而变化的关联性大小的量度&#xff0c;称为关联度。在系统发展过程中&#xff0c;若两个因素变化的趋势具有一致性&#xff0c;即同步变化程度较高&#xff0c;即可谓二者关联程度较高&#xff1b;反之&#xff…

【关联分析实战篇】为什么 BI 软件都搞不定关联分析

文章目录 做不好关联分析的原因在数据模型层面解决关联给业务人员看的懂的数据结构多级关联表自关联表互关联表重复关联表 结语润乾报表资料 事物都是普遍联系的&#xff0c;很难有一个独立的事物不和其它发生关联&#xff0c;数据表也一样&#xff0c;很多有业务意义的查询都会…

因果分析与关联分析的联系

因果分析中的关联分析 因果分析的发现在大数据背景下变得越发重要&#xff0c;在数据分析领域&#xff0c;人们开始尝试着利用人工智能对数据进行因果分析&#xff0c;但一个因果关系的得出是错综复杂的&#xff0c;不单单是通过机器就能够解决的。 在数据分析中&#xff0c;…

灰色关联分析步骤

什么是灰色关联分析 灰色关联分析是指对一个系统发展变化态势的定量描述和比较的方法&#xff0c;其基本思想是通过确定参考数据列和若干个比较数据列的几何形状相似程度来判断其联系是否紧密&#xff0c;它反映了曲线间的关联程度。 通常可以运用此方法来分析各个因素对于结…

四.数据关联性分析

数据关联分析用于挖掘数据对象之间的关系,例如啤酒和尿布的案例 一.基本概念 通过实例认识项集,支持度,频繁项集,关联规则,置信度,强关联规则,支持度,置信度 运动器的历史购买数据 TID网球拍网球运动鞋羽毛球111102110031000410105011161100 TID: 表示每一次购物单的序号0…

关联分析(Association analysis)

关联分析&#xff08;Association analysis&#xff09; 简介 大量数据中隐藏的关系可以以‘关联规则’和‘频繁项集’的形式表示。rules&#xff1a;&#xff5b;Diapers&#xff5d;–>{Beer}说明两者之间有很强的关系&#xff0c;购买Diapers的消费者通常会购买Beer。 …

关联度分析法-灰色关联分析

目录 灰色关联分析介绍灰色关联分析的步骤实例 灰色关联分析介绍 对于两个系统之间的因素&#xff0c;其随时间或不同对象而变化的关联性大小的量度&#xff0c;称为关联度。在系统发展过程中&#xff0c;若两个因素变化的趋势具有一致性&#xff0c;即同步变化程度较高&#…

关联分析之Apriori学习笔记

关联分析&#xff08;Association analysis&#xff09; 简介 大量数据中隐藏的关系可以以‘关联规则’和‘频繁项集’的形式表示。rules&#xff1a;&#xff5b;Diapers&#xff5d;–>{Beer}说明两者之间有很强的关系&#xff0c;购买Diapers的消费者通常会购买Beer。 …

关联分析(一)

目录 一 关联分析的应用 二 关联分析定义 关联分析(又称关联挖掘) 常见关系分类 四 基本原理 ​编辑 五 常用算法 5.1 先验算法Apriori 5.2 FP-Growth算法 一 关联分析的应用 在美国国会投票记录中发现关联规则发现毒蘑菇的相似特征在Twitter源中发现一些共现词从网站…

数据分析五、Apriori 算法之关联分析

Apriori 算法 一、相关概念&#xff1a;二、Apriori 算法2.1、确定最小支持度和最小置信度2.2、找出频繁项集和强关联规则2.3、Python 调用 apriori 函数 Apriori---[əpriˈɔri] ---先天的&#xff0c;推测的一、相关概念&#xff1a; 关联分析&#xff0c;是一门分析技术&a…

数据的结构分类:结构化数据,半结构化数据以及非结构化数据

数据结构分类 结构化数据&#xff1a;具有域名与域值&#xff0c;可用二维表表示。例如关系数据库和CSV文档半结构数据&#xff1a;具有域值和域名&#xff0c;但每一笔数据的字段可能不一样。例如JSON以及XML非结构化数据&#xff1a;不具有域值和域名&#xff0c;例如文章&a…

结构化数据与非结构化数据有什么区别?

结构化数据和非结构化数据是大数据的两种类型&#xff0c;这两者之间并不存在真正的冲突。客户如何选择不是基于数据结构&#xff0c;而是基于使用它们的应用程序&#xff1a;关系数据库用于结构化数据&#xff0c;大多数其他类型的应用程序用于非结构化数据。 然而&#xff0…

结构化数据和非结构化数据有何区别?

员工离职&#xff0c;老板最关心的可能并不是工作交接是否滴水不漏&#xff0c;而是离职员工会如何处理他手里的数据。 例如设计人员的设计图纸、项目经理的项目文档等&#xff0c;这些文档属于企业珍贵的资产&#xff0c;而大部分企业却从未真正管控过这部分资产。 可以确定的…

什么是结构化数据、半结构化数据、非结构化数据

一、 结构化数据 结构化数据&#xff1a;即以关系型数据库表形式管理的数据&#xff0c;例如&#xff1a; idnameage1马百万262马龙台1 机构化数据的数据存储和排列都是具有规律性的&#xff0c;对于增删改查等功能支持友好 二、半结构化数据 半结构化数据&#xff1a;非关…

总结非结构化数据分析「十步走」

注&#xff1a;诚然&#xff0c;本文中所提到的内容并使非结构化数据结构化的唯一步骤&#xff0c;但该步骤的可行性&#xff0c;以及在创造可持续模式方面的表现已在实践中得到证实。 如今&#xff0c;数据分析逐渐在企业发展中扮演起愈加重要的角色&#xff0c;为求在业务成长…

【黑马】JavaWeb开发教程(涵盖Spring+MyBatis+SpringMVC+SpringBoot等)目录合集

​Java Web 传统路线&#xff1a; 课程讲述路线&#xff1a; 视频链接&#xff1a; 2023新版JavaWeb开发教程&#xff0c;实现javaweb企业开发全流程 学习时间&#xff1a; 断断续续&#xff0c;按照课程安排正常学习&#xff0c;历时15天&#xff0c;完结撒花&#xff01;…

搭建JavaWeb开发环境(Eclipse版)

1. 在使用eclipse搭建JavaWeb开发环境时&#xff0c;首先要确保自己电脑已经安装过Java中的JDK&#xff0c;以及配置好了相关的环境变量。 2. 开始下载JavaEE软件&#xff1a;https://www.eclipse.org/downloads/packages/。在该网址中&#xff0c;选择镜像然后下载。&#xf…

搭建JavaWeb开发环境(JDK+Tomcat+Eclipse/Idea)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、 安装JDK二、配置环境变量 二、TomCat1. 获取 Tomcat2. Tomcat安装和环境变量的配置 三、eclipse配置 前言 提示&#xff1a;这里可以添加本文要记录的大概…

好文分享:Javaweb开发环境搭建常用工具类型

随着互联网的不断发展&#xff0c;无论是前端开发还是后端开发都越发垂直细分化&#xff0c;而今天我们就通过案例分析来了解一下&#xff0c;Javaweb开发环境搭建常用工具类型。 一&#xff1a;Web相关概念 Web程序也就是一般所说的网站&#xff0c;由服务器、客户端浏览器和…