R语言 Apriori算法

R语言 Apriori算法

Apriori算法用于寻找数据集中的频繁项集,用于 关联规则挖掘。 它被称为Apriori,因为它使用了关于频繁项集属性的先验知识。我们采用迭代法或逐级搜索法,用k个频繁项集来寻找k+1个项集。为了提高频繁项目集的逐级生成的效率,我们使用了一个重要的属性,叫做Apriori属性,它有助于减少搜索空间。使用R编程语言来实现这个算法非常容易。

Apriori属性: 频繁项集的所有非空子集必须是频繁的。Apriori假设一个频繁项集的所有子集必须是频繁的(Apriori属性)。如果一个项目集是不频繁的,它的所有超集都是不频繁的。

从本质上讲,Apriori算法将一个更大的数据集的每一部分,以某种有序的方式与其他集进行对比。所得到的分数被用来生成被归类为在更大的数据库中频繁出现的集合,用于收集汇总数据。在实际意义上,人们可以通过查看一些应用来更好地了解该算法,如市场篮子工具,它有助于弄清哪些物品是在市场篮子中一起购买的,或金融分析工具,它有助于显示各种股票的共同趋势。Apriori算法可与其他算法结合使用,以有效地对数据进行分类和对比,从而更好地展示复杂系统如何反映模式和趋势。

重要的术语

  • 支持度: 支持度是项目集在数据集中出现的频率的一种指示。它是包含一个项目’x’的记录数除以数据库中的记录总数。
  • 置信度: 置信度是一个衡量时间的标准,即如果一个项目’x’被购买,那么项目’y’也会被一起购买。它是(x U y)的支持数除以’x’的支持数。
  • 提升: 提升是观察到的支持率与如果’x’和’y’是独立的预期支持率的比率。它是(x U y)的支持数除以’x’和’y’的单独支持数的乘积。

算法

  1. 读取交易中的每个项目。
  2. 计算每个项目的支持度。
  3. 如果支持度小于最小支持度,则丢弃该条目。否则,将其插入频繁项目集。
  4. 计算每个非空子集的置信度。
  5. 如果置信度小于最小置信度,丢弃该子集。否则,将其放入强规则中。

Apriori算法在R中的实现

RStudio为R统计计算环境提供流行的开源和企业就绪的专业软件。R是一种为支持统计计算和图形计算/可视化而开发的语言。它有一个内置的库函数,称为 arules ,它实现了 市场篮子分析 的Apriori算法,并通过关联规则挖掘计算出强规则,一旦我们根据我们的需要指定最小支持度和最小置信度。下面是Apriori算法所需的代码和相应的输出。 Groceries 数据集也被用于此,它在R的默认数据库中可用。它包含9,835条交易/记录,每条都有’n’个从杂货店购买的物品。

例子

第1步:加载所需的库

arules “包为表示、操作和分析交易数据和模式提供了基础设施。

library(arules)

‘arulesviz ‘ 包用于关联规则和频繁项集的可视化。它用关联规则和项目集的各种可视化技术扩展了包’arules’。该包还包括几个用于规则探索的交互式可视化。

library(arulesViz)

RColorBrewer “是一个ColorBrewer调色板,为地图和其他图形提供颜色方案。

library(RColorBrewer)

第2步:导入数据集

Groceries “数据集是在R包中预定义的。它是一组9835条记录/交易,每条记录都有’n’个项目,都是从杂货店购买的。

data("Groceries")

第3步:应用apriori()函数

apriori() “函数是内置在R中的,使用Apriori算法挖掘频繁项集和关联规则。这里,’Groceries’是交易数据。’参数’是一个命名的列表,指定了寻找关联规则的最小支持度和置信度。默认行为是挖掘最小支持度为0.1,最小置信度为0.8的规则。这里,我们指定最小支持度为0.01,最小置信度为0.2。

rules <- apriori(Groceries, parameter = list(supp = 0.01, conf = 0.2))

第4步:应用 inspect() 函数

inspect() 函数打印出R对象的内部表示或表达式的结果。这里,它显示了前10条强关联规则。

inspect(rules[1:10])

第5步:应用 itemFrequencyPlot() 函数

itemFrequencyPlot()为物品频率/支持率创建一个条形图。它创建了一个项目频率条形图,用于检查基于交易的对象的分布。项目是按照支持率降序绘制的。这里,’topN=20’意味着具有最高项目频率/支持度的20个项目将被绘制出来。

arules::itemFrequencyPlot(Groceries, topN = 20, 
                          col = brewer.pal(8, 'Pastel2'),
                          main = 'Relative Item Frequency Plot',
                          type = "relative",
                          ylab = "Item Frequency (Relative)")

以下是完整的R代码。

# Loading Libraries
library(arules)
library(arulesViz)
library(RColorBrewer)
 
# import dataset
data("Groceries")
 
# using apriori() function
rules <- apriori(Groceries,
                 parameter = list(supp = 0.01, conf = 0.2))
 
# using inspect() function
inspect(rules[1:10])
 
# using itemFrequencyPlot() function
arules::itemFrequencyPlot(Groceries, topN = 20,
                          col = brewer.pal(8, 'Pastel2'),
                          main = 'Relative Item Frequency Plot',
                          type = "relative",
                          ylab = "Item Frequency (Relative)")

输出

R编程中的Apriori算法

强势规则

应用Apriori算法后得到的强规则如下

R编程中的Apriori算法

运行上述Apriori算法的代码后,我们可以看到以下输出,根据支持度(最小支持度为0.01)、置信度(最小置信度为0.2)和提升度,指定了前10条最强的关联规则,同时还提到了产品在交易中一起出现的次数。

可视化

使用Lift作为参数的具有最高项目频率(相对)的前20个项目的箱形图

R编程中的Apriori算法

结论

我们使用了 “杂货店 “数据集,该数据集有大约9835个交易,包括从商店一起购买的 “n “个商品。在数据集上运行Apriori算法,最小支持值为0.01,最小置信度为0.2,我们已经过滤掉了交易中的强关联规则。我们在上面列出了前10个交易,以及具有最高相对项目频率的前20个项目的框图。我们可以从这个程序中得出的一些关联规则是。

  • 如果购买了硬奶酪,那么也会购买全脂牛奶。
  • 如果购买了酪乳,那么全脂牛奶也会一起购买。
  • 如果购买了酪乳,那么其他蔬菜也会一起购买。
  • 另外,全脂牛奶有很高的支持率和信任度。

因此,将 “全脂牛奶 “放在明显的、可触及的货架上是有利可图的,因为它是最经常购买的商品之一。另外,在放置 “酪乳 “的货架附近,应该有 “全脂牛奶 “和 “其他蔬菜 “的货架,因为它们的信心值相当高。因此,与酪乳一起购买它们的概率更高。因此,通过类似的行动,我们可以通过分析用户的购物模式来提高杂货店的销售额和利润。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程