R语言Apriori关联规则:相似数据集结果异常排查求助
关联规则分析问题排查与解决
数据情况
在R语言中有两个小型二元数据集alpha和bravo,均包含199行4列,数据为0/1分布,二者分布近似但存在差异,可复现代码见文末。
目标
为两个数据集生成包含左项(LHS)、右项(RHS)、支持度(Support)、置信度(Confidence)、**提升度(Lift Ratio)**的关联规则。
问题
- 仅能从
bravo中获取有效规则,alpha无法生成有效规则,需排查原因并解决; - 使用
apriori函数时,除bravo以逻辑格式输入的情况外,其余规则均带有=[0,1]后缀,且所有指标值均为1,需解释该现象。
已做工作
- 确认两个数据集的数据类型与维度完全一致;
- 分别以二元格式、逻辑格式、事务格式作为
apriori函数的输入,对比输出结果; - 将支持度与置信度阈值调低至0.01,结果仍无改善(仅
bravo以逻辑格式输入时可生成最多32条有效规则)。
关键现象
alpha以逻辑格式输入时无规则生成;以二元/事务格式输入时,生成的规则带有=[0,1]后缀,且所有指标值全为1;bravo仅在以逻辑格式输入时可生成正常规则,其余格式输入时同样出现=[0,1]后缀与指标全为1的情况。
附:相关代码与数据集对比结果
# 可复现代码示例 set.seed(123) # 生成alpha数据集 alpha <- data.frame( col1 = sample(c(0,1), 199, replace = TRUE, prob = c(0.9, 0.1)), col2 = sample(c(0,1), 199, replace = TRUE, prob = c(0.85, 0.15)), col3 = sample(c(0,1), 199, replace = TRUE, prob = c(0.92, 0.08)), col4 = sample(c(0,1), 199, replace = TRUE, prob = c(0.88, 0.12)) ) # 生成bravo数据集 bravo <- data.frame( col1 = sample(c(0,1), 199, replace = TRUE, prob = c(0.7, 0.3)), col2 = sample(c(0,1), 199, replace = TRUE, prob = c(0.65, 0.35)), col3 = sample(c(0,1), 199, replace = TRUE, prob = c(0.72, 0.28)), col4 = sample(c(0,1), 199, replace = TRUE, prob = c(0.68, 0.32)) ) # 转换为逻辑格式 alpha_logical <- as.data.frame(lapply(alpha, as.logical)) bravo_logical <- as.data.frame(lapply(bravo, as.logical)) # 转换为事务格式 library(arules) alpha_trans <- as(alpha, "transactions") bravo_trans <- as(bravo, "transactions") # 运行apriori # alpha逻辑格式 rules_alpha_log <- apriori(alpha_logical, parameter = list(supp=0.01, conf=0.01)) # alpha二元格式 rules_alpha_bin <- apriori(alpha, parameter = list(supp=0.01, conf=0.01)) # alpha事务格式 rules_alpha_trans <- apriori(alpha_trans, parameter = list(supp=0.01, conf=0.01)) # bravo逻辑格式 rules_bravo_log <- apriori(bravo_logical, parameter = list(supp=0.01, conf=0.01)) # bravo二元格式 rules_bravo_bin <- apriori(bravo, parameter = list(supp=0.01, conf=0.01)) # bravo事务格式 rules_bravo_trans <- apriori(bravo_trans, parameter = list(supp=0.01, conf=0.01))
数据集分布对比
| 数据集 | col1占比(1) | col2占比(1) | col3占比(1) | col4占比(1) |
|---|---|---|---|---|
| alpha | ~10% | ~15% | ~8% | ~12% |
| bravo | ~30% | ~35% | ~28% | ~32% |
内容的提问来源于stack exchange,提问作者Shawn Janzen
相关产品推荐
相关产品推荐

