r - 按提升度和置信度对规则进行排序

标签 r arules

我正在尝试使用 R 中 arules 包中的 apriori 函数查找关联规则。

rules <- apriori(data=data, parameter=list(supp=0.001,conf = 0.08), 
                  appearance = list(default="lhs",rhs="YOGHURT"),
                  control = list(verbose=F))

rules <- sort(rules, decreasing=TRUE,by="confidence")

inspect(rules[1:3])


    lhs       rhs      support      confidence       lift
1. {A,B}     {C}       0.04           0.96           0.25
2. {C,A}     {D}       0.05           0.95           0.26
3. {B,D}     {A,C}     0.03           0.93           0.24

通过上面显示的代码,我在变量“rules”中保存了一些关联规则,这些规则按置信度递减的方式排序。但我想同时通过信心和提升来制定这些规则。我尝试了这个,但出现错误:

rules <- sort(rules, decreasing=TRUE,by=c("confidence","lift"))

Error in .subset2(x, i, exact = exact) : subscript out of bounds

有没有办法同时按置信度和提升度对规则进行排序?

最佳答案

我还没想过这个问题。加载 arules 后,您可以将以下代码复制并粘贴到 R session 中。

setMethod("sort", signature(x = "associations"),
  function (x, decreasing = TRUE, na.last = NA, by = "support", ...) {
    q <- quality(x)
    q <- q[, pmatch(by, colnames(q)), drop = FALSE]
    if(is.null(q)) stop("Unknown interest measure to sort by.")
    if(length(x) == 0) return(x)

    x[do.call(order, c(q, list(na.last = na.last, decreasing = decreasing)))]
}) 

现在您的原始代码应该可以工作了。

> data("Adult")
> rules <- apriori(Adult, parameter = list(supp = 0.5, conf = 0.9, target = "rules"))
> inspect(head(sort(rules, by=c("supp", "conf"))))
  lhs                               rhs                   support confidence      lift
1 {}                             => {capital-loss=None} 0.9532779  0.9532779 1.0000000
2 {}                             => {capital-gain=None} 0.9173867  0.9173867 1.0000000
3 {capital-gain=None}            => {capital-loss=None} 0.8706646  0.9490705 0.9955863
4 {capital-loss=None}            => {capital-gain=None} 0.8706646  0.9133376 0.9955863
5 {native-country=United-States} => {capital-loss=None} 0.8548380  0.9525461 0.9992323
6 {native-country=United-States} => {capital-gain=None} 0.8219565  0.9159062 0.9983862

这将是 arules 下一版本的一部分。

关于r - 按提升度和置信度对规则进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32106764/

相关文章:

带有inspect()函数的R错误

R arules - 匹配规则的交易子集

r - 从 SQL Server 获取数据时使用 arules 的关联规则

r - arulesViz "graph"图不显示连接

r - 从 R 中的两个表中查找不重叠的值

regex - R - 将可变数量的空格插入邮政编码字符串

r - 使用 `` magrittr : :`%>%` `` 时 magrittr 管道出错

r - 为什么 read.zoo 在时间可用时将索引作为日期

r - R 中的时间序列和 STL : Error only univariate series are allowed

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