r - 如何使用arules识别top n推荐商品及其规则?

标签 r apriori arules

虽然head()可用于提取前n条规则,但某些RHS项目可能会出现多次。我想找到前 n 个唯一的 RHS 项目以及每个此类项目的首要规则。

我已经编写了完成此操作的代码,但运行速度非常慢,可能是由于使用了“子集”函数,效率非常低。我的代码迭代 RHS 的唯一项目,找到与其相关的规则子集,并返回该项目的单个顶级规则。这是一种有效的或高效的方法吗?有更好的办法吗?

library(arules)
data("Groceries")
rules = apriori(Groceries,
                parameter = list(supp = 0.01, conf = 0.1, target = "rules"),
                appearance = list(lhs=c("whole milk", "root vegetables"), default="rhs"))

rules = sort(rules, by=c("confidence", "lift", "support"))
rhs.unique = unique(rules@rhs@itemInfo$labels[rules@rhs@data@i+1]) #Already sorted by top items.

#Function that returns the top rule for a particular RHS item in a set of rules.
top_item_rule = function(item, rules=NULL) {
  rules = subset(rules, rhs %in% item)
  rules = sort(rules, by=c("confidence", "lift", "support"))
  head(rules, n=1)
}

n = 3
toprules = lapply(rhs.unique[1:n], top_item_rule, rules)
toprules = do.call(c, args=toprules)

最佳答案

这个怎么样?

rules <- sort(rules, by=c("confidence", "lift", "support"))
rules[!duplicated(rhs(rules))]

它返回每个 rhs 的顶部(排序后的第一个)规则。

关于r - 如何使用arules识别top n推荐商品及其规则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46772380/

相关文章:

css - Shiny :DT 中的复选框使行高度变化更大

c# - 通过 COM 将 DataTable 传递到 R

r - 大数据从arules包转换为 "transactions"

r - 我们如何才能找到对规则的先验支持和信心?

r - 从包中查看内置数据集

r - 正确地将数据帧转换为 R 中 arule 的事务

r - 无法从表达式中删除无关的 ()

r - Shinyapps.io 和 github 包

c# - 如何在 T-SQL 语句中找到 Apriori 关联?

R arulesSequences 查找序列支持哪些模式