Удаление инвертированных (обратных / дублирующих) правил из 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]
Другие вопросы по тегам