R - arules包和r工作室中的关联规则挖掘

时间:2015-03-18 16:25:17

标签: r analytics data-mining

我在数据集中挖掘模式,该数据集包含1000个14种商品的交易。根据产品是否购买,每个交易在产品列中都有0或1。大多数变量的值为0。

当我在此数据集上使用apriori算法时,最重要的规则是针对未购买的产品,例如: {var1 = 0,var2 = 0,var3 = 0} => {VAR4 = 0} 但是我更想知道哪些产品是一起购买的。

数据集:     Trans var1 var2 var3 var4     1 1 0 1 1     2 0 0 0 1     3 0 0 1 0     4 0 0 0 1     5 1 0 1 0     6 1 0 0 0

rules <- apriori(dataset,
 parameter = list(minlen=3, supp=0.002, conf=0.2),
 appearance = list(rhs=c("var1=1","var2=1","var3=1"),
 lhs=c("var1=1","var2=1","var3=1"),
 default="none"),
 control = list(verbose=F))

首先,当我尝试运行时,R studio正在崩溃。 第二点,我有兴趣将这段代码运行为:

rules <- apriori(dataset,
 parameter = list(minlen=3, supp=0.002, conf=0.2),
 appearance = list(rhs!=c("var1=0","var2=0","var3=0"),
 lhs!=c("var1=0","var2=0","var3=0"),
 default="none"),
 control = list(verbose=F))

这是错误的!!

差异:!=和0而不是1 因此,我只获得购买商品的图案,而不是购买的商品。

提前致谢!!

1 个答案:

答案 0 :(得分:1)

我能够找到解决此问题的解决方法:

我将数据框更改为矩阵,我不再获取未被删除的项目的模式。也许这就是算法的工作方式,或者(希望)我的方法中存在一些错误。

m <- as.matrix(dataset[,-1]) # removing the transaction id column
names(m) <- paste("Transaction " ,rownames(dataset))
rules.all <- apriori(as(m,"transactions"),parameter = 
                           list(support = 0.1, confidence = 0.8))
inspect(rules.all)
rules.sorted <- sort(rules.all, by="lift")
inspect(rules.sorted)
subset.matrix <- is.subset(rules.sorted, rules.sorted)
subset.matrix[lower.tri(subset.matrix, diag=T)] <- NA
redundant <- colSums(subset.matrix, na.rm=T) >= 1
which(redundant)
plot(rules.all)

谢谢!