Проблема:
Функция apriori пакета arules выводит правила ассоциации из входных транзакций и сообщает о поддержке , достоверность и повышение каждого правила. Правила ассоциации основаны на часто используемых наборах элементов. Я хотел бы получить наиболее частые наборы элементов во входных транзакциях. В частности, я хотел бы получить все наборы элементов с заданной минимальной поддержкой. Поддержка набора элементов - это отношение количества транзакций, содержащих набор элементов, к общему количеству транзакций.
Требования:
itemFrequency
, предоставляемой пакетом arules . К сожалению, эта функция просто сообщает о наборах элементов с помощью одного элемента. Меня интересуют все наборы предметов любой длины с минимальной поддержкой. Пример ввода:
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