Удаление инвертированных (обратных / дублирующих) правил из Apriori приводит к R
Я реализовал алгоритм Apriori в своем наборе данных и успешно отфильтровал его для получения только положительных результатов. Правила, которые я получаю, являются перевернутыми повторениями:
lhs rhs support confidence lift
1 {Mobile=1} => {Earphone=1} 0.025563474 0.09925997 0.3808200
2 {Earphone=1} => {Mobile=1} 0.025563474 0.09807662 0.3808200
3 {Jeans=1} => {Shirt=1} 0.024030494 0.09389671 0.3637123
4 {Shirt=1} => {Jeans=1} 0.024030494 0.09308297 0.3637123
Как видно, правило 1 и правило 2 одинаковы, только LHS и RHS взаимозаменяемы. Есть ли способ удалить такие правила из конечного результата?
Мой код:
transactions <- as(sold_data, "transactions");
rules = apriori(transactions, parameter=list(support=0.001, confidence=0.05));
rules_subset <- sort(
subset(rules,
(lhs %in% c("Mobile=1", "Earphone=1", "Watch=1", "Jeans=1", "Shirt=1")) &
!(lhs %in% c("Mobile=0", "Earphone=0", "Watch=0", "Jeans=0", "Shirt=0")) &
(rhs %in% c("Mobile=1", "Earphone=1", "Watch=1", "Jeans=1", "Shirt=1"))
),
decreasing = TRUE,
by = "support"
);
inspect(subset_rules);
Я новичок в R, поэтому, если этот вопрос уже задавался, пожалуйста, не понижайте его, я сниму вопрос
1 ответ
То, на что вы ссылаетесь, называется избыточными правилами. Эти правила могут быть легко удалены с помощью кода ниже.
transactions <- as(sold_data, "transactions")
rules = apriori(transactions, parameter=list(support=0.001, confidence=0.05))
subset.matrix <- is.subset(rules,rules)
subset.matrix[lower.tri(subset.matrix,diag=T)] <- NA
redundant <- colSums(subset.matrix,na.rm=T) >= 1
rules <- rules[!redundant]