R中的Apriori算法,不是否定规则

时间:2018-06-03 11:25:51

标签: r algorithm associations apriori

我有一个大的二进制数据集,我希望在R中运行一个apriori算法。问题在于算法正在制定所有0的规则,我只希望看1。 例如,获得以下规则:

        lhs                                                        rhs     support   confidence lift      count
[1]    {SPA=0,SPD=0,SPE=0,SPF=1,SPJ=0}                         => {SPC=0} 0.2036065 0.9866727  1.0174854  6515
[2]    {SPA=0,SPD=0,SPE=0,SPF=1}                               => {SPC=0} 0.2163885 0.9864653  1.0172715  6924
[3]    {SPA=0,SPD=0,SPF=1,SPJ=0}                               => {SPC=0} 0.2070754 0.9852788  1.0160479  6626

有谁知道如何只查找变量为1而不是0的规则?谢谢!

2 个答案:

答案 0 :(得分:0)

您可以使用appearance参数apriori来控制此项。由于您不提供数据,我将使用内置的成人数据作为示例,但我认为您需要在您的先验声明中添加appearance=list(rhs = "SPC=1")

实施例

我将仅生成rhs为native-country = United-States

的规则
rules <- apriori(Adult, 
    parameter = list(supp = 0.4, conf = 0.6, 
        minlen=2, target = "rules"),
    appearance=list(rhs = "native-country=United-States")
)

inspect(rhs(rules[1:5]))
    items                         
[1] {native-country=United-States}
[2] {native-country=United-States}
[3] {native-country=United-States}
[4] {native-country=United-States}
[5] {native-country=United-States}

加成

我以为你只想要rhs上的SPC = 1。根据您的评论,我现在认为您要生成根本不包含XYZ = 0项的规则。您也可以使用appearance获取此信息。首先识别XYZ = 0的可能项目,然后使用外观排除这些项目。我不知道你的变量被调用了什么,所以我调用了事务TransactionData

## identify items to exclude
excluded <- grep("=0", itemLabels(TransactionData), value = TRUE)

然后将其添加到您的apriori语句中。

appearance=list(none = excluded)

答案 1 :(得分:0)

解决此问题的最简单方法是在创建事务之前使矩阵成为逻辑。对于矩阵m,您可以执行以下操作:

storage.mode(m) <- "logical"
trans <- as(m, transactions)