老王是社区超市的老板,每天晚上打烊后,他都会把当天的收银小票翻来覆去地看。他总觉得,顾客的购物篮里藏着秘密:有些人买啤酒时,旁边总放着尿布;有些人拿面包时,顺手就会加一盒牛奶。老王把这些小票想象成一场场“微型派对”——每位顾客是派对的主人,每件商品是被邀请的客人。有的客人总是结伴出现,比如面包和黄油是“形影不离的好友”;有的客人则像“社交达人”,只要啤酒到场,尿布十有八九也会来。老王想做的,就是统计这些“社交关系”,找到“谁和谁总是一起出现”,再根据这些规律调整货架、设计促销。这个从交易数据里挖掘“共同出现规律”的过程,就叫购物篮分析,而最经典的实现算法叫 Apriori。这篇文章,就带你跟着老王的视角,用 Apriori 算法完整走一遍购物篮分析的案例:从整理小票,到找出频繁项集,再到生成“买 A 也买 B”的关联规则,最后把规则变成超市里的真金白银。
学会购物篮分析,你就能从交易数据中挖掘“买 A 也买 B”的规律,直接指导商品摆放、捆绑促销和交叉推荐——这是零售数据分析与商业决策的必备技能,也是关联规则算法最经典的落地场景。
目录
可视化演示
本节配有交互动效(进入视口后自动加载,约 3KB)。
Apriori算法:层级生成+剪枝 交易数据(5笔):交易数据(5笔):交易数据(5笔):交易数据(5笔): 交易数据(5笔):交易数据(5笔):交易数据(5笔):交易数据(5笔):
明确业务目标:老王想搞明白什么
老王的超市不大,但商品有上千种。他没法凭肉眼记住所有“结伴出现”的组合,于是他决定做一次正式的数据分析。分析的第一步不是打开电脑,而是想清楚一个问题:我到底想知道什么? 老王把目标拆成三层:第一,哪些商品经常被一起买走?第二,如果顾客买了 A,有多大可能会买 B?第三,知道这些规律后,我该把货架怎么摆、促销怎么设?这三层问题,正好对应购物篮分析的核心产出:频繁项集、关联规则和商业动作。
在技术术语里,这种分析叫“关联规则挖掘”,属于无监督学习。它不依赖标签(我们并不预先告诉机器“哪些组合好”),而是让算法自己从交易数据里“观察”出规律。就像老王不预设“啤酒和尿布一定有关系”,而是让小票自己说话。对 AI 从业者来说,这一步是价值原点:如果没有明确的业务目标,后面算出来的规则再多,也只是一堆无意义的“数字八卦”。
交易数据处理:把小票变成“客人名单”
有了目标,老王就开始整理小票。这个过程很像办派对前整理“邀请名单”:每张小票就是一场派对的记录,上面写着哪些“客人”(商品)来了。算法只能读结构化的数据,所以老王要把小票转成一个规范的事务表:每一行是一笔交易,每一列是一件商品,买了就记 1,没买就记 0。同时还要做去重和清洗:同一张小票里重复扫描的商品要合并成一条,退货的、空的小票要去掉,商品名称要统一(别让“纯牛奶”和“牛奶”变成两样东西)。
在专业术语里,所有交易的集合叫事务数据库(Transactional Database),通常记为 D。每笔交易是一个事务,由若干项(Item)组成。数学上可以写成:
老王把 1000 张小票整理成了一张张干净的“客人名单”。他明白,数据质量决定了分析质量,如果名单里有重复名字、错别字,统计出的“谁和谁总是一起出现”就会失真的。他特意在电脑上写了个小脚本,把小票自动转成统一格式,花了整整一个晚上,但老王觉得值——毕竟,派对名单要是搞错了,请来的“客人”组合就会错得离谱。
- 事务集合 D表示全部 n 笔交易组成的集合,老王这周有 1000 张小票,所以 n=1000。
- 单个事务 T_i每一笔交易都是若干商品项构成的集合,例如“面包、牛奶、黄油”。
频繁项集:谁总是结伴而来
老王开始统计“谁和谁总是结伴而来”。他发现,“面包”出现了 600 次,“黄油”出现了 400 次,而“面包和黄油同时出现”的次数是 350 次。他把这个“同时出现”的频繁程度叫做支持度(Support)。所谓项集,就是一组商品的集合,比如 {面包,黄油} 就是一个 2-项集。支持度衡量的是:这个项集在全部交易中出现的比例。老王事先定了一个门槛——比如支持度不低于 30%——超过这个门槛的项集,就叫频繁项集。支持度越高,说明这个商品组合越常见,越值得关注。
支持度的计算公式如下:
其中 X 是一个项集(比如 {面包,黄油}),count(X) 是同时包含 X 中所有商品的交易笔数。
老王把支持度想象成“派对常客指数”:如果一个组合出现在 35% 的派对上,那这俩“客人”绝对是固定搭子。他只把这些“固定搭子”留在名单上,把那些只碰巧同框一次的组合划掉。这样一来,需要重点关注的项集数量立刻少了一大半,接下来的分析也就轻松多了。
- 分子 count(X)统计所有交易中,同时包含 X 里全部商品的交易数量。比如 {面包,黄油} 同时出现了 350 次。
- 分母 |D|交易总笔数。老王这周有 1000 笔交易,所以 |D|=1000。
- 两者相除得到 X 在所有交易中的占比。350 / 1000 = 0.35,即支持度 35%,超过了老王设置的 30% 门槛。
Apriori原理:先找熟客,再找圈子
如果老王想找 3 项甚至 4 项商品的组合,直接穷举所有商品组合会非常慢——1000 种商品的两两组合就有近 50 万种,更别说三元组合了。好在 Apriori 算法有一个聪明的主意:如果一个项集是频繁的,那它的所有子集也必然是频繁的。反过来想,如果一个项集不频繁,那它的任何超集(往它里面加商品得到的集合)也一定不频繁。这就是先验性质(Apriori Property)。老王用这个性质做“剪枝”:先找出所有频繁的单个商品(1-项集),再由 1-项集两两连接生成 2-项集候选,只保留支持度达标的 2-项集;然后用这些频繁 2-项集生成 3-项集候选……逐层往上搜索。每一层都用上一层的“熟客”圈来缩小范围,极大地减少了计算量。
用数学语言描述这条性质就是:
老王在纸上画了个示意图:频繁的单个商品像一个个“派对常客”,Apriori 先确认这些常客,再看他们之间谁和谁互相认识,然后通过“常客的朋友圈”一层层扩大圈子。不认识常客的人(非频繁单项集)直接被排除,绝不让它混进更大的圈子。这样,原本要计算的庞大组合数,被砍掉了九成以上。老王感叹,这就像组织大型聚会:先请最活跃的人,再由他们吸引更多人,而不是把全城的人都挨个登门拜访。
- 子集支持度不降如果 Y 是 X 的子集,那么包含 X 的所有交易必然也包含 Y,所以 Y 的支持度一定不低于 X。
- 频繁性传递如果 X 达到最小支持度阈值,那么 Y 也必然达到;反过来,如果 Y 不频繁,X 就不可能频繁。
关联规则生成:从“同框”到“指向”
找到了频繁项集,老王还想知道方向:顾客买了面包之后,到底是更容易买黄油,还是反过来?这就要构造关联规则,形如“ A → B“,读作”买 A 也买 B“。衡量这条规则可靠性的指标叫置信度(Confidence):在所有买 A 的交易中,同时买 B 的交易占多大比例。老王算了一下:买面包的交易有 600 笔,其中 350 笔也买了黄油,所以”面包 → 黄油”的置信度是 350/600 ≈ 58%。他设了一个最小置信度门槛(比如 60%),超过这个门槛的规则叫强规则。注意,置信度是有方向的:黄油 → 面包的置信度是 350/400 = 87.5%,远高于面包 → 黄油。老王意识到,方向不一样,商业含义完全不同:买黄油的人更可能顺手拿面包,所以把面包放在黄油旁边效果更好。
置信度的公式如下:
老王把置信度理解成“派对里的跟随率”:黄油是派对上的“社交核心”,只要黄油出现,面包这个“跟班”大概率也会出现。而面包虽然出场次数多,但带动黄油的能力一般。所以规则的箭头不能乱画,它指向的是真正有“连带吸引力”的方向。老王把强规则记在小本本上:黄油 → 面包、啤酒 → 尿布……准备下一步评估它们的真实价值。
- 分子 sup(X∪Y)X 和 Y 同时出现的支持度,即同时买 A 和 B 的交易比例。
- 分母 sup(X)只买 X 的支持度,即所有交易中买 A 的比例。
- 相除得到“在买 A 的条件下买 B”的条件概率。350/1000 除以 600/1000,等于 0.58。
提升度评估:是真靠谱还是碰巧
老王很兴奋,但旁边的数据分析师小陈泼了盆冷水:置信度高,不一定代表规则有商业价值。比如,牛奶是畅销品,支持度高达 80%;某个冷门商品奶酪的支持度只有 5%,而买了奶酪的人几乎都会买牛奶,所以“奶酪 → 牛奶”置信度高达 95%。可这条规则有意义吗?老王想:奶酪卖不出去,再怎么推荐牛奶也改变不了奶酪的销量。问题出在哪?因为牛奶本身就太常被买了,即使奶酪和牛奶完全没有关联,置信度也会很高。这时需要引入提升度(Lift):它比较“买 A 时买 B 的实际概率”和“不买 A 时买 B 的基础概率”,用来判断 A 是否真的促进了 B。
提升度的公式为:
老王终于明白了:提升度像是一面“照妖镜”。如果“啤酒 → 尿布”的 lift=1.5,说明买啤酒确实会显著提高买尿布的概率,这比置信度更能说明问题;而“奶酪 → 牛奶”的 lift≈1.0,说明这俩其实各玩各的,只是看起来关系好。老王把记录在小本本上的规则按提升度重新排了序,只留下真正有价值的“强关联”。他感叹,光看置信度就像只看朋友圈点赞数,提升度才能看出谁是真心互动。
- 分子 sup(X∪Y)X 和 Y 同时出现的支持度,代表实际共现比例。
- 分母 sup(X)×sup(Y)假设 X 和 Y 完全独立时,两者同时出现的期望比例。
- 相比实际共现比例除以期望共现比例。大于 1 表示正相关,等于 1 表示相互独立,小于 1 表示负相关。
案例实施流程:从数据到结论的四步走
老王决定用一套清晰的流程跑完整个分析。他把流程总结成四步:数据处理 → 参数设置 → 算法挖掘 → 结果解读。第一步,他把小票整理成事务表,去掉异常数据;第二步,设定最小支持度阈值和最小置信度阈值——他先设支持度 30%、置信度 70%,如果结果太少太少,就调低支持度;第三步,用 Apriori 算法迭代产生频繁项集,再由频繁项集生成候选规则;第四步,对每条规则计算置信度和提升度,挑出真正有价值的规则,回到业务中去验证。
在这个流程里,参数调整是个手艺活。最小支持度设得太高,会漏掉许多小众但有价值的组合;设得太低,又会冒出大量琐碎规则,让人头晕。老王采用了一个简单的“试错法”:先看 20% 支持度下有哪些频繁项集,再逐步调整到结果数量合适为止。他还在电脑上用 Python 写了个脚本,把 Apriori 算法跑了一遍(这部分代码在后面会展示)。算法本身并不复杂,关键是每一步都要用业务眼光去审视。
老王把整个流程比作“做一道菜”:小票是食材,清洗是择菜,阈值是火候,Apriori 是锅铲,而最后的解读是装盘摆盘。食材不新鲜,锅铲再有本事也做不出好菜;火候不对,再好的食材也会炒糊。老王照着这个流程,花了两个小时就拿到了全部强规则清单,他心里有底了。
商业应用策略:把洞察变成钱
老王拿着规则清单,开始大兴土木。第一条规则:黄油 → 面包,提升度 1.4。他把面包从超市最里面挪到了黄油旁边,并在黄油冷柜上方挂了个小牌子:“配面包更美味”。一周后,面包销量涨了 12%。第二条规则:啤酒 → 尿布,提升度 1.5。他虽然没有把啤酒和尿布真的放在一起(毕竟一个在酒水区一个在母婴区),但在啤酒货架上贴了优惠券:买啤酒满 20 元,凭小票到母婴区领取尿布试用装。结果母婴区的新客流量明显增加。第三条规则:牛奶 → 麦片,提升度 1.3。他把牛奶和麦片做成了“早餐套餐”,组合价便宜 2 元,连带率一下子提升了不少。
这些策略在专业上分别叫商品摆放优化、捆绑促销设计和交叉推荐。本质上,都是利用关联规则去影响顾客的购买路径。老王意识到,购物篮分析不是一次性的,而应该持续进行:每季度更新一次规则,看看顾客的“派对习惯”有没有变化。他甚至在考虑,未来可以给会员卡的分析加上时间维度,看看“周五晚上啤酒尿布组合”是不是比平时更明显。
老王站在超市里,看着货架上那些“牵手成功”的商品组合,像看一场精心安排的相亲大会。算法告诉他谁和谁有缘分,而他需要做的,就是给缘分创造机会——摆得近一点,促销巧一点,推荐准一点。购物篮分析,让零散的小票变成了超市生生不息的经营智慧。
AI 应用场景
零售超市的货架优化
阶段:策略部署与优化
解决的问题:传统人工凭经验摆放商品,容易忽略跨品类的隐性关联。购物篮分析可以从海量小票中找出高提升度的商品组合,指导商品陈列,提升客单价和连带率。
具体案例:某连锁超市用 Apriori 算法分析月度销售数据,发现“烧烤酱”与“一次性烤架”提升度高达 2.0,于是把两者在生鲜区做成关联陈列,并在周末烧烤场景主推,该品类月度销售额提升了 18%。
电商平台的交叉推荐
阶段:特征挖掘与推荐生成
解决的问题:用户在加购一件商品后,平台不知道应该推荐什么才自然。传统协同过滤只关注用户相似度,而购物篮分析可以直接给出“买了 A 又买 B”的规则,推荐理由更直观、转化率更高。
具体案例:某电商平台对订单数据进行关联分析,发现“手机壳 → 钢化膜”规则置信度高达 78%,于是将两者组合推荐,并在结算页展示“经常一起购买”模块,该模块点击率比普通推荐位高 25%。
促销套餐的设计
阶段:营销方案决策
解决的问题:盲目捆绑促销可能把不搭边的商品强行组合,反而让顾客反感。通过提升度筛选出真正有正向关联的商品,设计出的套餐既符合顾客购物直觉,又能提高客单价。
具体案例:一家社区超市用 Apriori 发现“牛奶”和“麦片”提升度 1.3,于是推出“早餐组合”:牛奶+麦片立减 3 元。活动期间,麦片销量环比上涨 40%,牛奶销量上涨 15%,客单价提升 8%。
Python 演示
from itertools import combinationsfrom collections import defaultdict def apriori(transactions, min_sup=0.3, min_conf=0.7): items = sorted({item for t in transactions for item in t}) n = len(transactions) freq = {} current = {frozenset([i]) for i in items} while current: counts = {c: 0 for c in current} for t in transactions: ts = set(t) for c in current: if c.issubset(ts): counts[c] += 1 freq.update({c: cnt / n for c, cnt in counts.items() if cnt / n >= min_sup}) current_list = sorted(current) next_c = set() for i in range(len(current_list)): for j in range(i + 1, len(current_list)): c1 = current_list[i] c2 = current_list[j] union = c1 | c2 if len(union) == len(c1) + 1: if all((union - {item}) in freq for item in union): next_c.add(union) current = next_c rules = [] for itemset, sup in freq.items(): if len(itemset) < 2: continue for r in range(1, len(itemset)): for premise in combinations(itemset, r): premise_set = frozenset(premise) conclusion = itemset - premise_set premise_sup = freq.get(premise_set, 0) if premise_sup > 0: conf = sup / premise_sup if conf >= min_conf: lift = sup / (premise_sup * freq.get(conclusion, 1)) rules.append((premise_set, conclusion, sup, premise_sup, conf, lift)) return freq, rules if __name__ == '__main__': transactions = [ ['牛奶', '面包', '黄油'], ['啤酒', '尿布'], ['牛奶', '尿布', '面包'], ['啤酒', '面包', '尿布'], ['牛奶', '啤酒', '尿布'], ] freq, rules = apriori(transactions, min_sup=0.4, min_conf=0.7) print('频繁项集:') for itemset, sup in sorted(freq.items(), key=lambda x: -x[1]): if len(itemset) >= 1: print(set(itemset), round(sup, 2)) print('\n关联规则:') for premise, conclusion, sup, premise_sup, conf, lift in rules: print(set(premise), '->', set(conclusion), 'conf=', round(conf, 2), 'lift=', round(lift, 2))
items = sorted({item for t in transactions for item in t})提取所有不重复的商品作为“派对客人名单”。counts = {c: 0 for c in current}为当前层每个候选组合设置计数器,准备统计支持度。if c.issubset(ts): counts[c] += 1检查交易事务是否包含该候选组合,是则计数加一。freq.update(...)只保留支持度达到阈值的项集,形成频繁项集字典。union = c1 | c2; if len(union) == len(c1)+1连接步:两个 k 项集如果前 k-1 项相同,合并出 k+1 项集。all((union - {item}) in freq for item in union)剪枝步:先验性质,若某个子集不频繁则整个组合被丢弃。for premise in combinations(itemset, r)枚举频繁项集的所有非空真子集,用来生成候选规则。conf = sup / premise_sup计算规则置信度:买前提条件商品后,再买结论商品的概率。lift = sup / (premise_sup * freq.get(conclusion, 1))计算提升度,判断规则是否真的比“偶然同框”更有价值。if __name__ == '__main__':可执行入口,让脚本既能作为模块导入,也能直接运行演示。
常见误区
误区我以为只要两个商品一起出现的次数多,比如“面包和牛奶”支持度高,就可以直接拿去做促销。
正解频繁项集只说明“这两个商品经常一起出现”,但它没有方向性,也不代表“买 A 一定促进买 B”。要形成可落地的规则,还需要看置信度和提升度。就像老王发现面包和牛奶经常同框,但买面包并不一定会带动牛奶,只有规则的方向和强度都达标,才有商业价值。
为何常见:因为 Apriori 的第一步就是找频繁项集,大家天然认为“高频 = 重要”,忽略了规则生成和评估是更关键的后半程。
误区我看一条规则置信度 90%,觉得超级靠谱,马上放进促销方案。
正解置信度只度量了“前提成立时结论的条件概率”,但没考虑结论本身的基础出现概率。一个畅销品(如牛奶)即使与另一个商品完全无关,它的条件概率也会虚高。必须用提升度把“基础概率”去掉,才能判断 A 是否真的在促进 B。就像派对上每个人都在喝可乐,不代表有人请客时特别爱喝可乐。
为何常见:直觉上觉得 90% 已经很高了,容易忽略统计学里“基础概率”的影响。
误区规则显示“啤酒 → 尿布”,我以为是啤酒导致顾客想买尿布,甚至去研究两种商品化学成分有没有关系。
正解Apriori 发现的只是“共现相关性”,不是因果。啤酒和尿布很可能是因为“年轻爸爸”这个隐藏因素同时推动了购买。关联规则只能告诉我们要什么组合,不能解释为什么。真正判断因果需要实验设计或更严谨的因果推断。
为何常见:生活语言里“买 A 也买 B”听起来像因果,营销人员也喜欢把相关包装成因果来讲故事。
误区我怕漏掉有用规律,把最小支持度设成 0.1%,结果生成的频繁项集几万个,完全看不过来。
正解支持度过低会产生大量琐碎甚至虚假的组合,不仅计算开销巨大,而且信噪比极低,难以聚焦核心业务规律。实际中应根据业务对“常见”的定义设定阈值,或先高后低逐步试探,找到规则数量和价值的平衡点。
为何常见:初学阶段总想“宁可错杀不可放过”,忘了数据分析的最终目的是产生可执行的洞察,而不是输出一个巨大的表。
误区既然算法找出了规则,我就把所有强规则对应的商品都拿去捆绑促销。
正解规则给出的是“组合可能性”,但商业上还要考虑毛利率、库存、品类管理、消费场景。比如高提升度的啤酒和尿布,放一起陈列可能影响购物动线,捆绑也可能让毛利率受损。购物篮分析是决策辅助,不是自动决策机器,具体策略需要结合运营成本与消费者体验。
为何常见:把数据分析结果直接等同于行动方案,忽略了业务世界的约束条件,这是工具型从业者常见的惯性。
面试题
Q1. 购物篮分析的主要目标是什么?
- A.预测商品未来销量趋势
- B.挖掘商品之间的关联关系← 正确答案
- C.识别顾客的支付偏好
- D.计算超市的营业利润
答案:B。购物篮分析通过分析顾客一次性购买的商品组合,发现“买 A 也买 B”的规律。A 是时间序列预测,C 是支付分析,D 是财务分析,都与关联关系无关。就像老王关心的是哪些“客人”总是一起出现,而不是他们几点来。
Q2. 支持度 sup(A)=0.3 表示什么?
- A.商品 A 的销量占总销量的 30%
- B.30% 的交易同时包含商品 A 和 B
- C.30% 的交易中出现了商品 A← 正确答案
- D.商品 A 的利润占比为 30%
答案:C。支持度是项集在全部交易中出现的比例。sup(A)=0.3 表示在所有小票中,有 30% 的小票包含 A。B 说的是 sup(A∪B),A 和 D 把支持度偷换成了销量和利润概念,都是混淆项。
Q3. Apriori 算法的先验性质是?
- A.频繁项集的子集一定频繁← 正确答案
- B.频繁项集的超集一定频繁
- C.非频繁项集的子集一定频繁
- D.所有子集支持度都相等
答案:A。先验性质是“子集支持度不小于原项集”,所以频繁项集的任何子集必然也频繁。B 正好相反,C 也相反,D 忽视了子集包含更少商品、出现概率只会更高或相等。这个性质支撑了 Apriori 的剪枝,大大降低计算量。
Q4. 置信度 conf(A→B)=0.8 表示什么?
- A.同时买 A 和 B 的概率是 0.8
- B.买 A 的交易中 80% 也会买 B← 正确答案
- C.买 B 的交易中 80% 也会买 A
- D.所有交易中有 80% 包含 A
答案:B。置信度是条件概率 P(B|A),也就是前提 A 成立时结论 B 出现的概率。A 描述的是支持度 sup(A∪B),C 描述的是 conf(B→A),D 描述的是 sup(A)。方向不同,商业含义差异巨大。
Q5. 某规则置信度为 0.85,但提升度小于 1,说明什么?
- A.规则有很强正向价值
- B.A 和 B 实际呈负相关← 正确答案
- C.数据一定存在错误
- D.支持度阈值设低了
答案:B。提升度小于 1 表示实际共现比例低于独立假设下的期望比例,这意味着 A 的出现反而降低了 B 的出现概率,是负相关。置信度高可能只是因为 B 本身太常见,不能代表规则有价值。这两个指标要配合看。
Q6. Apriori 连接步产生候选 3-项集时,为什么要求两个频繁 2-项集前 1 项相同?
- A.为了保证生成的新集合恰好是 3 项← 正确答案
- B.为了利用先验性质避免遗漏
- C.因为 3 项集必须由完全相同的项组成
- D.为了提升置信度计算速度
答案:A。Apriori 按字典序连接,两个 k-1 项集前 k-2 项相同、最后一项不同时,并集正好是 k 项,能避免重复生成。同时,新候选的任意 k-1 子集都在上一层的频繁项集中,满足先验性质才保留。这既保证了正确性,也控制了候选规模。
Q7. sup(面包→牛奶)=0.3 指什么?
- A.面包的支持度为 0.3
- B.面包和牛奶同时出现在 30% 的交易中← 正确答案
- C.买面包后买牛奶的概率是 0.3
- D.牛奶的支持度为 0.3
答案:B。支持度的对象是项集,sup(面包→牛奶) 实际上指的是项集 {面包,牛奶} 的支持度,即两者共同出现比例。C 是置信度,A 和 D 只提到单个商品。关联规则中箭头的支持度与规则本身的“方向”无关,这点很容易混淆。
Q8. 下列哪些属于购物篮分析的典型商业应用?
- A.优化商品货架摆放← 正确答案
- B.设计捆绑促销套餐← 正确答案
- C.电商平台交叉推荐← 正确答案
- D.核算超市水电成本
答案:ABC。购物篮分析挖掘商品间关联,自然能用于货架、促销、推荐三类场景。水电成本属于运营财务,与商品关联规律无关。老王把面包挪到黄油旁边、设计早餐套餐、推荐手机壳给买手机的人,都是这些应用的体现。
Q9. 关于提升度 lift(A→B),下列说法正确的有?
- A.lift>1 表示 A 对 B 有正向促进← 正确答案
- B.lift<1 表示 A 与 B 负相关← 正确答案
- C.lift=1 表示 A 与 B 相互独立← 正确答案
- D.lift>1 就一定是因果关系
答案:ABC。提升度是实际共现概率与独立假设下期望概率的比值,大于 1 正相关,小于 1 负相关,等于 1 独立。但相关性不等于因果,D 把“相关”偷换成“因果”,是错误的。老王用提升度照出“奶酪→牛奶”的虚假繁荣,正是因为看到 lift≈1。
Q10. 关联分析中常用的阈值参数有哪些?
- A.最小支持度← 正确答案
- B.最小置信度← 正确答案
- C.交易时间窗口
- D.提升度阈值← 正确答案
答案:ABD。最小支持度用于筛频繁项集,最小置信度用于筛强规则,提升度阈值用于过滤无价值的规则,都属于关联分析参数。交易时间窗口属于时间序列分析的参数,不是 Apriori 算法的核心参数。老王在跑流程时先调支持度和置信度,再用提升度排序,正好对应这三个参数。