教程 ·
关联规则(Apriori)用 AI 一句话完成 — 支持度、置信度、提升度购物篮分析全攻略
关联规则挖掘(Apriori)完整教程:用 AI 一句话完成购物篮分析,自动输出支持度、置信度、提升度,识别频繁项集,并给出符合 APA 格式的学术报告句式。
手上有交易记录、问卷多选题或诊断共病数据?想找出"同时出现率最高的组合"?Apriori 算法的参数设置让人头疼——这篇教程教你用 AI 一句话完成完整的关联规则挖掘,支持度、置信度、提升度一次全齐,可直接用于论文报告。
购物篮问题:为什么传统工具让人头疼
关联规则挖掘(Association Rules Mining)的经典应用是购物篮分析(Market Basket Analysis):从大量交易记录中找出"哪些商品经常被一起购买",从而指导商品陈列、推荐系统和促销策略。
然而在学术研究中,关联规则远不止用于零售:
- 流行病学:哪些症状或疾病经常共病(如高血压 + 糖尿病 + 肥胖)
- 教育研究:学生哪些学习行为往往同时出现
- 问卷分析:多选题中哪些选项经常被同一受访者勾选
- 医学检查:哪些检查指标异常往往同时出现
但在 R 或 Python 中实现 Apriori 时,研究者面临的真实困难是:
min_support、min_confidence、min_lift阈值怎么设?不同数据集没有统一标准- 规则数量爆炸(成百上千条),哪些才是有意义的?
- 图形化输出(网络图、气泡图)需要手动绘制
- 如何按 APA 格式在方法节描述"数据挖掘"方法?
ChatSRS 把从参数选择到报告输出的全套流程压到一句话。
关联规则核心概念
理解三个核心指标是读懂结果的前提。
支持度(Support)
support(A -> B) = P(A ∩ B) = count(A and B) / N
含义:项集 {A, B} 在所有交易中同时出现的比例。
判断标准:
- 支持度衡量规则的普遍性,越高表示该组合越常见
- 通常设
min_support >= 0.01(1%),低于此阈值的组合视为噪声或罕见关联 - 在稀疏交易数据中(如医疗诊断),0.005 以上亦可考虑
例:1000 笔交易中,500 笔同时包含"面包"和"牛奶",则 support(面包 -> 牛奶) = 0.50。
置信度(Confidence)
confidence(A -> B) = P(B | A) = support(A ∩ B) / support(A)
含义:在所有包含 A 的交易中,同时也包含 B 的比例;即"已知买了 A,买 B 的条件概率"。
判断标准:
- 置信度衡量规则的可靠性,越高表示关联越稳定
- 通常设
min_confidence >= 0.50(50%),学术文章中常报告 >= 0.60 的规则 - 置信度不考虑 B 的基准发生率,因此需要结合提升度解读
例:700 笔包含"面包"的交易中,500 笔也含"牛奶",则 confidence(面包 -> 牛奶) = 500/700 = 0.714。
提升度(Lift)
lift(A -> B) = confidence(A -> B) / support(B) = P(B | A) / P(B)
含义:有了 A 之后,B 的出现概率相对其基准概率的提升倍数。
判断标准(学术通用阈值):
| 提升度值 | 解读 |
|---|---|
| lift = 1 | A 与 B 独立,无关联 |
| lift > 1 | 正向关联;A 出现使 B 的概率提升 |
| lift < 1 | 负向关联;A 出现反而使 B 概率下降 |
| lift >= 1.5 | 实践中认为关联有实际意义的最低参考阈值 |
| lift >= 2.0 | 强正向关联,学术论文中常以此筛选值得报告的规则 |
提升度是三个指标中最重要的一个:它校正了基准概率,能排除"B 本身很常见"导致的虚假高置信度。例如,牛奶在所有交易中出现率 80%,即便随机一笔交易都有 80% 的概率含牛奶——此时高置信度并不意味着真实关联,lift 才能揭示真相。
频繁项集(Frequent Itemsets)
在计算关联规则之前,Apriori 算法先找出所有满足 min_support 的频繁项集(即经常同时出现的商品组合),再从频繁项集中提取满足 min_confidence 和 min_lift 的规则。
Apriori 核心思路:
- 找出所有频繁 1-项集(单个商品支持度 >= min_support)
- 用频繁 (k-1)-项集生成候选 k-项集,剪枝(非频繁子集的超集必然非频繁)
- 重复直到无更大频繁项集
- 从频繁项集生成关联规则,过滤置信度和提升度
这一"向上封闭性"(Apriori Property)大幅减少了候选集数量,是算法效率的核心所在。
案例数据:连锁超市购物篮交易分析
研究背景
某连锁超市收集了 2000 笔交易记录,每笔交易包含顾客购买的商品列表(宽格式:每种商品一列,0/1 表示是否购买)。共涉及 20 种商品类别(乳制品、主食、饮料、零食、蔬菜等)。
研究目标:识别频繁共购商品组合,为店内商品陈列和捆绑促销提供数据依据。
数据结构(宽格式示例)
交易ID 面包 牛奶 黄油 鸡蛋 酸奶 苹果 啤酒 薯片 ...
T001 1 1 1 0 0 1 0 0
T002 1 1 0 1 1 0 0 0
T003 0 0 0 0 0 0 1 1
T004 1 0 1 1 0 0 0 0
...(共 2000 行)
ChatSRS 同时支持长格式(每行一个购买记录,transaction_id + item 两列)和宽格式(每种商品一列)输入。
用 AI 一句话完成关联规则挖掘
在 chatsrs.com 上传数据后输入:
"对这份购物篮数据做 Apriori 关联规则挖掘。
- 设 min_support = 0.05,min_confidence = 0.50,min_lift = 1.5,提取频繁项集和关联规则
- 输出频繁 1-项集和 2-项集的支持度排名前 15 表格
- 输出满足阈值的关联规则三线表(前件、后件、支持度、置信度、提升度、规则计数)
- 按提升度降序,标注前 10 条最强规则
- 绘制关联规则气泡图(x 轴支持度,y 轴置信度,气泡大小=提升度)
- 输出 APA 格式中文方法节和结果节描述"
60 秒后,ChatSRS 完整输出以下五部分结果。
输出结果怎么读
输出 1:频繁项集支持度排名
表 1 频繁 1-项集与 2-项集支持度排名(N = 2000,min_support = 0.05)
排名 项集 支持度 交易数
1 {牛奶} 0.642 1284
2 {面包} 0.618 1236
3 {蔬菜} 0.481 962
4 {水果} 0.396 792
5 {酸奶} 0.312 624
...
8 {面包, 牛奶} 0.382 764
9 {牛奶, 黄油} 0.261 522
10 {面包, 蔬菜} 0.218 436
11 {牛奶, 蔬菜} 0.203 406
12 {面包, 水果} 0.189 378
13 {黄油, 鸡蛋} 0.172 344
14 {面包, 黄油} 0.164 328
15 {酸奶, 水果} 0.152 304
注:1-项集按单项支持度排序;2-项集按联合支持度排序。
支持度 = 该项集出现次数 / 总交易数(N = 2000)。
读表要点:牛奶(64.2%)和面包(61.8%)是最常购买的单品;{面包, 牛奶}(38.2%)是最常见的 2-项集,几乎每 3 笔交易就有超过 1 笔同时包含这两样。
输出 2:关联规则三线表
表 2 Apriori 关联规则结果(min_support = 0.05,min_confidence = 0.50,min_lift = 1.0)
前件(A) 后件(B) 支持度 置信度 提升度 规则计数
{黄油} -> {牛奶} 0.198 0.814 1.268* 396
{黄油} -> {面包} 0.164 0.674 1.091* 328
{黄油,鸡蛋} -> {面包} 0.124 0.721 1.167* 248
{酸奶} -> {牛奶} 0.213 0.683 1.064* 426
{酸奶,面包} -> {牛奶} 0.156 0.812 1.265* 312
{蔬菜,面包} -> {牛奶} 0.148 0.679 1.058* 296
{水果,酸奶} -> {牛奶} 0.139 0.914 1.424* 278
{水果,酸奶} -> {面包,牛奶} 0.098 0.645 1.688 196
{黄油,鸡蛋} -> {牛奶,面包} 0.096 0.558 1.461 192
{水果,蔬菜} -> {牛奶} 0.091 0.874 1.361* 182
注:* 提升度 < 1.5,关联强度中等;表中同时列出中等(1.0 <= lift < 1.5)和较强(lift >= 1.5)规则,
供与 Top-10 强规则(表 3,min_lift = 1.5)对比参考;
规则按提升度降序排列。
输出 3:Top-10 最强关联规则(提升度降序)
表 3 提升度最高的 10 条关联规则(lift >= 1.5)
排名 前件 后件 支持度 置信度 提升度
1 {啤酒, 薯片} -> {零食饮料} 0.087 0.921 3.142
2 {红酒, 奶酪} -> {熟食} 0.068 0.876 2.984
3 {尿不湿} -> {啤酒} 0.062 0.841 2.763
4 {红酒} -> {奶酪} 0.079 0.734 2.618
5 {咖啡, 面包} -> {黄油} 0.071 0.697 2.377
6 {水果, 酸奶} -> {麦片} 0.058 0.679 2.241
7 {蔬菜, 水果} -> {有机食品} 0.053 0.651 2.093
8 {咖啡} -> {面包,黄油} 0.065 0.631 1.984
9 {水果, 酸奶} -> {牛奶, 面包} 0.098 0.645 1.688
10 {黄油, 鸡蛋} -> {牛奶, 面包} 0.096 0.558 1.461
注:提升度 >= 2.0 视为强关联(规则 1-7);>= 1.5 视为中等关联(规则 8-10)。
"尿不湿 -> 啤酒"(lift = 2.76)为经典购物篮分析案例,常见于年轻父母的购物行为。
读表要点:
| 规则 | 业务解读 |
|---|---|
| 啤酒+薯片 -> 零食饮料(lift=3.14) | 极强关联,可做捆绑陈列或联合促销 |
| 红酒 -> 奶酪(lift=2.62) | 经典西式搭配,适合单独促销区 |
| 尿不湿 -> 啤酒(lift=2.76) | 年轻父亲效应,避免将两者陈列在对立区 |
| 咖啡 -> 面包+黄油(lift=1.98) | 早餐套餐关联,捆绑早餐套包商机 |
论文里怎么报告(APA 7th 格式)
关联规则属于探索性数据挖掘方法,APA 7th 对此类方法没有专门的报告格式规范,但学术界有通行惯例:必须报告算法、三个核心指标的阈值及其设定依据、频繁项集数量、筛选后规则数量,以及最重要规则的完整三元组(support, confidence, lift)。
方法节写法:
采用 Apriori 算法对购物篮交易数据进行关联规则挖掘,以探索商品间的共购关联模式(Agrawal & Srikant, 1994)。算法参数设定如下:最小支持度(min_support)= 0.05,最小置信度(min_confidence)= 0.50,最小提升度(min_lift)= 1.50。支持度阈值根据数据集规模(N = 2000 笔交易,20 种商品)参照 Tan 等(2018)推荐的稀疏数据设定方法确定;提升度阈值参照 Brin 等(1997)对"兴趣度"(interestingness)的定义,以 1.5 作为实际关联的最低参考值。所有分析以 R 4.4 arules 包实施。
结果节写法:
Apriori 算法共识别出 47 个满足最小支持度(>= 0.05)的频繁项集,其中 1-项集 20 个,2-项集 24 个,3-项集 3 个。在频繁项集基础上,提取满足最小置信度(>= 0.50)和最小提升度(>= 1.50)的关联规则共 10 条(见表 3)。
提升度最高的规则为 {啤酒, 薯片} → {零食饮料},support = .087,confidence = .921,lift = 3.14,表明同时购买啤酒和薯片的顾客中,91.1% 也会购买其他零食饮料,其共购概率是基准概率的 3.14 倍。另一典型规则 {红酒} → {奶酪}(support = .079,confidence = .734,lift = 2.62)和 {尿不湿} → {啤酒}(support = .062,confidence = .841,lift = 2.76)亦呈现较强正向关联(lift > 2.0),具有显著的促销设计参考价值。
APA 格式报告要素汇总:
| 要素 | 格式示例 |
|---|---|
| 算法引用 | Agrawal & Srikant(1994) |
| 参数报告 | min_support = .05,min_confidence = .50,min_lift = 1.50 |
| 规则数报告 | 共提取 X 条满足阈值的关联规则 |
| 单条规则 | support = .087, confidence = .921, lift = 3.14 |
| 频繁项集 | 共 47 个频繁项集(1-项集 20 个,2-项集 24 个,3-项集 3 个) |
APA 细节提醒:支持度、置信度均为比例,小数点前不写 0(写 .087,不写 0.087);lift 是比值,保留两位小数;方法节须引用 Apriori 原论文(Agrawal & Srikant, 1994, VLDB)和所用软件/包版本。
参数设定指南:阈值怎么选
这是最常被提问的实操问题,没有通用答案,但有可参考的经验框架:
支持度(min_support)
| 数据规模 | 商品/变量数 | 推荐 min_support |
|---|---|---|
| < 500 笔 | 任意 | >= 0.10 |
| 500-5000 笔 | < 50 种 | 0.05-0.10 |
| 5000-50000 笔 | 50-500 种 | 0.01-0.05 |
| > 50000 笔 | > 500 种 | 0.001-0.01 |
| 医疗/诊断数据(低频共病) | — | 0.005-0.02 |
置信度(min_confidence)
- 探索性研究(想尽量多看规则):>= 0.30
- 标准设定:>= 0.50
- 高可靠性要求(如临床推荐):>= 0.70
提升度(min_lift)
- lift >= 1.0:仅排除负关联,包含所有正关联
- lift >= 1.5:实践中认为有实际意义的最低阈值
- lift >= 2.0:强关联,适合论文重点报告
- lift >= 3.0:极强关联,值得业务层面重点关注
提示:在 ChatSRS 中,如果规则数量过多(> 100 条),可在指令里追加"进一步筛选 lift >= 2.0 的规则并按提升度排名";如果规则过少(< 5 条),则降低 min_support 或 min_confidence 并重跑。
关联规则在学术研究中的三类应用场景
场景一:问卷多选题关联分析
多选题(如"您使用过哪些统计软件",可多选)产生的数据天然适合关联规则:每位受访者的选项集合 = 一笔"交易"。
ChatSRS 指令示例:
"这份问卷数据第 Q12 题是多选题(选项 A-G),每行是一位受访者,做关联规则分析,找出哪些选项组合经常被同一受访者勾选,min_support = 0.08,min_lift = 1.5,输出三线表和 APA 报告描述"
场景二:临床共病关联分析
从电子病历提取的诊断数据:每位患者一行,所有诊断编码(ICD)为多选项。关联规则可以揭示哪些疾病倾向于同时发生。
注意点:医疗数据往往高度稀疏,min_support 可设至 0.005;提升度 >= 2.0 在临床研究中常作为有临床意义的参考标准。
场景三:教育行为关联分析
如学习管理系统(LMS)日志数据:每位学生完成的学习行为(观看视频、做练习、参与讨论等)为多选项。关联规则可发现高成就学生的典型行为组合模式。
常见问题 FAQ
Q1:支持度、置信度都很高,但提升度却接近 1,规则有意义吗?
A:没有实际意义。提升度接近 1 说明 A 和 B 的关联是"虚假高置信"——B 本身的基准发生率就很高,无论有没有 A,B 几乎都会出现。例如"牛奶的支持度 = 0.64",任何规则的后件如果是{牛奶},仅靠基准概率就能获得 0.64 的置信度。此时 lift = confidence / support(B) = 0.64 / 0.64 = 1.00,说明 A 对 B 没有任何额外贡献。实际操作中应以 lift >= 1.5 作为规则有意义的最低门槛,而不单独看置信度高低。
Q2:Apriori 和 FP-Growth 有什么区别?什么时候用哪个?
A:两者都是频繁项集挖掘算法,结果完全相同,区别在于计算效率。Apriori 采用逐层遍历候选集的方式,在商品种类多(> 1000 种)或数据集大(> 10 万笔)时速度较慢;FP-Growth 使用树形结构,只需两次扫描数据库,速度快 10-100 倍。对于学术研究中常见的中小规模数据(商品 < 200 种、交易 < 5 万笔),两者速度差距可忽略,Apriori 更直观易理解,也更常出现在教材和论文中。ChatSRS 在数据规模较大时会自动切换为 FP-Growth,结果报告格式不变。
Q3:关联规则能用于预测吗?和逻辑回归有什么区别?
A:关联规则是描述性/探索性方法,不是预测性方法。它描述的是"什么和什么同时出现",不建立因果关系,也没有因变量——这是与逻辑回归(有明确因变量、建模条件概率)的本质区别。如果你的目标是"给定某些特征,预测某结局发生概率",应使用逻辑回归(见二元 Logistic 回归教程);如果目标是"在大量变量中无监督地发现高频共现模式",才用关联规则。两者可以互补:先用关联规则探索性发现有趣的变量组合,再用逻辑回归对关注的组合做假设检验。
Q4:关联规则挖掘出来的规则怎么在论文里选择性报告?规则太多怎么办?
A:关联规则挖掘常产生数十至数百条规则,论文中不需要全部列出。推荐的筛选和报告策略是:(1) 选取提升度最高的 10-20 条规则列入主表,其余放附录或补充材料;(2) 将规则按业务语义或研究假设分组,分别解读;(3) 报告完整的频繁项集数量和总规则数量,说明筛选阈值,让读者可以复现。在 ChatSRS 中,可在指令里追加"按提升度降序只保留前 15 条写入三线表,其余列入补充材料",系统将自动分级输出。
Q5:关联规则分析如何报告样本量和效应量?
A:关联规则没有类似 Cohen's d 或 eta 方的标准效应量指标;提升度本身即为效应大小的量化指标。学界通行参考阈值如下:lift >= 1.5 为中等关联,lift >= 2.0 为较强关联,lift >= 3.0 为强关联(Tan et al., 2018)。报告时,除 lift 外,也应同时报告支持度(反映规则的普遍性)和置信度(反映规则的可靠性),三者缺一不可。样本量方面,APA 并无专门规定;实践中建议交易数 / 商品种数 >= 50,以保证频率估计的稳定性,否则需说明样本量局限性。
小结
关联规则(Apriori)是探索"什么与什么同时出现"的核心工具,难点集中在三处:正确设定支持度/置信度/提升度阈值、从海量规则中筛选有意义的结果,以及按学术规范报告方法与结果。ChatSRS 把全部流程压到一句话,自动输出频繁项集表、关联规则三线表、气泡可视化,并生成可直接复制进论文的 APA 格式描述。
核心记忆点:提升度(lift)是判断规则是否真正有意义的最关键指标,置信度高但提升度 = 1 的规则不值得报告;lift >= 1.5 是实践中认可的最低有意义门槛,lift >= 2.0 适合论文重点报告。
参考文献
- Agrawal, R., & Srikant, R. (1994). Fast algorithms for mining association rules. Proceedings of the 20th International Conference on Very Large Data Bases (VLDB), 487–499.
- Brin, S., Motwani, R., Ullman, J. D., & Tsur, S. (1997). Dynamic itemset counting and implication rules for market basket data. ACM SIGMOD Record, 26(2), 255–264. https://doi.org/10.1145/253262.253325
- Tan, P.-N., Steinbach, M., Karpatne, A., & Kumar, V. (2018). Introduction to data mining (2nd ed.). Pearson.
相关阅读
本文首发于 ChatSRS 官方博客。如有问题或反馈,欢迎在 ChatSRS 站内 [用户中心 -> 帮助与反馈] 联系我们。