机器学习与数据挖掘
Apriori 关联规则
在事务型 0/1 项或展开后的定类项上找频繁共现,并用支持度、置信度与提升度判断规则是否优于独立出现。
这篇能回答什么
Apriori 回答的是「哪些项目经常一起出现,以及看见前项时后项是否比随机更常见」。它先按最小支持度找出频繁项集,再按置信度生成 A→B 规则,最后用提升度判断 A 与 B 是相互促进、彼此独立,还是此消彼长。StatsX 对已经是 0/1 的列直接当购物篮项;多分类列会先展开为哑变量项。
适合:多选题勾选、症状是否出现、商品是否入篮这类事务共现。教学示例用学生问卷里五列厌学勾选项:不想上数学课、不愿完成数学作业、一提到数学就感到烦躁、考试前因数学感到焦虑不安、故意逃避数学相关的活动。
如何选择方法
先分清你要的是共现规则、交叉频数还是选项普及率。Apriori 输出的是「若 A 则 B」的条件概率与提升度;卡方检验的是整张交叉表是否偏离独立;多重响应只清点各选项被勾了多少次。
Apriori 关联规则:≥2 个项目变量(0/1 或定类),输出规则、支持度、置信度、提升度。
多重响应:同一套多选题,只报告响应率与普及率,不生成 A→B。
列联表 / 卡方:两个定类字段的格子人数与独立性,不扫全部项集。
K-Means:定量画像分群,不是购物篮规则。
输入、输出与限制
输入
项目变量为分组定类或普通定类。0/1、真/假列原样作为一项;其它取值会按水平展开成「列名_水平」。不要把准标识符、高基数编号当作项。
项目变量:最少 2 个,最多 50 个。
默认最小支持度 0.05,默认最小置信度 0.50;稀疏二值篮在无规则时会把置信度逐级放到 0.40、0.35、0.30、0.25、0.20。
输出
结果表列:关联规则(前项 ➔ 后项)、支持度、置信度、提升度。规则按提升度再按置信度降序,最多保留 50 条。同时输出以提升度为横轴的规则排序图与文字洞察。
产品限制
有效事务至少 10 行;超过 20000 行会拒绝,需先筛选。
展开后的唯一项不得超过 40,否则请合并稀疏水平或少选列。
置信度自动放宽时,表注会写实际阈值,论文应引用该值而不是默认 0.50。
这些上限来自 StatsX(mlxtend Apriori),不要用 SPSS Modeler 的默认支持度或「只输出提升度>1」的过滤器逐格核对。
案例
研究问题。 学生问卷把厌学拆成五道「有 / 无」勾选,希望看这些表现是否成套出现,而不是只报告每一题的选中率。
教学示例来自学生问卷「有效样本数据」,有效事务 500。五列都是 0/1:不想上数学课 222 人勾选,感到烦躁 98 人勾选。挖掘后只留下 1 条过线规则:[厌学表现情况_一提到数学就感到烦躁] → [厌学表现情况_不想上数学课],支持度 0.07,置信度 0.3571,提升度 0.8044。置信度已从 0.50 放到 0.35。下载后勾选这五列即可复现。
在 StatsX 中操作
步骤 1 · 上传表格
打开工作台,将 Excel / CSV / JSON 拖入上传区。本案例使用学生问卷 xlsx,确认工作表为「有效样本数据」。单文件不超过 20 MB。
步骤 2 · 查看画像与质量
确认五列厌学表现均为二元 0/1,缺失可接受。不要把学生性别、就读年级这类人口学字段和厌学项混在同一批项目变量里,除非你明确想挖「年级×症状」共现。
步骤 3 · 选择「Apriori 关联规则」
在算法目录搜索「Apriori」或「关联规则」并点选。适合/可用标记仅供参考。
步骤 4 · 指定项目变量并运行
项目变量勾选厌学表现情况_不想上数学课、厌学表现情况_不愿完成数学作业、厌学表现情况_一提到数学就感到烦躁、厌学表现情况_考试前因数学感到焦虑不安、厌学表现情况_故意逃避数学相关的活动(至少 2 列)。点击运行分析。
步骤 5 · 阅读结果
先看表注里的实际置信度阈值,再读提升度是否大于 1。本例提升度小于 1,不能写成「烦躁就会逃课」的促销式结论。




如何阅读输出
下表由同一份教学示例在 StatsX 中运行 Apriori 得到。有效事务 500,展开后项数为 5。唯一过线规则是烦躁 → 不想上课:支持度 0.07(约 35 人同时勾选),置信度 0.3571(烦躁者里约 36% 也勾了不想上课),提升度 0.8044。全样本「不想上课」底线约 44%,因此这条规则的条件概率还低于底线。
| 关联规则 (前项 ➔ 后项) | 支持度 (Support) | 置信度 (Confidence) | 提升度 (Lift) |
|---|---|---|---|
| [厌学表现情况_一提到数学就感到烦躁] → [厌学表现情况_不想上数学课] | 0.07 | 0.3571 | 0.8044 |
左右滑动可查看完整表格
支持度表示该规则在全局发生的概率;置信度表示在前项发生的条件下,后项发生的条件概率;提升度>1代表两者正相关,通常提升度越大规则越有效。 实际使用置信度阈值=0.35(已由默认 0.5 自动放宽以适配稀疏二值项)。


【Apriori关联规则】样本量=500,项数=5,规则数=1,支持度≥0.05,置信度≥0.35(置信度已由 0.5 自动放宽至 0.35)。
【提升度解读】最强规则 Lift=0.80<1,前项与后项呈负向共现(此消彼长)。
解读顺序建议:有效事务与项数 → 表注是否写了置信度放宽 → 支持度是否大到有业务意义 → 置信度相对后项底线 → 提升度是否大于 1。本例最能说明「支持度 / 置信度 ≠ 有用规则」:35.7% 的置信度读起来像「超过三分之一」,但提升度 0.80 说明前项并没有提高后项出现的机会。
理论与公式
把一条事务看成项的集合。项集 X、Y 不交。支持度是 X 与 Y 同时出现的事务比例;置信度是看见 X 之后看见 Y 的条件概率;提升度把该条件概率与 Y 的边际概率相比:
提升度大于 1 表示正共现,等于 1 表示独立,小于 1 表示负共现。Apriori 利用频繁项集的向下封闭性:若某项集不频繁,它的超集也不必再数。默认先在支持度 0.05 下生成频繁项集,再按置信度过滤规则。
注意事项
置信度高、提升度小于 1 时,规则只是在重复一个本来就很常见的后项,或甚至低于底线。
稀疏勾选会触发置信度自动放宽;写方法时必须抄表注里的实际阈值。
定类列展开后项数膨胀很快,城市×装修这类高基数组合容易撞上 40 项上限。
规则不是因果:同时勾选不等于「烦躁导致不想上课」。
李克特 1–5 分若不当 0/1 处理,会被拆成五个水平项,解释会变成「打 4 分 → 打 5 分」,通常没有购物篮含义。
超过 20000 行需先抽样或筛选,产品不会静默截断。
常见问题
参考文献
Agrawal, R., Srikant, R. Fast algorithms for mining association rules[C]//Proceedings of the 20th International Conference on Very Large Data Bases. 1994: 487–499.
Han, J., Kamber, M., Pei, J. Data Mining: Concepts and Techniques[M]. Morgan Kaufmann.
贾俊平. 统计学[M]. 中国人民大学出版社.