Как я могу получить частоты общих наборов элементов из априорного вызова в R?

Проблема:

Функция apriori пакета arules выводит правила ассоциации из входных транзакций и сообщает о поддержке , достоверность и повышение каждого правила. Правила ассоциации основаны на часто используемых наборах элементов. Я хотел бы получить наиболее частые наборы элементов во входных транзакциях. В частности, я хотел бы получить все наборы элементов с заданной минимальной поддержкой. Поддержка набора элементов - это отношение количества транзакций, содержащих набор элементов, к общему количеству транзакций.

Требования:

  1. Я бы очень предпочел найти наиболее частые наборы элементов из промежуточных результатов функции apriori . То есть, я бы предпочел не писать программу с нуля только для вычисления наиболее частых наборов элементов, потому что функция apriori уже вычисляет их как промежуточный шаг. Тем не менее, если действительно нет разумного способа доступа к промежуточным результатам функции apriori , я открыт для других решений.
  2. Я бы предпочел не выполнять строковые манипуляции с результатом функции apriori , потому что этот подход будет слишком зависеть от строкового представления результата функции apriori . Опять же, если окажется, что нет лучших альтернатив, я могу прибегнуть к этому подходу.
  3. Мне известно о функции itemFrequency , предоставляемой пакетом arules . К сожалению, эта функция просто сообщает о наборах элементов с помощью одного элемента. Меня интересуют все наборы предметов любой длины с минимальной поддержкой.
  4. Я бы хотел, чтобы вывод был отсортирован по поддержке численно, а затем по набору элементов лексикографически.

Пример ввода:

a,b
a,b,c

Программа:

# The following is how I'm using apriori to infer the association rules.
library(package = "arules")
transactions = read.transactions(file = file("stdin"), format = "basket", sep = ",")
rules = apriori(transactions, parameter = list(minlen=1, sup = 0.001, conf = 0.001))
WRITE(rules, file = "", sep = ",", quote = TRUE, col.names = NA)

Текущий вывод:

"","rules","support","confidence","lift"
"1","{} => {c}",0.5,0.5,1
"2","{} => {b}",1,1,1
"3","{} => {a}",1,1,1
"4","{c} => {b}",0.5,1,1
"5","{b} => {c}",0.5,0.5,1
"6","{c} => {a}",0.5,1,1
"7","{a} => {c}",0.5,0.5,1
"8","{b} => {a}",1,1,1
"9","{a} => {b}",1,1,1
"10","{b,c} => {a}",0.5,1,1
"11","{a,c} => {b}",0.5,1,1
"12","{a,b} => {c}",0.5,0.5,1

Желаемый результат:

"itemset","support"
"{a}",1
"{a,b}",1
"{b}",1
"{a,b,c}",0.5
"{a,c}",0.5
"{b,c}",0.5
"{c}",0.5

5
задан reprogrammer 15 January 2012 в 00:39
поделиться