R arules,仅从特定列中挖掘规则

Posted

技术标签:

【中文标题】R arules,仅从特定列中挖掘规则【英文标题】:R arules, mine only rules from specific column 【发布时间】:2013-08-19 13:17:47 【问题描述】:

我想挖掘特定的 rhs 规则。文档中有一个示例表明这是可能的,但仅适用于特定情况(如下所示)。首先一个数据集来说明我的问题:

input <- matrix( c( rep(10001,6) , rep(10002,3) , rep(10003,3), 100001,100002,100003,100004,100005,100006,100002,100003,100007,100002,100003,100008,rep('a',6),rep('b',6)), ncol=3)
colnames(input) <- c(letters[1:3])
input <- as.data.frame(input)

现在我可以创建规则了:

 r <- apriori(input)

查看规则:

inspect(r)

我只想挖掘在 rhs 上有 b=... 的规则。对于特定值,可以通过添加:

appearance = list(rhs = c("b=100001", "b=100002"),default="lhs")

到先验命令。当然,如果我想找到他们,我也必须调整信心。问题在于 b 列中的元素数量。在这个例子中,我可以手动输入“b=.....”格式的所有元素,但我不能在我自己的数据中输入。

我尝试使用 unique() 获取 b 的值,然后将其提供给 rhs,但它会产生错误,因为我给出的值如下:“100001”“100002”而不是“b=100001”“b =100002"。

是否只从特定列获取 rhs 规则?

如果没有,有没有一种简单的方法可以从“当前”生成“想要”?

current <- c("100001", "100002", "100003", "100004", "100005", "100006", "100007", "100008")
want    <- c("b=100001", "b=100002", "b=100003", "b=100004", "b=100005", "b=100006", "b=100007", "b=100008")

这个问题有点相关:Creating specific rules with arules in r 但这对我来说有同样的问题,只是方式不同。

【问题讨论】:

【参考方案1】:

你可以使用subset:

r <- apriori(input, parameter = list(support = 0.1, confidence = 0.1))
inspect( subset( r, subset = rhs %pin% "b=" ) )
#   lhs      rhs          support confidence     lift
# 1     => b=100002 0.2500000  0.2500000 1.000000
# 2     => b=100003 0.2500000  0.2500000 1.000000
# 3 c=b => b=100002 0.1666667  0.3333333 1.333333
# 4 c=b => b=100003 0.1666667  0.3333333 1.333333

第二个问题可以使用paste:

paste0( "b=", current )
# [1] "b=100001" "b=100002" "b=100003" "b=100004" "b=100005" "b=100006" "b=100007"
# [8] "b=100008"

【讨论】:

【参考方案2】:

arules documentation 现在有一个完全符合您要求的示例:

bItems <- grep("^b=", itemLabels(input), value = TRUE)
rules <- apriori(input, parameter = list(support = 0.1, confidence = 0.1),
 appearance = list(rhs = bItems))

我实际上并没有使用您的示例代码对此进行测试(arules 文档示例使用 transactions 对象,而不是 data.frame),但是对这些列标签进行 grep 处理应该可以解决问题。

【讨论】:

以上是关于R arules,仅从特定列中挖掘规则的主要内容,如果未能解决你的问题,请参考以下文章

使用 arules 的函数打包问题

数据挖掘中有哪些不同的模式评估措施?

不能使用R语言的arules的数据集怎么办

计算R中关联规则的信念值?

R语言关联分析之啤酒和尿布

在 R 中使用 Apriori 算法找不到规则