📜  大数据分析-关联规则

📅  最后修改于: 2020-12-02 06:45:02             🧑  作者: Mango


I = i 1 ,i 2 ,…,i n是一组称为项的n个二进制属性。令D = t 1 ,t 2 ,…,t m是称为数据库的一组事务。 D中的每个事务都有唯一的事务ID,并且包含I中项的子集。规则定义为X⇒Y的形式,其中X,Y⊆I和X∩Y =∅。

项目集(对于短项目集)X和Y称为规则的前项(左侧或LHS),其后称为规则的右侧(右侧或RHS)。

为了说明这些概念,我们使用超市领域的一个小例子。项目集为I = {牛奶,面包,黄油,啤酒},下表中显示了一个包含这些项目的小型数据库。

Transaction ID Items
1 milk, bread
2 bread, butter
3 beer
4 milk, bread, butter
5 bread, butter

超级市场的一个示例规则可以是{牛奶,面包}⇒{黄油},这意味着如果购买了牛奶和面包,那么顾客也会购买黄油。为了从所有可能规则的集合中选择有趣的规则,可以使用对重要性和兴趣的各种度量的约束。最著名的限制是支持和信心的最低阈值。

项目集X的支持supp(X)定义为包含该项目集的数据集中的交易比例。在表1的示例数据库中,项目集{牛奶,面包}支持2/5 = 0.4,因为它发生在所有事务的40%(5个事务中的2个)中。查找频繁的项目集可以看作是无监督学习问题的简化。

规则的置信度定义为conf(X⇒Y)= supp(X∪Y)/ supp(X)。例如,规则{牛奶,面包}⇒{黄油}在表1的数据库中的置信度为0.2 / 0.4 = 0.5,这意味着对于50%的包含牛奶和面包的交易,该规则是正确的。置信度可以解释为概率P(Y | X)的估计,概率P(Y | X)是在交易中也包含LHS的情况下找到规则的RHS的概率。

在位于bda / part3 / apriori.R中的脚本中,可以找到实现apriori算法的代码。

# Load the library for doing association rules
# install.packages(’arules’) 
library(arules)  

# Data preprocessing 
data("AdultUCI") 
AdultUCI[1:2,]  
AdultUCI[["fnlwgt"]] 0]),Inf)), 
   labels = c("None", "Low", "High")) 
AdultUCI[[ "capital-loss"]] 0]),Inf)), 
   labels = c("none", "low", "high"))

为了使用先验算法生成规则,我们需要创建一个交易矩阵。以下代码显示了如何在R中执行此操作。

# Convert the data into a transactions format
Adult  {sex = Male}        0.02856148  0.9362416   1.4005486
# {occupation = Farming-fishing} => {race = White}      0.02831579  0.9281879   1.0855456
# {occupation = Farming-fishing} => {native-country     0.02671881  0.8758389   0.9759474
                                       = United-States}