r - Apriori / Market Basket Analysis - 对特定长度项目集的限制分析
问题描述
我正在尝试挖掘数据集中的频繁项集,该数据集中包含经常一起销售的产品项集。
示例项集:
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")
有什么方法可以限制这些项目集仅基于具有特定长度(顺序)的事务生成,例如仅针对具有 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
解决方案
如果我理解正确,那么您想要创建交易并将它们子集化,以便您只保留恰好包含 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
推荐阅读
- php - 将数组从 HTML 表单插入 MYSQL 数据库
- javascript - 如何使用 docx4js 解析来自 microsoft word 的粘贴数据
- java - Maven Shade:仅包括特定的工件并排除所有其他工件
- javascript - 将 json 中的 json 显示为 2 个并排的立方体,而不是列表
- php - Magento 产品出口问题 1.9.3.6
- node.js - 如何将 socket.io 连接导出到另一个控制器
- python - 如何使用 Python 将 Amazon Ion 文件转换为 JSON 格式?
- powershell - Powershell:设置环境变量加倍
- julia - Juno IDE 中的 Julia 程序没有输出
- swift - Firebase 数据库无法识别儿童