【关联规则挖掘】

关联规则–支持度、置信度、提升度

本篇内容主要介绍在关联规则挖掘中三个重要的指标:支持度、置信度、提升度。
第1章介绍什么是支持度、置信度及提升度;之后在第2章通过具体实例说明这三个指标如何计算;第3章简要介绍置信度的局限性;第4章说明提升度和零事务的关系;第5章介绍了可以通过先验原则减少候选项集的数量;第6章说明了关联规则在应用过程中的局限性。

1. 定义

1.1 支持度(support)

支持度表示某个项集出现的频率,即包含该项集(itemset)的交易数与总交易数的比例。
例如P(A)表示项集A的比例,P(A∩B)表示项集A和项集B同时出现的比例

Q: 什么是项(item)和项集(itemset)?
A:

  • 项:交易中的每一个物品称为一个项,例如 可乐、雪碧。
  • 项集: 包含0个或多个项的集合叫做项集,例如 {可乐、雪碧},{牛奶、果汁、红酒}。
  • k-项集:包含k个项的项集叫做k-项集。例如{苹果}叫做1-项集,{牛奶,啤酒,米饭}叫做3-项集。
  • 广义项(generalized item) :表示一个高层次的抽象,如波斯猫和老虎都可以归类为猫科动物,简写为
    GI
  • 高效用项集挖掘:就是频繁项集挖掘的一个延伸。在同一交易中,items 可以出现超过一次(例如 3 瓶牛奶,两个苹果)每个item 都有自己的利润, 我们的目标变为找出产生高利润的项集。

Q: 什么是事务(transaction)?
A: 每一条交易就是一个事务。案例一的表中一共有8个事务。

1.2 置信度(confidence)

可信度表示当A项出现时B项同时出现的频率,记作{A→B}。即 置信度=A和B同时出现的次数/A出现的次数)。公式表达:{A→B}的置信度=P(B|A)=P(A∩B)/P(A)。

1.2 提升度(lift)

提升度指A项和B项一同出现的频率,但同时要考虑这两项各自出现的频率。公式表达:{A→B}的提升度={A→B}的置信度/P(B)=P(B|A)/P(B)= P(A∩B)/(P(A)*P(B))。
提升度反映了关联规则中的A与B的相关性,提升度>1且越高表明正相关性越高,提升度<1且越低表明负相关性越高,提升度=1表明没有相关性。负值,商品之间具有相互排斥的作用。

2. 案例一

在这里插入图片描述
举例说明关联规则的三个指标(支持度、置信度和提升度)如何计算

1.支持度
{啤酒}在交易中心出现了6次,所以其支持度为6/8;
{苹果,米饭}的支持度为2/8.
也可以认为设定一个支持度阈值,当某个项集的支持度高于这个阈值时,被称为频繁项集(frequent itemsets)。
2. 置信度
{苹果->米饭}的置信度=支持度{苹果,米饭}/支持度{苹果}=2/4。
置信度有一个缺点,它可能会错估某个关联规则的重要性。只考虑了苹果的购买频率,未考虑米饭的购买频率。
3. 提升度
{苹果→啤酒}的提升度等于{苹果→啤酒}的置信度除以{啤酒}的支持度,(\frac{3}{4})/(\frac{3}{4})=1,{苹果→啤酒}的提升度等于1,这表示苹果和啤酒无关联。{X→Y}的提升度大于1,这表示如果顾客购买了商品X,那么可能也会购买商品Y;而提升度小于1则表示如果顾客购买了商品X,那么不太可能再购买商品Y。

3. 案例二:置信度的局限——错估某个关联规则的重要性。

表1 与啤酒相关的3个关联规则

关联规则支持度置信度提升度
啤酒–>汽水1.38%17.8%1.0
啤酒–>浆果0.08%1.0%0.3
啤酒–> 男士护肤品0.09%1.2%2.6

表2 各商品在与啤酒相关的关联规则中的支持度

商品支持度
啤酒7.77%
汽水17.44%
浆果3.32%
男士护肤品0.46%
  • {啤酒→汽水}规则的置信度最高,为17.8%。然而,在所有交易中,二者出现的频率都很高(如表2所示),所以它们之间的关联可能只是巧合。这一点可以通过其提升度为1得到印证,即购买啤酒和购买汽水这两个行为之间并不存在关联。
  • 另一方面,{啤酒→男士护肤品}规则的置信度低,这是因为男士护肤品的总购买量不大。尽管如此,如果一位顾客买了男士护肤品,那么很有可能也会买啤酒,这一点可以从较高的提升度(2.6)推断出来。{啤酒→浆果}的情况则恰好相反。从提升度小于1这一点,我们可以得出结论:如果一位顾客购买了啤酒,那么可能不会买浆果。
  • 虽然很容易算出各个商品组合的销售频率,但是商家往往更感兴趣的是所有的热销商品组合。为此,需要先为每种可能的商品组合计算支持度,然后找到支持度高于指定阈值的商品组合。

4. 案例三:提升度和零事务的关系

