Правила ассоциации с использованием Arules и ArulesViz из данных

У меня есть фрейм данных R с customer_id и product_name. У клиента может быть несколько продуктов. В столбце клиента есть дубликаты идентификаторов клиентов из-за того, что у них есть несколько продуктов.

Я пытаюсь провести базовый априорный анализ и определить некоторые правила ассоциации для продуктов, купленных вместе. Для этого я хотел бы использовать пакет Arules и ArulesViz в R.

Когда я пытался запустить это, я обычно получаю 0 правил или левый продукт -> правый клиент_ид. Поэтому я не верю, что загружаю данные правильно, чтобы просмотреть несколько продуктов для одного клиента, чтобы получить ассоциации.

Любая помощь будет оценена по достоинству!

Пример базового фрейма данных

df <- data.frame( cust_id = as.factor(c('1aa2j', '1aa2j', '2b345',
'2b345', 'g78a8', 'y67r3')), product = as.factor(c("Bat", "Sock",
"Hat", "Shirt", "Ball", "Shorts")))

rules <- apriori(df) inspect(rules)

lhs rhs support confidence lift 1 {product=Bat} => {cust_id=1aa2j} 0.167 1 3
2 {product=Sock} => {cust_id=1aa2j} 0.167 1 3
3 {product=Hat} => {cust_id=2b345} 0.167 1 3
4 {product=Shirt} => {cust_id=2b345} 0.167 1 3
5 {cust_id=g78a8} => {product=Ball} 0.167 1 6
6 {product=Ball} => {cust_id=g78a8} 0.167 1 6
7 {cust_id=y67r3} => {product=Shorts} 0.167 1 6
8 {product=Shorts} => {cust_id=y67r3} 0.167 1 6

person Andre    schedule 02.07.2017    source источник


Ответы (1)


Это взято из примеров для transactions (с небольшими изменениями):

library(arules)
df <- data.frame( cust_id = as.factor(c('1aa2j', '1aa2j', '2b345',
'2b345', 'g78a8', 'y67r3')), product = as.factor(c("Bat", "Sock",
"Hat", "Shirt", "Ball", "Shorts")))

trans <- as(split(df[,"product"], df[,"cust_id"]), "transactions")
inspect(trans)

    items       transactionID
[1] {Bat,Sock}  1aa2j        
[2] {Hat,Shirt} 2b345        
[3] {Ball}      g78a8        
[4] {Shorts}    y67r3 

Теперь вы можете использовать apriori на trans.

person Michael Hahsler    schedule 03.07.2017