R:Apriori 算法没有找到任何关联规则

Posted

技术标签:

【中文标题】R:Apriori 算法没有找到任何关联规则【英文标题】:R: Apriori Algorithm does not find any association rules 【发布时间】:2020-08-13 08:57:32 【问题描述】:

我生成了一个包含两个不同列的数据集:一个与客户关联的 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-package 中实现的先验算法。

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-function 产生以下输出:

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

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

【参考方案2】:

@Michael 我现在非常肯定我正在阅读的 .csv 文件有问题。由于其他人遇到过类似的问题,我的猜测是这是错误的常见原因。您能否描述一下 .csv 文件在读入时的样子?

输入data &lt;- read.csv("file.csv", header = TRUE, sep = ",") 时,我得到以下data.frame:

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

如果客户 X 有多个产品 - 这些产品都写在一个列中,这是否正确?还是应该分栏写?

此外,在编写txn &lt;- 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 文件有问题。

【讨论】:

我想就是这样。 .csv 需要在不同的列中包含不同的项目。

以上是关于R:Apriori 算法没有找到任何关联规则的主要内容,如果未能解决你的问题,请参考以下文章

无监督学习算法-Apriori进行关联分析

机器学习算法关联规则-1 关联规则的概念,Apriori算法,实例和优缺点

R语言Apriori算法关联规则对中药用药复方配伍规律药方挖掘可视化

R语言关联规则模型(Apriori算法)挖掘杂货店的交易数据与交互可视化

R语言apriori算法进行关联规则挖掘(限制规则的左侧或者右侧的内容进行具体规则挖掘)使用subset函数进一步筛选生成的规则去除左侧规则中的冗余信息获取更独特的有新意的关联规则

r apriori算法结果怎么看