Предположим, у нас есть 3 правила:правило ассоциации в R - удаление избыточного правила (arules)
[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
клеток в нижнем треугольнике заданы равной Н.А. и так как правило [2]
является подмножеством правила [1]
, соответствующая ячейка устанавливается на 1. Итак, у меня есть 2 вопроса:
Почему мы должны установить нижний треугольник как NA? Если мы это сделаем, то как мы можем проверить, является ли правило
[2]
подмножеством правила[3]
или нет? (Ячейка была установлена в качестве NA)В нашем случае, правило
[1]
должен быть один, чтобы быть устранены, но это код устранить правило[2]
вместо правила[1]
. (Поскольку первая ячейка в колонке 2 равен 1, а по линии 3 кода, суммы столбцов колонке 2> = 1, следовательно, будет рассматриваться как избыточно)
Любая помощь будет оценена! !
Никто не может помочь? – BigData