2、核心概念精讲:支持度、置信度、提升度的定义与计算公式
好,咱们进入正题。这三个指标,说白了就是关联规则挖掘的「三驾马车」。你不管用什么算法,最后都得拿它们说话。我刚开始接触这行的时候,也经常搞混,尤其是置信度和提升度,总觉得差不多。后来踩过坑才明白——差远了。
2.1 支持度(Support)—— 这条规则有多「普遍」?
先问个问题:「买啤酒的人里,有多少也买了尿布?」 这个问题其实问的是条件概率。但支持度问的是另一个角度:「啤酒和尿布同时出现在一张小票里的概率有多大?」
公式很简单:
Support(X → Y) = P(X ∩ Y) = (包含X和Y的订单数) / (总订单数)
举个例子。假设超市有100笔订单,其中「啤酒+尿布」同时出现了20次。那么:
Support(啤酒 → 尿布) = 20 / 100 = 0.2
嗯,这里要注意:支持度是一个绝对指标。它告诉你这条规则覆盖了多少数据。如果支持度太低,比如只有0.01,那就算规则再强,也没什么商业价值——毕竟只发生在1%的订单里,不值得专门搞促销。
我个人习惯:在项目初期,我会先设一个支持度阈值(比如0.05),把那些太冷门的组合直接过滤掉。不然数据量一大,光算组合就能把服务器跑崩。
2.2 置信度(Confidence)—— 这条规则有多「靠谱」?
置信度回答的是:「买了A的人,有多大比例也买了B?」 它衡量的是规则的可靠性。
公式:
Confidence(X → Y) = P(Y | X) = Support(X ∪ Y) / Support(X)
还是那个例子。如果「啤酒」出现了50次,其中「啤酒+尿布」出现了20次:
Confidence(啤酒 → 尿布) = 20 / 50 = 0.4
意思是:买啤酒的人里,有40%也买了尿布。这个比例挺高了,对吧?
但是——这里有个坑。置信度只考虑了「买了A的人」,没考虑「没买A的人」。你想想看,如果尿布本身就是一个热销品,整体购买率就很高,那置信度高可能只是「假象」。
我曾经在一个电商项目中,发现一条规则置信度高达85%,兴奋得不行。结果一查,那个商品B本身就是爆款,整体购买率就有80%。那85%的置信度其实没什么增量价值。这就是为什么我们需要第三个指标。
2.3 提升度(Lift)—— 这条规则到底有没有「额外价值」?
提升度才是真正检验规则「含金量」的指标。它回答:「买了A之后,买B的概率比随机买B的概率高了多少?」
公式:
Lift(X → Y) = Confidence(X → Y) / Support(Y)
= P(Y | X) / P(Y)
说白了,就是看「条件概率」比「整体概率」大多少。
- Lift > 1:正相关。买了A会提升买B的概率。这是我们要找的好规则。
- Lift = 1:独立。A和B没啥关系,买了A不影响买B。
- Lift < 1:负相关。买了A反而降低了买B的概率。比如买可乐的人可能不太会买牛奶。
回到刚才的例子。假设尿布的整体购买率是30%(100笔里有30笔买了尿布):
Lift(啤酒 → 尿布) = 0.4 / 0.3 ≈ 1.33
提升度1.33,说明买啤酒的人买尿布的概率,比普通人高了33%。嗯,这个规则有价值。
我建议:实际项目中,我一般会同时看三个指标。支持度过滤低频组合,置信度看可靠性,提升度看增量价值。缺一不可。比如我会设:Support ≥ 0.05,Confidence ≥ 0.3,Lift ≥ 1.2。这样筛出来的规则,基本不会太离谱。
2.4 三个指标的关系与对比
咱们用一张表总结一下:
| 指标 | 含义 | 公式 | 取值范围 | 关注点 |
|---|---|---|---|---|
| 支持度 | 规则覆盖的数据比例 | P(X ∩ Y) | [0, 1] | 普遍性 |
| 置信度 | 买了A的人买B的概率 | P(Y|X) | [0, 1] | 可靠性 |
| 提升度 | 比随机购买高多少倍 | P(Y|X)/P(Y) | [0, +∞) | 增量价值 |
你想想看,如果只看置信度,你可能会被「爆款效应」欺骗。如果只看支持度,你可能会错过那些小众但强关联的组合。只有三个指标一起看,才能做出靠谱的判断。
避坑指南:提升度虽然好,但也不是越大越好。我见过有人拿Lift=10的规则当宝贝,结果一看支持度只有0.001——总共就几笔订单,统计意义不大。所以记住:先看支持度,再看提升度。支持度不够的规则,再高的提升度也只是噪音。
2.5 一个完整的计算示例
咱们手算一遍,加深印象。假设有5笔订单:
订单1: {牛奶, 面包, 鸡蛋}
订单2: {牛奶, 面包}
订单3: {牛奶, 鸡蛋}
订单4: {面包, 鸡蛋}
订单5: {牛奶, 面包, 鸡蛋, 啤酒}
总订单数 = 5。我们看规则:牛奶 → 面包
- Support(牛奶 → 面包) = 同时包含牛奶和面包的订单数 / 总订单数 = 3 / 5 = 0.6
- Confidence(牛奶 → 面包) = Support(牛奶∪面包) / Support(牛奶) = 0.6 / (4/5) = 0.6 / 0.8 = 0.75
- Lift(牛奶 → 面包) = Confidence / Support(面包) = 0.75 / (3/5) = 0.75 / 0.6 = 1.25
结果解读:
- 60%的订单同时买了牛奶和面包,这条规则覆盖面很广。
- 买牛奶的人里,75%也买了面包,可靠性不错。
- 提升度1.25,说明买牛奶使买面包的概率提升了25%。
嗯,这是一条好规则。如果我是超市经理,我会考虑把牛奶和面包摆在一起。
我个人经验:在实际代码实现时,这三个指标的计算其实就一行pandas的事。但理解它们的业务含义,比会写代码重要得多。我见过太多人调包跑出一堆规则,结果连提升度是啥意思都说不清楚——那才是真正的「数据挖掘民工」。
好,核心概念就讲到这里。下一节咱们会动手写代码,用Apriori算法从零实现关联规则挖掘。到时候你会发现,理解了这三个指标,后面的代码就是水到渠成的事。