Правила: Найдите правила закрытых ассоциаций

В пакете aRules в R, как я могу эффективно работать нашли закрытые правила ассоциации? т.е. правила с закрытым набором элементов LHS

Набор элементов закрывается, если добавление любого элемента снижает поддержку.

Пакет предоставляет следующие варианты майнинга:

target: строка символов, указывающая тип добытой ассоциации. Один из

  • "частые наборы товаров"
  • "максимально частые наборы товаров"
  • "закрытые частые наборы товаров"
  • "правила" (доступно только для Априори)
  • «гиперперые множества» (доступно только для Apriori; см. ссылки для определения ассоциаций • гиперреберные множества)

Кажется, не существует варианта «закрытых правил». Есть два очевидных решения:

  1. Создавайте правила и применяйте фильтр для закрытых наборов элементов

    rules = apriori(data, parameter=list(target="rules")))
    rules <- rules[is.closed(generatingItemsets(rules))]
    

Это может быть довольно медленным. Например, для 5k транзакций с 10k элементами aPriori сгенерировал 8M правил за 10 секунд. Фильтр закрытия занял ~ 20 минут, в результате чего было закрыто ~ 3k правил.

  1. Найдите закрытые частые наборы элементов и примените фильтр для ассоциаций (уверенность, рост и т. Д.)

Еще не реализовано, но похоже на способ достижения чего-то гораздо более простого.

Если кто-то знает о других реализациях (других пакетах R или даже о чем-то вне R), которые могут это делать, указатели будут очень полезны. Например. Библиотека SPMF, похоже, поддерживает его , интересно, есть ли у кого-нибудь опыт его использования


person user997943    schedule 16.08.2016    source источник
comment
Библиотека SPMF предлагает быструю реализацию интеллектуального анализа закрытых ассоциативных правил в Java, а также многие другие алгоритмы для анализа ассоциативных правил. Вы можете проверить оболочку для вызова библиотеки SPMF из R (github.com/pommedeterresautee/spmf).   -  person Phil    schedule 18.08.2016


Ответы (2)


Функцию ruleInduction() можно использовать для создания закрытых правил, определенных Pei et al. (2000) как правила X -> Y, где и X, и Y являются закрытыми часто встречающимися наборами элементов. Следующее взято из справочной страницы (немного улучшено):

data("Adult")
## find all closed frequent itemsets
closed <- apriori(Adult, 
   parameter = list(target = "closed", support = 0.4))

## use rule induction to produce all closed association rules
closed_rules <- ruleInduction(closed, Adult)

## X&Y are already closed, check that X is also closed
closed_rules[is.element(lhs(closed_rules), items(closed))]

## inspect the resulting closed rules
summary(closed_rules)
inspect(head(closed_rules, by = "lift"))
person Michael Hahsler    schedule 08.01.2017

В arules поддержка пакета - это процент транзакций, которые содержат все элементы в комбинированных LHS и RHS набора элементов. Другими словами, объединение элементов на LHS и RHS.

Это означает, что использование параметра target = 'closed frequent itemsets' в вашем apriori() вызове разрешит ваш первый вопрос и создаст только закрытые наборы элементов / правила на основе закрытых наборов элементов.

Точно так же, чтобы ответить на вторую часть вашего вопроса, существуют параметры для фильтрации по достоверности и росту до создания правил. Таким образом, вам не нужно будет отфильтровывать правила после того, как правила будут сгенерированы, и вы получите такие же результаты, как и искали.

Кроме того, фильтрация закрытых наборов элементов, уверенности, роста и т. Д. В вашем apriori() вызове ускорит процесс добычи.

person Tony B    schedule 19.02.2017