2016-08-16 78 views
1

在R中的aRules包中,我怎么能有效地找到关闭关联规则?即具有封闭LHS项目集的规则R aRules:查找封闭关联规则

如果添加任何项目会减少支持,则项目集关闭。

的包提供以下采矿选项:

目标:指示关联的开采的类型的字符串。 一个

  • “频繁项集”
  • “最大频繁项集”
  • “闭频繁项集”
  • “规则”(仅适用于先验)
  • “hyperedgesets”(仅适用对于Apriori;参见定义关联•超定值)

似乎没有“封闭规则”选项。有两个明显的变通办法:

  1. 矿规则和封闭项集

    rules = apriori(data, parameter=list(target="rules"))) 
    rules <- rules[is.closed(generatingItemsets(rules))] 
    

这可以说是相当缓慢的应用过滤器。例如,对于10k项目的5k交易,aPriori在10秒内生成8M规则。关闭过滤器花费了大约20分钟,导致约3万个关闭规则。

  • 煤矿关闭频繁项集和关联应用过滤器(置信度,提升等)
  • 尚未实现,但它似乎是一个周围实现的东西很多方式简单。如果有人知道其他的实现(其他R包或甚至R之外的东西),可以这样做,指针会非常有帮助。例如, The SPMF library似乎已经对它的支持,想知道是否有人使用它

    +0

    SPMF库提供了Java中封闭关联规则挖掘的快速实现以及许多关联规则挖掘的其他算法。你可以检查包装从R调用SPMF库(https://github.com/pommedeterresautee/spmf)。 – Phil

    回答

    0

    功能ruleInduction()可用于创建 培等人定义的封闭的规则有经验。 (2000)作为规则X -> Y,其中XY 是关闭的频繁项目集。从手册页(略增强)采取以下:

    data("Adult") 
    ## find all closed frequent itemsets 
    closed <- apriori(Adult, 
        parameter = list(target = "closed", support = 0.4)) 
    
    ## use rule induction to produce all closed association rules 
    closed_rules <- ruleInduction(closed, Adult) 
    
    ## X&Y are already closed, check that X is also closed 
    closed_rules[is.element(lhs(closed_rules), items(closed))] 
    
    ## inspect the resulting closed rules 
    summary(closed_rules) 
    inspect(head(closed_rules, by = "lift")) 
    
    0

    arules包的支持是包含在套装的结合LHS & RHS所有项目交易的百分比。换句话说,在LHS & RHS上的项目的联合。

    这意味着,使用参数target = 'closed frequent itemsets'apriori()通话将解决你的第一个问题,只能产生闭合项目集/ 规则基于封闭项目集。

    同样,要回答您的问题的第二部分,在生成规则之前存在用于通过置信度和提升过滤的参数。这样,在生成规则后,您不必过滤掉规则,并且您将得到与您正在寻找的相同的结果。

    此外,在您的apriori()调用中过滤关闭的项目集,置信度,升降等将加快清除过程。