Р: Правила ассоциации (arules) не пишут никаких правил - мой набор данных слишком мал?

Я прочитал Stack и различную документацию онлайн, и я все еще не заставляю это работать.

У меня есть набор данных 5,368 транзакций. Они представляют собой лист Excel с несколькими различными столбцами - CustomerID, ItemID и OrderID (см. Ниже, данные поступают так, как показано в A1:C10).

У меня есть 3 вопроса:

  • В каком конкретно формате должны быть данные? Я попытался прочитать его, используя все 3 формата, показанные ниже. Я могу получить read.transaction для чтения данных в любом из этих форматов, но когда я запускаю apriori, он просто дает мне 1 правило (а иногда и нет). Даже для того, чтобы получить это единственное правило, я должен установить достоверность 0,01, а lhs всегда пусто.

  • При последней попытке я использовал формат, показанный в строке 21. Я даже вырезал все отдельные транзакции (строки 23 и 24). Затем я запустил этот синтаксис:

sb<-read.transactions(file = "~/Downloads/sbasket.csv",sep = ",")

Я думаю, что я даже пытался:

sb<-read.transactions(file = "~/Downloads/sbasket.csv", format="single",sep=",", cols=c(1,2))
  • Насколько большим должен быть ваш набор данных? Мой набор данных состоит из 5 368 строк, из которых только 366 содержат несколько транзакций (поэтому большинство строк в данных аналогичны строке 6 ниже), поэтому примерно только 7% моих общих данных имеют несколько корзин элементов. Поэтому я не получаю никаких правил? Вот почему я пытался исключить все заказы из одной корзины, но даже это не помогло.

2 ответа

Я ничего не знаю о "arules", но возможно ли проблема в том, что он ожидает CSV, а вы загружаете таблицу Excel? Может быть, попробуйте использовать пакет 'openxlsx', чтобы сначала прочитать файл, а затем ввести его в read.transactions?

arules можно читать в формате 1 и 3. Используйте summary(sb) чтобы убедиться, что элементы читаются правильно. Вот пример для вашего формата 3:

trans_txt <- "13,19,20\n17\n1,\n16,17"
write(trans_txt, file = "trans.txt")

library("arules")
trans <- read.transactions("trans.txt", sep = ",")
summary(trans)

  transactions as itemMatrix in sparse format with
  4 rows (elements/itemsets/transactions) and
  6 columns (items) and a density of 0.2916667 

  most frequent items:
    17       1      13      16      19 (Other) 
     2       1       1       1       1       1 

  element (itemset/transaction) length distribution:
  sizes
  1 2 3 
  2 1 1 

  Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  1.00    1.00    1.50    1.75    2.25    3.00 

  includes extended item information - examples:
  labels
  1      1
  2     13
  3     16

rules <- apriori(trans)
inspect(rules)

     lhs        rhs  support confidence lift count
[1]  {16}    => {17} 0.25    1          2    1    
[2]  {19}    => {20} 0.25    1          4    1    
[3]  {20}    => {19} 0.25    1          4    1    
[4]  {19}    => {13} 0.25    1          4    1    
[5]  {13}    => {19} 0.25    1          4    1    
[6]  {20}    => {13} 0.25    1          4    1    
[7]  {13}    => {20} 0.25    1          4    1    
[8]  {19,20} => {13} 0.25    1          4    1    
[9]  {13,19} => {20} 0.25    1          4    1    
[10] {13,20} => {19} 0.25    1          4    1 
Другие вопросы по тегам