是数据挖掘领域最经典的算法之一——Apriori 算法。
它的名字听起来有点像“April(四月)”,但其实它的意思是“先验的”。别被这个哲学词汇吓到了,它的核心应用场景非常接地气,就在你每天去的超市里。
如果你完全不懂算法,没关系。听说过那个著名的**“啤酒与尿布”**的故事吗?
1. 它是做什么的?(经典传说)
传说沃尔玛超市在分析销售数据时发现了一个奇怪的现象:“啤酒”和“尿布”经常出现在同一个购物篮里。
为什么?
原来,很多年轻爸爸在周五下班后去超市给孩子买尿布时,会顺手给自己买几瓶啤酒,准备周末看球赛喝。
于是,超市把啤酒和尿布摆在了一起,结果两样东西的销量都蹭蹭往上涨。
Apriori 算法的任务就是:
在一堆看似杂乱无章的订单数据中,找出像“啤酒+尿布”这样隐藏的、强关联的商品组合。
2. 核心概念:三个指标
在开始找规律之前,我们得先定好规矩,什么样的组合才算“强关联”?我们用三个指标来衡量:
1. 支持度 (Support) —— 够不够流行?
- 含义:这个组合在所有订单里出现的频率。
- 例子:今天有 100 个订单,其中 10 个订单里同时买了“牛奶+面包”。
- 支持度= 10 / 100 = 10%。
- 作用:如果支持度太低(比如只有 1 个人买了),说明这只是个偶然事件,没必要分析。
2. 置信度 (Confidence) —— 关联够不够强?
- 含义:买了 A 的人,有多大概率也会买 B?
- 例子:买了“牛奶”的 50 个人里,有 40 个人同时也买了“面包”。
- 置信度 (牛奶->面包)= 40 / 50 = 80%。
- 作用:这告诉我们,牛奶对面包的“带货能力”有多强。
3. 提升度 (Lift) —— 是不是巧合?
- 含义:A 的出现,是否真的提高了 B 的购买率?(还是说 B 本来就很畅销,跟 A 没关系?)
- 判断:
- Lift > 1:有效关联(A 促进了 B)。
- Lift = 1:没关系(A 和 B 独立)。
- Lift < 1:负相关(买了 A 的人反而不爱买 B)。
3. Apriori 的“偷懒”智慧 (核心原理)
超市里有成千上万种商品,如果我们要把所有可能的组合(2件套、3件套、10件套…)都算一遍,电脑可能会算到爆炸。
Apriori 算法最聪明的地方在于它懂得**“剪枝”**(偷懒)。
它有一个黄金定律 (Apriori Principle):
如果一个组合是“冷门”的,那么包含它的所有更长的组合一定也是“冷门”的。
举个栗子:
假设我们规定:支持度必须 > 20% 才算“热门”。
- 你发现{榴莲}是冷门的(支持度只有 5%)。
- 那么,{榴莲, 牛奶}、{榴莲, 啤酒}、{榴莲, 尿布, 啤酒}… 统统不用算了!
- 因为单买榴莲的人都那么少,同时买“榴莲+其他”的人肯定更少,绝对不可能超过 5%。
直接把所有含“榴莲”的组合全部剪掉 (Prune),这一下就省了巨大的计算量!
4. 算法步骤 (怎么找?)
假设我们有 4 张小票:
- 🍎苹果, 🥛牛奶
- 🍎苹果, 🥛牛奶, 🍺啤酒, 🥚鸡蛋
- 🍎苹果, 🥛牛奶, 🍺啤酒, 🥤可乐
- 🍞面包, 🥛牛奶, 🍺啤酒
设定最小支持度 = 50%(也就是至少要在 2 张小票里出现)。
第一轮:找单个热门商品
- 🍎苹果 (3次) ✅
- 🥛牛奶 (4次) ✅
- 🍺啤酒 (3次) ✅
- 🥚鸡蛋 (1次) ❌ ->淘汰!(以后再也不看含鸡蛋的组合了)
- 🥤可乐 (1次) ❌ ->淘汰!
- 🍞面包 (1次) ❌ ->淘汰!
第二轮:两两组合 (只用剩下的热门商品)
剩下的选手:🍎、🥛、🍺。我们把它们两两配对:
- {🍎, 🥛}: 在小票 1, 2, 3 出现 -> (3次) ✅
- {🍎, 🍺}: 在小票 2, 3 出现 -> (2次) ✅
- {🥛, 🍺}: 在小票 2, 3, 4 出现 -> (3次) ✅
第三轮:三三组合
基于上一轮的赢家,尝试组合 {🍎, 🥛, 🍺}:
- {🍎, 🥛, 🍺}: 在小票 2, 3 出现 -> (2次) ✅
结束
再往后没有更多商品了,算法结束。
我们发现了强力组合:{苹果, 牛奶, 啤酒}。
5. Apriori 的优缺点
✅ 优点 (为什么它经典?)
- 逻辑简单:容易理解和实现。
- 结果易懂:产出的规则(如“买A就会买B”)非常直观,老板一看就懂。
❌ 缺点 (也要注意)
- 扫码太累:每一轮都要重新扫描一遍所有订单数据,如果数据量特别大,硬盘读写会很慢。
- 产生太多中间结果:虽然剪枝了,但如果门槛设得太低,还是会产生海量的候选组合。
6. 总结
Apriori 算法就是一个精明的超市理货员:
- 它先看哪些单品卖得好。
- 再把卖得好的单品凑成一对,看谁卖得好。
- 再凑成三件套…
- 一旦发现某个组合卖不动,马上停止在这个组合上加东西(剪枝)。
通过这种层层筛选,它最终帮我们找到了那些**“隐形的捆绑销售”**密码!🛒