【视频】关联规则模型、Apriori算法及R语言挖掘商店交易数据与交互可视化|数据分享

简介: 【视频】关联规则模型、Apriori算法及R语言挖掘商店交易数据与交互可视化|数据分享

原文链接:http://tecdat.cn/?p=22732


关联规则分析是一种揭示项目如何相互关联的技术。关联规则分析也称为购物篮分析。在这篇文章中,我将解释关联规则模型以及如何在R中提取关联规则。关联规则模型适用于交易数据(查看文末了解数据获取方式)。交易数据的一个例子可以是客户的购物历史。


视频:R语言关联规则模型(Apriori算法)挖掘杂货店的交易数据与交互可视化

问题


当我们去杂货店购物时,我们通常有一个标准的购物清单。每个购物者都有一份独特的清单,具体取决于个人的需求和偏好。家庭主妇可能会为家庭晚餐购买健康食材,而单身汉可能会购买啤酒和薯条。了解这些购买模式可以通过多种方式帮助增加销售额。如果有一对经常一起购买的物品 X 和 Y:X 和 Y 都可以放在同一个货架上,这样会提示购买一件商品的买家购买另一件商品。

虽然我们可能知道某些物品经常一起购买,但问题是,我们如何发现这些关联?

 


定义


方法一:支持度。这表示项目集的受欢迎程度,以项目集出现的交易比例来衡量。在下图中,啤酒 的支持度为5份中的 3 份,即 60%。

如果您发现超过一定比例的商品销售往往会对您的利润产生重大影响,您可以考虑将该比例作为您的支持度门槛。然后,您可以将支持值高于此阈值的项集标识为重要项集。

 


方法2:置信度。这表示在购买商品 X 时购买商品 Y 的可能性有多大,表示为 {X 箭头 Y}。这是通过与项目 X 的交易比例来衡量的,其中项目 Y 也出现。在交易中,啤酒对薯条的置信度为3份中的2份,即67%。

置信度度量的一个缺点是它可能会歪曲关联的重要性。这是因为它只考虑了啤酒的受欢迎程度,而不考虑薯条。如果薯条通常也很受欢迎,那么包含啤酒的交易也将包含薯条的可能性更高,从而夸大了置信度。为了说明这两个组成项目的基本受欢迎程度,我们使用了第三种度量,称为提升度。


方法3:提升度。这表示在购买商品X时购买商品Y的可能性有多大,同时控制商品Y的受欢迎程度。在上述交易 中,啤酒 对 薯条 的提升为1.11,这意味着项目之间有关联。提升值大于 1 表示如果购买了商品 X,则很可能购买商品 Y,而小于 1 的值表示如果购买了商品 X,则不太可能购买商品 Y。

 


但是,企业主通常不会询问单个项集。相反,所有者会对拥有完整的流行项集列表更感兴趣。要获得此列表,需要计算每个可能的项目组合的支持值,然后将满足最小支持阈值的项目集列入候选名单。

在只有 10 件商品的商店中,要检查的可能组合总数将高达 1023 种。在拥有数百件商品的商店中,这个数字呈指数增长。

有没有办法减少要考虑的项目配置数量?


apriori算法


apriori原理可以减少我们需要检查的项目集的数量。简而言之,apriori原理指出,如果一个项目集是不频繁的,那么它的所有子集也必须是不频繁的。这意味着,如果发现 {苹果} 不常见,在合并流行项集列表时,我们不需要考虑 苹果和啤酒组合,也不需要考虑任何其他包含苹果的项集组合。


寻找高支持项集


使用 apriori 原理,可以修剪需要检查的项集的数量,并且可以通过以下步骤获得热门项集的列表:

步骤 0。从只包含一个项目的项目集开始,例如 {啤酒} 和 {草莓}。

步骤 1。确定项集的支持。保留满足最小支持阈值的项集,并删除不满足的项集。

步骤 2。使用您在步骤 1 中保留的项集,生成所有可能的项集配置。

步骤 3。重复步骤 1 和 2,直到不再有新项集。

下面的动画说明了这个迭代过程:

使用 Apriori 算法减少候选项集

正如动画中所见,{苹果} 被确定为支持度较低,因此将其删除,并且不需要考虑所有其他包含 苹果 的项集配置。这将要考虑的项目集的数量减少了一半以上。

请注意,您在步骤 1 中选择的支持阈值可能基于正式分析或过去的经验。如果您发现超过一定比例的商品销售往往会对您的利润产生重大影响,您可以考虑使用该比例作为您的支持门槛。

R语言关联规则模型(Apriori算法)挖掘杂货店的交易数据与交互可视化

关联规则挖掘是一种无监督的学习方法,从交易数据中挖掘规则。它有助于找出数据集中的关系和一起出现的项目。在这篇文章中,我将解释如何在R中提取关联规则。

关联规则模型适用于交易数据。交易数据的一个例子可以是客户的购物历史。

数据分析的第一件事是了解目标数据结构和内容。出于学习的目的,我认为使用一个简单的数据集更好。一旦我们知道了这个模型,就可以很容易地把它应用于更复杂的数据集。

在这里,我们使用杂货店的交易数据。首先,我们创建一个数据框并将其转换为交易类型。


读取数据


n=500 # 交易数量
trans <- data.frame() # 收集数据的数据框架

创建数据并将其收集到交易数据框中。