10000个超市订单(10000个事务),其中购买三元牛奶(A事务)的6000个,购买伊利牛奶(B事务)的7500个,4000个同时包含两者。
那么通过上面支持度的计算方法我们可以计算出:

  • 三元牛奶(A事务)和伊利牛奶(B事务)的支持度为:P(A \cap B)=4000/10000=0.4.
  • 三元牛奶(A事务)对伊利牛奶(B事务)的置信度为:包含A的事务中同时包含B的占包含A的事务比例。4000/6000=0.67,说明在购买三元牛奶后,有0.67的用户去购买伊利牛奶。
  • 伊利牛奶(B事务)对三元牛奶(A事务)的置信度为:包含B的事务中同时包含A的占包含B的事务比例。4000/7500=0.53,说明在购买伊利牛奶后,有0.53的用户去购买三元牛奶。

在没有任何条件下,B事务的出现的比例是0.75,而出现A事务,且同时出现B事务的比例是0.67,也就是说设置了A事务出现这个条件,B事务出现的比例反而降低了。这说明A事务和B事务是排斥的。
下面就有了提升度的概念。
我们把0.67/0.75的比值作为提升度,即P(B|A)/P(B),称之为A条件对B事务的提升度,即有A作为前提,对B出现的概率有什么样的影响,

  • 如果提升度=1说明A和B没有任何关联;
  • 如果<1,说明A事务和B事务是排斥的;
  • |如果>1,我们认为A和B是有关联的。但是在具体的应用之中,我们认为提升度>3才算作值得认可的关联。

提升度是一种很简单的判断关联关系的手段,但是在实际应用过程中受零事务的影响比较大,零事务在上面例子中可以理解为既没有购买三元牛奶也没有购买伊利牛奶的订单。数值为10000-4000-2000-3500=500,可见在本例中,零事务非常小,但是在现实情况中,零事务是很大的。在本例中如果保持其他数据不变,把10000个事务改成1000000个事务,那么计算出的提升度就会明显增大,此时的零事务很大(1000000-4000-2000-3500),可见提升度是与零事务有关的,零事务越多,提升度越高。

将事务改成1000000个:

P(A)=6000/1000000=0.006

P(B)=7500/1000000=0.0075

Support(支持度):P(A\cap B)=4000/1000000=0.004

Confidence(置信度):P(B\mid A)=P(A\cap B)/P(A)=0.004/0.006=0.67

Lift(提升度):P(B\mid A)/P(B)=0.67/0.0075

零事务:1000000-4000-2000-3500=990500,可见零事务的个数提升之后,提升度越高。

5. 先验原则-精简候选项集

即使只有10种商品,待检查的总组合数也将高达1023(即210-1)。如果有几百种商品,那么这个数字将呈指数增长。显然,我们需要一种更高效的方法。

要想减少需要考虑的项集组合的个数,一种方法是利用先验原则。简单地说,先验原则是指,如果某个项集出现得不频繁,那么包含它的任何更大的项集必定也出现得不频繁。这就是说,如果{啤酒}是非频繁项集,那么{啤酒,比萨}也必定是非频繁项集。因此,在整理频繁项集列表时,既不需要考虑{啤酒,比萨},也不需要考虑其他任何包含啤酒的项集。

遵循如下步骤,可以利用先验原则得到频繁项集列表。

  • 步骤1:列出只包含一个元素的项集,比如{苹果}和{梨}。

  • 步骤2:计算每个项集的支持度,保留那些满足最小支持度阈值条件的项集,淘汰不满足的项集。

  • 步骤3:向候选项集(淘汰步骤2不满足的项集后的结果)中增加一个元素,并利用在步骤2中保留下来的项集产生所有可能的组合。

  • 步骤4:重复步骤2和步骤3,为越来越大的项集确定支持度,直到没有待检查的新项集。

下图描绘了利用先验原则对候选项集进行大幅精简的过程。如果{苹果}的支持度很低,那么它及其他所有包含它的候选项集都会被移除。这样一来,待检查项集的数量就减少了一大半。
在这里插入图片描述

除了识别具有高支持度的项集之外,先验原则还能识别具有高置信度或高提升度的关联规则。一旦识别出具有高支持度的项集,寻找关联规则就不会那么费劲了,这是因为置信度和提升度都是基于支持度计算出来的。

举个例子,假设我们的任务是找到具有高置信度的关联规则。如果{啤酒,薯片→苹果}规则的置信度很低,那么所有包含相同元素并且箭头右侧有苹果的规则都有很低的置信度,包括{啤酒→苹果,薯片}和{薯片→苹果,啤酒}。如前所述,根据先验原则,这些置信度较低的规则会被移除。这样一来,待检查的候选规则就更少了。

6. 局限性

计算成本高:尽管利用先验原则可以减少候选项集的个数,但是当库存量很大或者支持度阈值很低时,候选项集仍然会很多。一个解决办法是,使用高级数据结构对候选项集进行更高效的分类,从而减少比较的次数。

假关联:**当元素的数量很大时,偶尔会出现假关联。**为了确保所发现的关联规则具有普遍性,应该对它们进行验证(详见机器学习的交叉验证)。

参考
[1]: https://blog.csdn.net/huangguohui_123/article/details/105361461
[2]: 《白话机器学习算法》.[新加坡]黄莉婷,[新加坡]苏川集.2019-03

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值