【视频】关联规则模型、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

相关文章
|
5月前
|
存储 算法 大数据
Apriori算法和Eclat算法差异
Apriori算法和Eclat算法差异
|
6月前
|
数据可视化 算法 前端开发
基于python flask+pyecharts实现的中药数据可视化大屏,实现基于Apriori算法的药品功效关系的关联规则
本文介绍了一个基于Python Flask和Pyecharts实现的中药数据可视化大屏,该系统应用Apriori算法挖掘中药药材与功效之间的关联规则,为中医药学研究提供了数据支持和可视化分析工具。
166 2
|
7月前
|
存储 算法 大数据
Apriori算法和Eclat算法在性能上有哪些主要的差异
Apriori算法和Eclat算法在性能上有哪些主要的差异
|
5月前
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
|
4月前
|
数据挖掘 C语言 C++
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
77 3
|
9月前
|
数据可视化 数据挖掘 API
【R语言实战】聚类分析及可视化
【R语言实战】聚类分析及可视化
|
9月前
|
机器学习/深度学习 数据可视化
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为2
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为
|
5月前
|
数据采集 数据可视化 数据挖掘
R语言在金融数据分析中的深度应用:探索数据背后的市场智慧
【9月更文挑战第1天】R语言在金融数据分析中展现出了强大的功能和广泛的应用前景。通过丰富的数据处理函数、强大的统计分析功能和优秀的可视化效果,R语言能够帮助金融机构深入挖掘数据价值,洞察市场动态。未来,随着金融数据的不断积累和技术的不断进步,R语言在金融数据分析中的应用将更加广泛和深入。
|
6月前
|
机器学习/深度学习 数据采集 数据可视化
R语言在数据科学中的应用实例:探索与预测分析
【8月更文挑战第31天】通过上述实例,我们展示了R语言在数据科学中的强大应用。从数据准备、探索、预处理到建模与预测,R语言提供了完整的解决方案和丰富的工具集。当然,数据科学远不止于此,随着技术的不断发展和业务需求的不断变化,我们需要不断学习和探索新的方法和工具,以更好地应对挑战,挖掘数据的潜在价值。 未来,随着大数据和人工智能技术的普及,R语言在数据科学领域的应用将更加广泛和深入。我们期待看到更多创新的应用实例,为各行各业的发展注入新的动力。
|
6月前
|
数据采集 存储 数据可视化
R语言时间序列分析:处理与建模时间序列数据的深度探索
【8月更文挑战第31天】R语言作为一款功能强大的数据分析工具,为处理时间序列数据提供了丰富的函数和包。从数据读取、预处理、建模到可视化,R语言都提供了灵活且强大的解决方案。然而,时间序列数据的处理和分析是一个复杂的过程,需要结合具体的应用场景和需求来选择合适的方法和模型。希望本文能为读者在R语言中进行时间序列分析提供一些有益的参考和启示。