Apriori / Market Basket Analysis - 对特定长度项目集的限制分析

Posted

技术标签:

【中文标题】Apriori / Market Basket Analysis - 对特定长度项目集的限制分析【英文标题】:Apriori / Market Basket Analysis - limit analysis to itemsets of specific length 【发布时间】:2019-09-30 13:10:26 【问题描述】:

我正在尝试挖掘数据集中的频繁项集,该数据集中包含经常一起销售的产品的项集。


示例项集:

A,B,C,D,E
A,B 
B,E
A,B     
B,C    
B,C,E    
A,C,F,G    
D,H,    
I,J,K,L    
A,J,K     
L,C,F
C,B

我使用 eclat 函数的先验来获取项集

rules <- apriori(tr, parameter = list(supp=0.01, conf=0.5,target="frequent itemsets")

有什么方法可以限制这些 itemset 仅基于具有特定长度(顺序)的事务生成,例如仅针对具有 2 个项目或 3 个项目等的事务..?

因此,例如,当我想挖掘长度为 2 的频繁项集时,我应该只看到

     count
A,B  2 and not 3 because A,B,C,D,E doesn't qualify
B,E  1
B,C  2
D,H  1

【问题讨论】:

您应该提供一个可重现的示例。见***.com/questions/5963269/… 【参考方案1】:

如果我理解正确,那么您希望创建交易并将其子集化,以便您只保留恰好包含 2 个项目的交易。这就是你的做法:

library('arules')

trans_list <- list(
  c('A', 'B', 'C', 'D', 'E'),
  c('A', 'B'), 
  c('B', 'E'),
  c('A', 'B'),     
  c('B', 'C'), 
  c('B', 'C', 'E'),    
  c('A', 'C', 'F', 'G'),    
  c('D', 'H'),
  c('I', 'J', 'K', 'L'),    
  c('A', 'J', 'K'),
  c('L', 'C', 'F'),
  c('C', 'B')
)

从列表中创建交易

trans <- as(trans_list, "transactions")
trans
#> transactions in sparse format with
#>  12 transactions (rows) and
#>  12 items (columns)

inspect(head(trans))
#>     items      
#> [1] A,B,C,D,E
#> [2] A,B      
#> [3] B,E      
#> [4] A,B      
#> [5] B,C      
#> [6] B,C,E

仅选择大小为 2 个项目的交易

trans_2 <- subset(trans, size(trans) == 2)
trans_2
#> transactions in sparse format with
#>  6 transactions (rows) and
#>  12 items (columns)

inspect(head(trans_2))
#>     items
#> [1] A,B
#> [2] B,E
#> [3] A,B
#> [4] B,C
#> [5] D,H
#> [6] B,C

挖掘频繁项集

itemsets <- apriori(trans_2, parameter = list(supp=0.01, conf=0.5,target="frequent itemsets"))
#> Apriori
#> 
#> Parameter specification:
#>  confidence minval smax arem  aval originalSupport maxtime support minlen
#>          NA    0.1    1 none FALSE            TRUE       5    0.01      1
#>  maxlen            target   ext
#>      10 frequent itemsets FALSE
#> 
#> 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 ...[6 item(s), 6 transaction(s)] done [0.00s].
#> sorting and recoding items ... [6 item(s)] done [0.00s].
#> creating transaction tree ... done [0.00s].
#> checking subsets of size 1 2 done [0.00s].
#> writing ... [10 set(s)] done [0.00s].
#> creating S4 object  ... done [0.00s].

inspect(itemsets)
#>      items support   count
#> [1]  E   0.1666667 1    
#> [2]  D   0.1666667 1    
#> [3]  H   0.1666667 1    
#> [4]  A   0.3333333 2    
#> [5]  C   0.3333333 2    
#> [6]  B   0.8333333 5    
#> [7]  B,E 0.1666667 1    
#> [8]  D,H 0.1666667 1    
#> [9]  A,B 0.3333333 2    
#> [10] B,C 0.3333333 2

【讨论】:

以上是关于Apriori / Market Basket Analysis - 对特定长度项目集的限制分析的主要内容,如果未能解决你的问题,请参考以下文章

关联分析(购物篮子分析market basket analysis)R练习

什么是购物篮分析(Market Basket Analysis)

R Prog- Market Basket Analysis - 如何在使用支持和信心循环时可视化产品推荐?

第四节 数据降维案列

降维实例之主成分分析

Apriori 算法 理论