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包中实现的apriori算法。

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

现在,我尝试运行apriori算法:

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

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

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

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跳过第一行(标头(。

@Michael我现在很确定我正在读取的.csv文件有问题。由于还有其他人遇到了类似的问题,我猜测这是错误的常见原因。你能描述一下.csv文件在读入时应该是什么样子吗?

当输入data <- read.csv("file.csv", header = TRUE, sep = ",")时,我得到以下数据。帧:

X     Prd
1     A
2     A,B
3     B,A
4     B
5     C

如果客户X有多个产品,那么这些产品都写在一列中,这正确吗?或者应该写在不同的列中?

此外,在编写txn <- read.transactions(file="Versicherungen2_ItemList_Short.csv", rm.duplicates= TRUE, format="basket",sep=",",cols=1, skip=1)summary(txn)时,我看到以下问题:

most frequent items:
A             B            C           A,B            B,A
1256          1235         456         235            125

(数字随机选择(

所以read.transaction函数区分A,B和B,A。。。所以我猜.csv文件.有问题

最新更新