有没有办法找到跨关联规则挖掘的组合支持?

问题描述 投票:0回答:1

我正在解决一个问题,旨在确定申请批准的规则集。我正在使用 arules 包中的 apriori 算法来查找关联规则,这些规则与历史数据中的所述批准一致。 我想要做的是了解我拥有的规则集是否涵盖了数据集中的所有批准,而不是对单个规则的支持。 作为一个理论示例,使用虹膜数据,尝试找到预测 Species = versicolor 的所有规则:

rules_1 <- apriori(iris, parameter = list(support = 0.02,
                                                      confidence = 0.95,
                                                      target = 'rules'),
                                     appearance = list(rhs = "Species=versicolor"))
inspect(rules_1)

输出如下所示(截断为 2 行,还有 21 条其他规则)

lhs 支持 信心 覆盖范围 电梯
{萼片.长度=[4.3,5.4), 花瓣.宽度=[0.867,1.6)} => {物种=杂色} 0.03333333 1 0.03333333 3 5
{萼片宽度=[2.9,3.2), 花瓣宽度=[0.867,1.6)} => {物种=杂色} 0.11333333 1 0.11333333 3 17

这个想法是,在只有 1 个 rhs 的情况下,如何提取 lhs 列,让我可以一次按所有这些规则过滤数据,然后查看我得到了多少行(知道有 50 行)杂色行)。

r arules
1个回答
0
投票

如果我理解正确,您可以在 arules 包中使用

supportingTransactions()
。这将告诉您哪些交易支持每条规则。然后,您可以使用事务 ID 上的集合并集来检查所有事务是否至少受一条规则支持。这是一个示例,它将告诉您数据中的哪些行被规则的 LHS 覆盖。

library(arules)

iris_trans <- transactions(iris)

rules_1 <- apriori(iris_trans, parameter = list(support = 0.02,
                                          confidence = 0.95,
                                          target = 'rules'),
                   appearance = list(rhs = "Species=versicolor"))
inspect(rules_1)

tid_list <- supportingTransactions(itemsets(lhs(rules_1)), iris_trans)
sort(as.integer(Reduce(union, LIST(tid_list))))
© www.soinside.com 2019 - 2024. All rights reserved.