You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apriori算法不返回候选集频率?R语言运行Apriori无结果求助

问题解答

1. Apriori算法为何不返回候选集的频率?

Apriori的核心目标是挖掘频繁项集和基于频繁项集生成关联规则,候选集只是算法迭代过程中的中间产物:

  • 候选集包含大量不满足最小支持度的项,返回它们会额外增加计算和存储开销,对实际分析没有价值;
  • 算法设计时默认只保留符合阈值的频繁项集,若需要查看项的频率,可使用arules包中的itemFrequency()函数直接获取所有项的支持度(频率)。

2. R语言arules包运行Apriori返回空规则集的问题排查

你的代码存在两个关键问题:

问题1:交易数据格式转换错误

你通过aggregate将每个订单的产品拼接成逗号分隔的字符串,再转成因子,最后转换为transactions时,每个逗号分隔的字符串被当成了单个独立项,而非多个产品项。比如订单IN-2011-47883对应的"Eldon Light Bulb, Eaton Computer Printout Paper"会被识别为一个item,而非两个独立的产品。这种情况下,每个交易仅包含一个item,无法生成需要至少两个项的关联规则。

问题2:混淆了“项频率”和“关联规则”的获取方式

你期望得到产品频率列表,但却用apriori()函数(用于生成关联规则)来实现。项频率需要用专门的itemFrequency()函数获取,而非关联规则算法。

修正后的代码示例

library(arules)
library(dplyr)

# 原始数据
order_id <- c('AG-2011-2040','IN-2011-47883', 'HU-2011-1220','IT-2011-3647632','IN-2011-47883','IN-2011-47883','IN-2011-30733','CA-2011-115161','AO-2011-1390','ID-2011-56493'  )
product_name <- c('Tenex Lockers, Blue','Acme Trimmer, High Speed', 'Tenex Box, Single Width', 'Enermax Note Cards, Premium','Eldon Light Bulb, Duo Pack','Eaton Computer Printout Paper, 8.5 x 11', 'Brother Personal Copier, Laser','Sauder Facets Collection Library, Sky Alder Finish', 'Fellowes Lockers, Wire Frame','Tenex Trays, Single Width')
df <- data.frame(order_id, product_name)

# 重命名列
colnames(df) <- c('order.id', 'product.name')

# 移除逗号后的描述
df$product.name <- gsub(",.*", "", df$product.name)

# 正确转换为交易数据:按订单拆分产品列表,再转成transactions
transaction_data <- as(split(df$product.name, df$order.id), "transactions")

# 获取产品频率(支持度)列表
item_freq <- itemFrequency(transaction_data)
# 按频率排序输出
sort(item_freq, decreasing = TRUE)

# 若需要生成关联规则(确保有交易包含多个产品)
rules <- apriori(transaction_data, parameter = list(supp = 0.1, conf = 0.5))
inspect(rules)

额外说明

你输出中的Absolute minimum support count: 25说明当前设置的支持度0.001对应需要至少25次出现的项,若你的数据集里没有项达到这个次数,也会返回空规则集。可根据实际数据量调整supp参数(比如小数据集设为0.1),同时确保交易数据中存在包含多个产品的订单,否则无法生成有效规则。

内容的提问来源于stack exchange,提问作者Timothy Roy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 17:43:09