频繁项集与关联规则的挖掘(arules)

概述
本文是对R中arules包的随包文档“Introduction to arules – A computational environment for mining association rules and frequent item sets”的意译。源文档采用R Markdown撰写,并按如下流程生成本页面:

R Markdown (.Rmd)
R Markdown (
.Rmd)
Markdown (.md)
Markdown (
.md)
CSDN Markdown
CSDN Markdown
R
手动调整
重要词语英汉对照表:

英文 汉译
support 支持度
confidence 置信度
lift 提升度
interestingness 兴趣度
transaction 事务
item 项
superset 超集
subset 子集
itemset/item set 项集
association 关联信息
association rule 关联规则
frequent itemset 频繁项集
maximal frequent itemset 最大频繁项集
frequent closed itemset 频繁闭项集
sample with replacement 放回抽样
基础知识
基本定义
I={i1,i2,…,in}I={i1,i2,…,in}:nn个二值属性项(item)构成的集合。
D={t1,t2,…,tm}D={t1,t2,…,tm}:mm个事务构成的集合,称为数据库(database),每个事务拥有唯一的ID并包含II的一个子集。
X→YX→Y:表示规则(rule),其中X,Y⊆IX,Y⊆I并且X∩Y=∅X∩Y=∅,项集(itemset)XX和YY分别称为规则的前提(antecedent)和结论(consequent),或者分别称为左手边(LHS,left-hand-side)和右手边(RHS,right-hand-side)。
supp(X)supp(X):项集XX的支持度,conf(X→Y)conf(X→Y):规则X→YX→Y的置信度1。
频繁项集与关联规则的挖掘是一种流行的并经过深入研究的方法,用于发现大规模数据库中变量之间的有趣关系。本文展示了R的arules包,它提供了一种基本工具,用于创建和处理输入数据集,分析输出数据集和输出规则。该包还提供了调用两种快速挖掘算法的接口,它们是Apriori和Eclat算法的流行的C语言版本,由Christian Borgelt实现。这些算法可用于挖掘频繁项集、最大频繁项集、闭频繁项集以及关联规则。

Piatetsky-Shapiro利用不同兴趣度度量,分析和表示从数据库发现的强规则。Agrawal等在强规则的基础上,提出了从事务数据中挖掘关联规则的问题。以超市为例,交易数据集中的规则{milk,bread}→{butter}{milk,bread}→{butter}表示:若顾客购买了milkmilk和breadbread,也会购买butterbutter。

为了从包含所有可能规则的集合中抽取出感兴趣的规则,可以利用基于各种显著性和兴趣度的度量作为约束条件。最著名约束条件就是支持度和置信度的最小阈值。

发现频繁项集(frequent itemset)可视为非监督学习问题的一种简化形式,称之为模型发现(mode finding)或块搜索(bump hunting)。在这些问题中,每个项视为一个变量。它们的目标是找到模型值(prototype value),使得概率密度估值在取这些值时足够大。然而,对于变量众多的实际应用,概率估计不一定可靠,且计算太复杂。这就是在实际应用中用频繁项集代替概率估计的原因。置信度可解释为概率P(Y∥X)P(Y‖X)的一种估计,它表示事务包含规则的LHS时,从事务中找到规则的RHS的概率。

关联规则(association rule)需要同时满足最小支持度和最小置信度的约束。在支持度的中间值到最低值范围内,通常可从数据库找出大量的频繁项集。支持度的定义保证了频繁项集的所有子集也必是频繁的。因此,只挖掘所有的最大频繁项集(maximal frequent itemset)就够了,这些频繁项集不是其它任何频繁项集的子集。另一种减少挖掘项集数目的方法是只挖掘频繁闭项集(frequent closed itemset)2。若包含项集的所有事务都不包含与该项集相适的超集,则称该项集是闭的。频繁闭项集是最大频繁项集的一个超集(superset)。最大频繁项集的优势不仅在于它可生成所有的频繁项集,而且它们还包含了所有频繁项集的支持度信息,这些信息在数据挖掘过程完成后,对计算额外的兴趣度量(interest measure)起着至关重要的作用(例如,计算所得项集生成的规则的置信度、全置信度)。

当挖掘到过多满足支持度和置信度约束的关联规则时,解决该问题切实可行的方法是利用额外的兴趣度量,进一步过滤或排列这些规则。基于此的一个流行度量是提升度(lift)。规则的提升度定义为

