首页 > 解决方案 > R:Apriori 算法没有找到任何关联规则

问题描述

我生成了一个包含两个不同列的数据集:与客户关联的 ID 列和与他/她的活动产品关联的另一列:

head(df_itemList)

      ID      PRD_LISTE
1     1       A,B,C
3     2       C,D
4     3       A,B
5     4       A,B,C,D,E
7     5       B,A,D
8     6       A,C,D

我只选择了拥有不止一种产品的客户。我总共有 589.454 行,有 16 种不同的产品。

接下来,我将 data.frame 写入 csv 文件,如下所示:

df_itemList$ID <- NULL
colnames(df_itemList) <- c("itemList")
write.csv(df_itemList, "Basket_List_13-08-2020.csv", row.names = TRUE)

然后,我将 csv 文件转换为篮子格式,以便应用 arules 包中实现的先验算法。

library(arules)  
txn <- read.transactions(file="Basket_List_13-08-2020.csv", 
                         rm.duplicates= TRUE, format="basket",sep=",",cols=1)
txn@itemInfo$labels <- gsub("\"","",txn@itemInfo$labels)

摘要函数产生以下输出:

summary(txn)
transactions as itemMatrix in sparse format with
 589455 rows (elements/itemsets/transactions) and
 1737 columns (items) and a density of 0.0005757052 

most frequent items:
                   A,C                    A,B                     C,F                     C,D
                  57894                   32150                   31367                   29434 
                  A,B,C                 (Other) 
                  29035                  409575 

element (itemset/transaction) length distribution:
sizes
     1 
589455 

   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
      1       1       1       1       1       1 

includes extended item information - examples:
                                                                             labels
1 G,H,I,A,B,C,D,F,J
2 G,H,I,A,B,C,F
3 G,H,I,A,B,K,D

includes extended transaction information - examples:
  transactionID
1              
2             1
3             3

现在,我尝试运行先验算法:

basket_rules <- apriori(txn, parameter = list(sup = 1e-15, 
                                              conf = 1e-15, minlen = 2, target="rules"))

这是输出:

   Apriori

Parameter specification:
 confidence minval smax arem  aval originalSupport maxtime support minlen maxlen target  ext
       0.01    0.1    1 none FALSE            TRUE       5   1e-15      2     10  rules TRUE

Algorithmic control:
 filter tree heap memopt load sort verbose
    0.1 TRUE TRUE  FALSE TRUE    2    TRUE

Absolute minimum support count: 0 

set item appearances ...[0 item(s)] done [0.00s].
set transactions ...[1737 item(s), 589455 transaction(s)] done [0.20s].
sorting and recoding items ... [1737 item(s)] done [0.00s].
creating transaction tree ... done [0.16s].
checking subsets of size 1 done [0.00s].
writing ... [0 rule(s)] done [0.00s].
creating S4 object  ... done [0.04s].

即使支持和信心低得离谱,也不会产生任何规则......

summary(basket_rules)
set of 0 rules

这真的是因为我的数据集吗?还是我的代码有错误?

标签: rdata-sciencepredictionapriori

解决方案


您的摘要显示数据未正确读取:

most frequent items:
                   A,C                    A,B                     C,F                     C,D
                  57894                   32150                   31367                   29434 
                  A,B,C                 (Other) 
                  29035                  409575 

看起来像“A,C”被读取为一个项目,但它应该是两个项目“A”和“C”。分隔符不起作用。我认为这可能是因为文件中的引号。确保Basket_List_13-08-2020.csv看起来正确。此外,您需要skip = 1在阅读交易时跳过第一行(标题)。


推荐阅读