for(i in 1:n)
{
  count <- sample(1:3, 1) # 从1到3的物品计数
  如果(i %% 2 == 1)
  {
    if(!add_product %in% selected)
    {
      tran <- data.frame(items = add_product, tid = i)

检查交易数据框中的数据。

接下来,我们需要将生成的数据框转换为交易数据类型。

as(split(\[, "items"\], \[, "tid"\]), "transa")

为了检查交易数据的内容,我们使用 inspect() 命令。

挖掘规则


sort(rules_1, dby = "confidence")

.......

我们从上面的列表中获取第一个rhs项(规则后项)来检查该项的规则。但如果你知道目标项目,可以在参数中只写rhs="melon"。

inspect(rules_1@rhs\[1\])

> rhs_item <- gsub("\\\}","", rhs)

我们为我们的rhs_item建立规则

按 "置信度 "排序并检查规则

sort(rules_2, "confidence")

结果可视化


最后,我们从规则集_2中绘制出前5条规则。

> plot(rules_2\[1:5\])

图1

绘制全部规则

图2


点击标题查阅往期内容


Python中的Apriori关联算法-市场购物篮分析


01

02

03

04


交互可视化


绘制出前5条规则

precision     =  3
igraphLayout     =  layout_nicely
list(nodes = nodes, edges = edges, nodesToDataframe = nodesToDataframe, 
            edgesToDataframe = edgesToDataframe,
x$legend <- legend
    htmlwidgets::createWidget( x, width = width, 
        height = height)

图3

绘制全部规则

图4

图5

相关文章
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
R语言基于表格文件的数据绘制具有多个系列的柱状图与直方图
【9月更文挑战第9天】在R语言中,利用`ggplot2`包可绘制多系列柱状图与直方图。首先读取数据文件`data.csv`,加载`ggplot2`包后,使用`ggplot`函数指定轴与填充颜色,并通过`geom_bar`或`geom_histogram`绘图。参数如`stat`, `position`, `alpha`等可根据需要调整,实现不同系列的图表展示。
273 9
|
数据采集 数据可视化 数据挖掘
R语言在金融数据分析中的深度应用:探索数据背后的市场智慧
【9月更文挑战第1天】R语言在金融数据分析中展现出了强大的功能和广泛的应用前景。通过丰富的数据处理函数、强大的统计分析功能和优秀的可视化效果,R语言能够帮助金融机构深入挖掘数据价值,洞察市场动态。未来,随着金融数据的不断积累和技术的不断进步,R语言在金融数据分析中的应用将更加广泛和深入。
|
机器学习/深度学习 算法 数据挖掘
R语言中的支持向量机(SVM)与K最近邻(KNN)算法实现与应用
【9月更文挑战第2天】无论是支持向量机还是K最近邻算法,都是机器学习中非常重要的分类算法。它们在R语言中的实现相对简单,但各有其优缺点和适用场景。在实际应用中,应根据数据的特性、任务的需求以及计算资源的限制来选择合适的算法。通过不断地实践和探索,我们可以更好地掌握这些算法并应用到实际的数据分析和机器学习任务中。
|
数据采集 机器学习/深度学习 数据挖掘
R语言数据清洗:高效处理缺失值与重复数据的策略
【8月更文挑战第29天】处理缺失值和重复数据是数据清洗中的基础而重要的步骤。在R语言中,我们拥有多种工具和方法来有效地应对这些问题。通过识别、删除或插补缺失值,以及删除重复数据,我们可以提高数据集的质量和可靠性,为后续的数据分析和建模工作打下坚实的基础。 需要注意的是,处理缺失值和重复数据时,我们应根据实际情况和数据特性选择合适的方法,并在处理过程中保持谨慎,以避免引入新的偏差或错误。
|
数据采集 存储 数据可视化
R语言时间序列分析:处理与建模时间序列数据的深度探索
【8月更文挑战第31天】R语言作为一款功能强大的数据分析工具,为处理时间序列数据提供了丰富的函数和包。从数据读取、预处理、建模到可视化,R语言都提供了灵活且强大的解决方案。然而,时间序列数据的处理和分析是一个复杂的过程,需要结合具体的应用场景和需求来选择合适的方法和模型。希望本文能为读者在R语言中进行时间序列分析提供一些有益的参考和启示。
|
6天前
|
传感器 机器学习/深度学习 算法
【使用 DSP 滤波器加速速度和位移】使用信号处理算法过滤加速度数据并将其转换为速度和位移研究(Matlab代码实现)
【使用 DSP 滤波器加速速度和位移】使用信号处理算法过滤加速度数据并将其转换为速度和位移研究(Matlab代码实现)
|
7天前
|
传感器 算法 数据挖掘
基于协方差交叉(CI)的多传感器融合算法matlab仿真,对比单传感器和SCC融合
基于协方差交叉(CI)的多传感器融合算法,通过MATLAB仿真对比单传感器、SCC与CI融合在位置/速度估计误差(RMSE)及等概率椭圆上的性能。采用MATLAB2022A实现,结果表明CI融合在未知相关性下仍具鲁棒性,有效降低估计误差。
|
8天前
|
负载均衡 算法 调度
基于遗传算法的新的异构分布式系统任务调度算法研究(Matlab代码实现)
基于遗传算法的新的异构分布式系统任务调度算法研究(Matlab代码实现)
77 11
|
8天前
|
机器学习/深度学习 传感器 算法
基于全局路径的无人地面车辆的横向避让路径规划研究[蚂蚁算法求解](Matlab代码实现)
基于全局路径的无人地面车辆的横向避让路径规划研究[蚂蚁算法求解](Matlab代码实现)

热门文章

最新文章