lift(X→Y)=supp(X∪Y)supp(X)supp(Y),
lift(X→Y)=supp(X∪Y)supp(X)supp(Y),
它可认为是整条规则的支持度与LHS和RHS支持度相互独立时规则支持度之间的偏差。更大的提升度意味着更强的关联性。

近十年,关于解决频繁项集问题的算法研究已经十分丰富。Goethals等对比了目前最快的算法。这些算法包括Apriori和Eclat的实现,Borgelt将它们接入到了arules环境。这两种算法采用了很不相同的挖掘策略。Agrawal等开发的Apriori是一种分级的广度优先算法,它对事务计数;相比之下,Eclat利用等价类(equivalence classes)、深度优先搜索和交集运算代替计数。它们可用于挖掘频繁项集、最大频繁项集和闭频繁项集。Apriori还额外实现了生成关联规则。

本文描述的arules是R的扩展包,它提供了一种基础架构,创建和操作挖掘算法的输入数据集,分析输出项集和输出规则。该包常用于处理很大的规则和项集的集合,因此采用稀疏矩阵使内存占用最小化。该包的架构也非常便于扩展,包括接入新的算法和加入新的兴趣度量类型和关联规则。

数据结构
在R中,为了用户表示和操作关联规则挖掘算法的输入输出数据,需要设计良好的(数据)结构,高效处理大规模的稀疏二值数据(sparse binary data)。arules中的S4类的(数据)结构实现如下:

arules为输入数据提供了transactions和tidLists类(事务ID的列表,另一种表示事务数据的方法)。挖掘算法的输出包含itemsets和rules类,分别表示项集和规则的集合。这两个类直接扩展通用虚类associations,该虚类提供了通用接口。在这种结构下,通过加入扩展associations的新类,很容易加入新的关联规则类型。associations和transactions中的项由itemMatrix类实现,该类提供了访问ngCMatrix的接口,它是R的Matrix包中的稀疏矩阵。

ASparameter和AScontrol两个类控制挖掘算法的表现。由于每个算法能够采用与算法相关的额外参数,我们为每个接入的算法实现了自己的控制类集。我们用AP前缀表示Apriori算法,用EC前缀表示Eclat算法。按这种方式,接入新算法时易于扩展控制类。

项集矩阵
根据关联规则挖掘问题的描述,我们发现事务数据库和关联规则集的共同之处在于它们都包含项集以及附加信息。例如:数据库中的一条事务包含一个事务ID和一个项集;挖出的关联规则集中的一条规则包含两个项集,一个表示LHS,另一个表示RHS,以及附加的品质信息(比如各种兴趣度量的值)。

二值索引矩阵可表示事务数据库中项集的集合以及关联规则集,矩阵的列对应着项,矩阵的行对应着项集。矩阵的元素表示项在某个项集中出现(1)还是未出现(0)。二值索引矩阵的示例如下:

注意,我们可能需要存储的集合包含相同元素(相同的行)的项集,也就是项集的项完全相同。 这是必要的,因为事务数据库可以包含具有相同项的不同事务。由于每个事务也包含唯一的事务ID,这样的数据库仍是事务的集合。

与所有可用项的数量比起来,典型的频繁项集或典型的事务(比如超市的事务)只使用了少部分项,因此二值索引矩阵通常非常稀疏,占用了许多项和大量行。这样的数据,自然适合采用稀疏矩阵的格式表示。我们选择Matrix包中定义的ngCMatrix类来实现。ngCMatrix是紧凑的稀疏逻辑列导向的矩阵,该矩阵包含了TRUE行的索引,以及矩阵每列元素初始索引的“指针”。尽管ngCMatrix沿列方向,使用行导向的索引矩阵更方便。这使得最重要的操作——从数据集中抽取用于挖掘的事务子集——更加便捷高效。因此,我们实现了itemMatrix类,它提供了到行导向的转置索引矩阵ngCMatrix的接口。在稀疏表示中,上例项集的集合需要保存的信息包括:一个非0元素的索引向量(按行从第1行开始)1, 2, 2, 4, 1, 2, 3, 3,以及每行在索引向量起始位置的“指针”1, 3, 5, 8。开始的两个“指针”1, 3表明矩阵第1行包括索引向量的第1和第2个元素1, 3,即矩阵(1, 1)和(1, 2)两个元素非0,也就是第1个项集包含milkmilk和breadbread两项。这两个向量存储在ngCMatrix中。注意,ngCMatrix的索引从0而非1开始,因此实际存储的向量为0, 1, 1, 3, 0, 1, 2, 2和0, 2, 4, 73。然而,ngCMatrix类的数据结构并非是为arules的终端用户直接访问而设计的。其接口能在不知道数据内部表示如何工作的情况下调用。然而,若有必要,开发者可通过给arules增加功能直接访问ngCMatrix(比如,开发新的关联规则类型或兴趣度量,或者高效计算用于聚类的项集的距离矩阵)。在这种情况下,这通过as(),借助itemMatrix到ngCMatrix的类型转换机制,能够访问ngCMatrix。

