关联规则不只适用于购物篮。每名议员在若干议题上的选择也可以视为一条事务,再寻找经常共同出现的投票模式。不过,政治数据包含类别、缺失与群体差异,若直接把字母y和n塞进项集,会得到语义含混甚至错误的规则。
数据集提供了什么
UCI的Congressional Voting Records数据集包含435条记录、16个分类特征和党派目标,记录来自1984年美国众议院的关键投票。原始说明把多种赞成情形归并为yea,多种反对情形归并为nay,未投票或立场未知等归为unknown;数据存在缺失值。

第一处关键决定是事务编码
每个项必须同时包含议题和选择,例如 issue_04=yes、issue_04=no,而不是只有yes或no。这样“第四项议题赞成”和“第七项议题赞成”不会碰撞,同一议题的相反选择也保持互斥。党派可作为规则后件用于探索,也可完全移出项集用于分组比较。
问号不是可以无条件删除的噪声
缺失可能表示未投票、未知立场或记录缺口。可以把它编码为 issue_04=unknown,也可以对涉及该议题的规则排除缺失记录;两种做法改变支持度分母,必须在结果旁说明。把缺失直接当成no,会人为制造关联。
三个指标回答不同问题
- 支持度 support(X→Y)
- 同时包含X和Y的事务占全部事务的比例,反映模式覆盖面。
- 置信度 confidence(X→Y)
- 在包含X的事务中也包含Y的比例,等于P(Y|X)。
- 提升度 lift(X→Y)
- 置信度除以Y的总体出现率;大于1表示共同出现超过独立基线。
分母决定指标含义
若某条规则只涉及部分议题,支持度仍以什么样本集合为分母必须固定。按行删除任一缺失记录与按规则排除相关字段,会得到不同覆盖面;报告实际计数可让百分比不再失去上下文。
若某党派本来就占多数,以党派为后件的规则可能拥有很高置信度却没有多少额外信息。提升度与后件基线一起看,能够避免把常见结果误当成强联系。
Apriori怎样缩小候选空间
算法先统计满足最小支持度的一项集,再连接得到更长候选。只要某个子集不频繁,它的所有超集都不可能频繁,因此可提前剪枝。频繁项集产生后,再枚举互不重叠的前件和后件,并按置信度、提升度与业务约束筛选。
transactions = encode_issue_and_choice(rows)
frequent_sets = apriori(transactions, min_support)
rules = make_rules(frequent_sets)
rules = [r for r in rules
if r.confidence >= c_min and r.lift >= lift_min]
阈值不要从一个漂亮结果倒推
- 先声明最小覆盖人数,而不只声明百分比。
- 在训练子集发现候选规则。
- 在保留子集重新计算支持度、置信度和提升度。
- 对大量候选考虑多重比较与稳定性。
- 报告规则两侧的实际计数和缺失处理。
发现集与验证集承担不同职责
发现集可以探索较多候选,验证集只复核事先选定规则。若看过验证结果后不断调整阈值,它就不再是独立验证,应重新划分数据或采用交叉验证。
| 检查 | 要避免的误判 |
|---|---|
| 交换前件与后件 | 把条件概率误当成对称关系 |
| 按党派分层 | 群体构成造成的混杂 |
| 保留时间或样本验证 | 偶然规则只在当前数据成立 |
| 查看反例 | 把统计关联解释成决定性规律 |
关联规则描述共同出现,不证明一个投票选择导致另一个选择,也不能单独说明政治立场形成的原因。
案例的价值在于流程可复核
完整结果应附数据版本、编码字典、缺失策略、阈值、候选数量和验证表现。这样读者能重算每条规则,也能判断结论是否只是党派比例或样本年代造成。算法本身并不复杂,可靠性主要来自对数据语义和验证边界的尊重。
把关联规则改写成可验证假设
一条高提升度规则只说明在当前数据中共同出现得比独立假设更频繁,不说明前项导致后项。把规则转成业务问题时,要写出可能的共同原因、选择偏差和时间顺序。例如两项投票一致,可能来自党派、地区或议题批次,而不是其中一次投票影响另一次。
规则数量很大时,偶然漂亮的组合一定会出现。应先在发现集筛选,再在保留数据上重新计算支持度、置信度和提升度,并关注区间而非只看点估计。对低频规则可采用更高的最小支持,或控制候选项范围,避免单个样本把提升度推得极高。
决定一条规则是否值得行动
除统计指标外,还要评估覆盖人数、误判成本、可操作性与稳定性。若规则只能解释极少样本,即使提升度很高,也未必值得改变流程;若前项在决策时不可获得,它也无法成为实时特征。最好按时间、群体或地区切片,检查方向是否一致,避免总体规律掩盖分组反转。
最终报告同时列出未通过验证的候选和阈值敏感性。关联分析最有价值的产物不是一串“如果—那么”,而是帮助团队提出下一轮数据收集或实验问题;当规则被用作决策依据时,还需要独立因果证据。
缺失与“未发生”不能编码成同一件事
事务数据中,零可能表示明确没有购买、没有投票或没有症状,也可能表示记录系统没有观察到。两者若混在一起,支持度与置信度都会被改变。编码前为未知、拒答和不适用保留独立状态,并决定规则算法如何处理;必要时只在信息完整的子集计算分母。
时间同样重要。用于推荐的规则必须保证前项在决策时先发生,不能把结算后的信息拿来预测结算前行为。可以按滑动时间窗重新挖掘并比较规则寿命,观察季节、政策或渠道变化是否让提升度衰减。
若规则触发干预,还应设置对照组,测量真实增量而非只看命中用户的转化。关联规则负责提出可读候选,实验负责判断行动是否有效,这两层证据不能合并成一个指标。
本文《把投票记录变成关联规则:编码、缺失值与提升度的完整案例》由 xkmchenmu 发布于 xkmchenmu Blog。 转载请保留原文链接并注明出处。
支付宝扫一扫