Правило ассоциации в R - удаление избыточного правила (arules)
Предположим, у нас есть 3 правила:
[1] {A,B,D} -> {C}
[2] {A,B} -> {C}
[3] Whatever it is
правило[2]
это подмножество правил[1]
(потому что правило[1]
содержит все элементы в правиле[2]
), так правило[1]
должны быть устранены (потому что правило[1]
является слишком конкретным, и его информация включена в правило[2]
)
Я искал в Интернете, и все используют этот код для удаления лишних правил:
subset.matrix <- is.subset(rules.sorted, rules.sorted)
subset.matrix[lower.tri(subset.matrix, diag=T)] <- NA
redundant <- colSums(subset.matrix, na.rm=T) >= 1
which(redundant)
rules.pruned <- rules.sorted[!redundant]
Я не понимаю, как работает код.
После строки 2 кода subset.matrix станет:
[,1] [,2] [,3]
[1,] NA 1 0
[2,] NA NA 0
[3,] NA NA NA
Ячейки в нижнем треугольнике установлены как NA и, поскольку правило[2]
это подмножество правил[1]
соответствующая ячейка установлена на 1. Итак, у меня есть 2 вопроса:
Почему мы должны установить нижний треугольник как NA? Если мы сделаем это, то как мы можем проверить, является ли правило[2]
это подмножество правил[3]
или нет? (ячейка была установлена как NA)
В нашем случае правило[1]
должен быть исключен, но этот код исключает правило[2]
вместо правила[1]
, (Поскольку первая ячейка в столбце 2 равна 1, и в соответствии со строкой 3 кода суммы столбцов столбца 2> = 1 будут рассматриваться как избыточные)
Любая помощь будет оценена !!