除稀疏矩阵外,itemMatrix还存储项标签(比如项的名称),以及处理项标签和索引矩阵相应列号之间的必要映射。作为可选功能,itemMatrix还能存储项的附加信息。例如,可以存储超市类别层次结构,这使得能够
只选择包含特定类别(例如,所有乳制品)的项的事务(也可以是规则或项集)进行分析。

itemMatrix的基本操作包括:

dim()和[:第1个元素对应项集或事务,第2个元素对应项(列)。例如,在变量x的事务数据集上,子集选择x[1:10, 16:20]抽取出一个包含前10条事务和16到20项的矩阵。
length():获得itemMatrix的项集数量(行数目),等价于dim()返回的第1个元素。
duplicated():找出相同的项集。
unique():移除重复的项集。
match():找出两个项集的集合之间匹配的元素。
c():当几个itemMatrix对象兼容时(列数相同且项的顺序相同),按行相继连接。
recode():参与c()操作的两个对象,若包含相同的项(项标签)但排列顺序不同,或其中一个存在缺失项,那么可用recode()重排项和插入列,使二者兼容。
size():获取itemMatrix中实际存储的项集包含项的数目,它返回一个向量,其每个元素表示集合中项(1)的数目(矩阵的行和)。利用该信息可过滤掉那些太长或太短的异常事务。
itemFrequency():计算itemMatrix中每个项出现的频率,也就是二值矩阵列元素之和。该元素可用于计算兴趣度量,还可用于itemFrequencyPlot()绘制项数目频率或支持度的条形图。通过该图,可以快速预览项集集合和展示按出现频率标准哪些是最重要的项。
as():进行矩阵(matrix)和列表(list)元素之间的类型转换,其中名字和维名字(dimname)用作项标签。从itemMatrix到list的转换有两种可能:通常采用as()进行转换,得到字符串向量的列表,其每个元素包含itemMatrix中相应行的项标签,实际转换通过调用默认参数的LIST()(参数decode设为TRUE)完成;若反过来,调用LIST()时的参数decode设为FALSE,将返回项的列号构成的整数向量列表,而非项标签。decode()可用于将列号解码为项标签。
image():可用于生成itemMatrix的等级图,这对快速可视化探测有用。对事务数据集,这样的图对检查数据集是否包含结构性的变化很有用(比如,没提供项、观察期内脱销),或者找出异常事务(例如,包含几乎所有项的事务可能表明录入有问题)。准备数据时,发现数据中的那些问题非常有用。
事务数据
市场购物篮分析是关联规则的主要应用,它需要对大规模的事务数据集进行挖掘。在这种情况下,每条事务表示一次光顾购买商品的记录。事务数据通常由销售点的扫码器纪录,常常由如下形式元素构成:

所有具有相同事务ID的元素构成一条事务,它包括元素中由事务ID确定的所有项。用省略号标记的地方可能会提供附加信息,例如:可能通过超市的积分程序提供顾客ID,还可能提供更多信息,包括:事务相关的(交易时间、地点等),商品相关的(类别、价格等)或顾客相关的(年龄、性别等社会背景资料)。

对数据挖掘,事务数据首先被转换为二值购买索引矩阵,其列对应不同商品(项),其行对应不同事务。矩阵元素用于表达某个事务中出现(1)或缺失(0)了某项。这种格式通常称之为水平数据库布局。此外,事务数据可用垂直数据库布局,按事务ID列表的形式表示。在这种格式下,对于每项,保存了那些包含该项的事务的ID构成的列表。前例的水平和垂直风格的数据库分别如下左右所示:

采用何种布局的数据库由算法确定。在arules中,两种布局都由transactions和tidLists类实现了。类似于transactions,tidLists类也采用了稀疏表示以高效存储其列表。transactions和tidLists类的对象之间可利用类型转换直接相互转换。

transactions类直接扩展了itemMatrix,并继承了其基本功能(比如,子集抽选、获得项集大小、绘制项频率)。此外,transactions拥有一个data.frame格式的槽(slot),用以存储每条事务的更多信息。槽可以容纳和已保存事务数量长度相同的任意命名的向量。在arules中,该槽目前用于存储事务ID,然而它也可用于存储用户ID、总收入或利润,或者每条事务的其它信息。利用这些信息,可以抽取出事务的子集(比如,特定用户的事务或者超出规定利润水平的事务)。

通过类型转换,易于从matrix和list创建transactions类的对象。若这些数据结构有名字或维名字可用,它们分别被用于项标签和事务ID。read.transactions()函数被用于从文件导入数据。该函数读入的文件具有上例所示的结构,它也是一种很常用的格式,每行记录一条事务,项被预定义的字符分割。最后,inspect()可用于审查事务(比如,通过抽取子集得到的有趣事务)。

Piatetsky-Shapiro和Srikant等人提出了关联规则挖掘的另一个重要应用,发现类别价值和量化属性之间的有趣关系。为了挖掘关联规则,非二值属性必须映射为二值属性。最直接的映射方法是创建类别,将量化属性转为kk个有序属性(比如,收入属性可转换为具有低中高三个类别的有序属性)。然后,在第二步中,每个拥有kk个类别的类别属性用kk个二值伪属性表示,这些伪属性相当于挖掘中使用的项4。

R表示拥有类别属性和量化属性数据的典型方法是采用data.frame:

第一步:领域专家必须为所有的量化属性创建有意义的类别。arules中的discretize()等函数对该任务提供了支持,该函数实现了按相同区间长度、相同频率,以及基于聚类和用户自定义区间的离散化。在离散化后,data.frame的所有列须是逻辑或因子类型。
第二步:arules包通过data.frame到transactions的类型转换,自动生成二值伪项。在该过程中,原始属性名和类别作为附加项信息被保留。默认情况下缺失值不带信息,因此所有相应的伪项都被置为0。若实际上,当特定属性的值缺失提供了信息时(比如,采访中受访者拒绝回答某个问题),领域专家要为该属性创建一个表示缺失值的类别,该类别将以伪项的形式包含在事务中。
关联信息
arules挖掘事务数据得到的是关联信息(association)。从概念上说,关联信息是描述某些项(例如,作为项集或作为规则)之间关系的对象构成的集合,它们为不同的质量度量赋了值。这些度量可以作为显著性度量(比如,支持度),或者感兴趣度量(比如,置信度、提升度),或者其它度量(比如,关联信息涉及的收入)。arules中的所有关联信息类型都拥有如下方法提供的功能:

summary():展示集合的概述;
inspect():展示单独的关联信息;
length():获得集合中元素的个数;
items():获得每条关联信息包含的项的集合(例如,每条规则的LHS和RHS中项的并集);
sort():按不同质量的度量对集合排序;
subset():抽取子集;
union(), intersect(), setequal():集合操作;
match():匹配两个集合的元素;
write():将关联信息以人可读的格式写入磁盘;
save(), load():base包提供提供的以紧凑形式保存、加载关联信息;
write.pmml(), read.pmml():通过pmml包,按PMML(predictive model markup language)格式写入、读取关联信息。
arules包目前实现的关联信息是项集的集合(例如,用于频繁项集的项集的最大或闭子集),以及规则的集合(例如,关联规则)。itemsets和rules两种类,直接扩展了associations虚类,并提供了上述功能。

itemsets类包含一个用于将项存储为二值矩阵的itemMatrix对象,其中矩阵的每行表示一个项集。此外,它还可以将事务ID列表按tidLists类的对象形式包含其中。值得注意,当表示事务时,tidLists为每个项存储一个事务列表,此处为每个项集存储一个该项集出现过的事务ID的列表5。目前只有eclat()返回该列表。

rules类由两个itemMatrix对象构成,分别表示规则的LHS和RHS。

关联信息中的项和质量度量,能以一种安全的方式使用items, lhs, rhs, quality的访问和替换方法,进行访问和操作。此外,关联信息类拥有内建的有效性校验机制,这保证了所有的元素拥有兼容的维。

为已有的关联信息加入新的质量度量很简单。由于quality槽有一个data.frame,可以加入具有新的质量度量的附加列。然后,这些新的度量可通过sort()和subset()对关联信息排序或筛选。为arules加入新的关联信息类型也同样直接。为了做到这些,开发者须创建新的类以扩展associations虚类,并实现上述通用功能。

算法接口
在arules包中,我们接入了Christian Borgelt提供的Apriori和Eclat的免费的参考实现。这些代码可以通过R的apriori()和eclat()直接调用,并且数据对象可以在R和C代码之间直接传递,而不需写入外部文件。这些实现可挖掘频繁项集、以及闭的和最大的频繁项集。此外,apriori()还能挖掘关联规则。

输入apriori()和eclat()函数的数据必须是transactions或者能被转换成transactions的数据(比如,matrix和list)。算法的参数分为两组,用parameter和control参数表示。挖掘参数(parameter)改变挖掘到的项集或规则的特征(比如,最小支持度);控制参数(control)影响挖掘算法的性能(比如,是否按频率对项进行初始排序)。apriori()函数的这些参数必须是APparameter和APcontrol类的实例;eclat()函数的参数必须是ECparameter和ECcontrol类的实例。另外,那些可被转换为这些类的数据(比如,NULL表示默认参数,与槽名称一致的列表改变参数默认值),也能作为参数。在这些类中,每个槽确定一个不同的参数与取值。参数的默认值与独立C程序的默认值相同,除非要求规则支持度的标准定义用于指定的最小支持度(Borgelt将规则前提的支持度定义为规则的支持度)。

Christian Borgelt实现的显现特征(appearance feature)也能用于apriori()。apriori()函数的appearance参数可指定哪些项必须或不必出现在项集或规则中。关于该特征的更多信息,我们可参考Apriori手册。

apriori()和eclat()函数的输出是一个associations扩展类的对象,它包含挖掘到的关联信息集,并且可利用针对这些类的函数对它作进一步分析。

许多不同的算法采用索引矩阵或事务ID列表的表示形式作为输入,解决频繁项集和闭的频繁项集问题。每个算法拥有专门的能力,能在超大规模数据库中发挥重要作用,Goethals等对这类算法,比如kDCI、LCM、FP-Growth和Patricia,进行了讨论。大多数算法的源代码都可通过互联网获取,并且当需要某个算法时,接入到arules也很简单,必要的步骤包括:

为算法添加接口代码,推荐直接调用原生实现语言(而非利用文件通信),并且添加R函数调用该接口;
实现对ASparameter和AScontrol的扩展。
辅助函数
arules实现了几个有用的函数用以支持度计算、规则推导,采样等。接下来我们将讨论其中的几个函数。

支持度的计算
在挖掘数据库的过程中,通常在最小支持度约束条件下计算项集的支持度。在此过程,计算了所有的频繁项集外加一些非频繁候选项集(或者支持度通过其它方式确定)。特别是当数据库项很多且最小支持度值很小时,该过程在最坏的情况下可能非常耗时,频繁项集的数目按项的数目以指数形式增长。

当仅需要一个或少许项集的支持度信息时,我们可能不想挖掘数据库得到所有频繁项集。我们事先也不知道最小支持度设为多高(或多低),仍需得到了问题中(所有)项集的支持度信息。针对该问题,arules包含的support()能确定给定项集集合(以itemMatrix形式)的支持度。

为了计数,我们使用一颗前缀树(prefix tree)组织计数器,所使用的前缀树类似Borgelt描述的项集树。尽管这样,我们不会按层生成树,我们会首先生成一颗只包含必要节点的前缀树,这些节点拥有所有需要计数的项集的计数器。只采用该树的节点,我们为每条事务递归的对项集计数。完成计数后,每个项集的支持度包含在前缀和项集相同的节点中。Hahsler等描述了具体过程。

除了能在不挖掘所有频繁项集时确定少数项集的支持度,support()也能用于找出支持度很低的非频繁项集,支持度过低会导致组合爆炸使得挖掘不可行。

规则的推导
为了方便,我们将长度为ll的项集的集合记为X={X1,X2,…,Xl}X={X1,X2,…,Xl}。类似地,我们将规则的集合记为RR。部分关联规则挖掘问题就是从频繁项集XX中生成(或推导)出规则的集合RR。arules中实现的Apriori算法已包含了规则生成引擎,并默认返回X→YX→Y形式的关联规则集合,该关联规则满足最小支持度和最小置信度条件。根据Agrawal等的定义,YY被限制为单个项。

某些情况下,有必要将挖掘项集和从项集生成规则分开。例如,用户可能只对所有频繁项集的一个子集生成的规则感兴趣。Apriori通过重用挖掘频繁项集时建立的数据结构,高效的生成规则。然而,如果Apriori只用于返回项集,或者采用Eclat等其它算法挖掘项集,规则推导所需的数据结构不再能用于计算规则的置信度。

如果规则需从项集的任意集合推导,计算置信度所需的支持度值通常缺失。例如,若所有可用的信息是一个包含5个项的项集,并且我们期望推导出规则,我们需要项集的支持度(我们可能知道),也需要知道所有长度为4的所有子集的支持度。缺失的支持度信息必须从数据库计算。最终,为了高效的从项集给定的集合推导规则,我们还须将支持度值存储在合适的数据结构中,在计算规则置信度时可对该结构高效的查找。

给定置信度,arules中的ruleInduction()函数采用一颗前缀树从项集XX的任意集合按如下方式推导规则:

计算每个项集X∈XX∈X及子集{X{̸x}:x∈X}{X{̸x}:x∈X}的支持度值。这些值用于规则生成,它们通过对数据库单轮扫描得到,存储在恰当的数据结构中。
利用上一步创建的数据结构中的支持度信息,只选择性的生成满足条件的规则,为项集XX产生集合RR。
前文介绍的方法完成了高效的支持度计算。经过计算,所有必要的支持度包含在前缀树中。我们能很容易的取回所需的支持度值。Hahsler等描述了具体过程。

事务的抽样
从大规模数据库中抽取用于挖掘的样本是一种强大的技术,它在原始数据库无法放入主存(main memory)而样本集可放入时尤其有用。然而,就算数据库能放入主存,抽样能在只牺牲很少精度时极大的加速挖掘。

Mannila等提出了用于关联规则挖掘的放回抽样方法,并对抽样导致的误差进行了量化估计。基于二项分布(包含样本中给定项集的事务的数量)的Chernov界,作者认为即使比较小的样本集在理论上也能很好的估计支持度。在此理论基础上,Zaki等认为对于持度为τ=supp(X)τ=supp(X)的项集XX,在给定置信水平1−c1−c下可接受的支持度相对误差为ϵϵ时,抽样数据集所需的大小nn可以计算,

n=−2ln©τϵ2。
n=−2ln⁡©τϵ2。
对于每个项集,恰当的方法是依据其支持度确定不同的样本集大小。 抽样数据集的大小由支持度确定。作为启示6,作者建议将用户设定的最小支持度阈值作为ττ。这意味着对于接近最小支持度的项集,满

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
R语言是一种用于数据分析和数据可视化的强大工具,也被广泛应用于关联规则数据挖掘。下面是一个关联规则数据挖掘在市场篮子分析中的应用案例。 假设某超市想要了解不同商品之间的关联性,以便进行优化的货架布局和推广策略。他们收集了一段时间内每个顾客购买的商品清单数据。 首先,使用R语言中的数据预处理技术对数据进行清洗和准备。通过删除无效数据和处理重复项,确保数据的准确性和一致性。 然后,使用R语言中关联规则挖掘,如arules,对数据进行分析。使用Apriori算法,可以找到物品之间的关联规则频繁项集。 通过设定支持度和置信度阈值,可以确定只有在一定数量的交易中出现的频繁项集。例如,如果支持度阈值设定为0.05,表示只有在超过5%的交易中出现的项集才被认为是频繁的。 此外,通过设置置信度阈值,可以找到具有一定关联性的规则。置信度表示在一个规则中出现的商品组合与整体交易的关联程度。例如,如果置信度阈值设定为0.4,表示只有当规则中的商品组合在40%以上的交易中都出现时,该规则才被认为是强关联的。 最后,通过分析得到的关联规则,超市可以了解哪些商品经常一起被购买,进而进行优化的货架布局和推广策略。例如,如果关联规则显示购买面的顾客还经常购买黄油,那么超市可以考虑将这两种商品放在相邻的货架上。 综上所述,关联规则数据挖掘在市场篮子分析中的应用案例中,通过R语言的分析工具,可以找到商品之间的关联规则,从而提供超市货架布局和推广策略的优化建议。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值