频繁项集关联规则挖掘

1. 什么是关联分析

Apriori 是一种关联规则挖掘算法,一般通过支持度和置信度来做频繁项集挖掘。主要用于发现隐藏在大型数据集中有意义的联系。以尿布和啤酒为例,对应关联规则的表示:尿布 -> 啤酒。这就是使用关联分析方法所得到的结果。在进行关联分析时,我们常常会遇到这样两个问题:

  1. 从大型数据集中发现模式一般来说需要在计算上付出巨大的代价,甚至往往是impossible的,我们往往采用置信度和支持度的剪枝来解决这个问题。
  2. 所发现的某些模式可能是虚假的,这个我们需要采用一些关联规则的评估来解决这个问题。

2. 概念

独立事件:P(AB) =P(A) P(B),称A,B 相互独立。概念上就是AB同时发生的概率等于事件A发生的概率乘以事件B发生的概率。

A. 项集:在关联分析中,包含0个或者多个的项的集合称为项集。如果一个项集包含k个项,那么就称为k-项集。比如{牛奶,咖啡}则称为2项集。

B. 支持度: 支持度用来确定指定项集的频繁程度,即给定项集在所有的数据集中出现的频率,例如Support(X,Y) = N(X,Y)/N,N(X,Y)表示同时包含X,Y的项集数量,N表示数据集总数量。

C. 置信度: 置信度则是用来确定Y在包含X的项集中出现的频繁程度,即Confidence(X==>Y) = N(X,Y)/N(X)

支持度和置信度的意义在于,支持度是一个重要的度量,如果支持度很低,代表这个规则其实只是偶然出现,基本没有意义。因此,支持度通常用来删除那些无意义的规则。而置信度则是通过规则进行推理具有可靠性。用c(X->Y)来说,只有置信度越高,Y出现在包含X的事务中的概率才越大,否则这个规则也没有意义。通常我们在做关联规则发现的时候都会设定支持度和置信度阈值 minsup 和minconf , 而关联规则发现则是发现那些支持度大于等于minsup 并且置信度大于 minconf的所有规则。所以,提高关联分析算法效率最简单的办法则是提高支持度和置信度的阈值。

3. 支持度、置信度的局限

  • 关于支持度举例:在图书市场中,文学类书籍的数量远大于物理类书籍,那么物理类书籍的规则支持度就会很低,这样就导致很多物理类书籍的关联规则都被过滤掉了。
  • 关于置信度举例:我们对1000个交易记录分析,假设这1000条记录只有四种行为:购买商品A,不购买商品A,购买商品B,不购买商品B。发现有500条购买记录包含商品A,包含商品A的500条记录又有300条记录包含商品B,那么我们通过置信度计算发现Confidence (商品A==商品B)=0.6这个的置信度非常高,我们于是可以推算出买商品A的人都喜欢买商品B。但是其实我们看接下来的调查,另外没有购买商品A的500条记录中,有400条购买了商品B。综上所述,我们可以发现,其实购买商品A和购买商品B是两个独立事件。所以我们可以概括一下,置信度的缺点,就是忽略了不在规则事件中的项集的支持度。

4. 提升度,Lift

还是以上面的1000个交易记录为例子,500个交易包含购买商品A,700个交易包含购买商品B,300个交易同时包含购买A、B商品。Support(AB)=0.3,且Confidence(A==>B)= 0.6。不管支持度和置信度看上去都很高。但是这样的关联规则是有问题的。

Confidence(A==>B)= 0.6表示用户在购买了商品A后有0.6的概率的去购买商品B,而在没有任何前提条件时,用户反而有(700/1000=0.7)的概率去购买商品B,也就是说在购买了商品A的条件反而会降低用户去购买商品B的概率。这样看来使用(A==>B)这条规则来进行推荐,还不如不推荐,随机对顾客推荐好了。为此引入另外一个提升度-Lift,以衡量此规则是否可用。

Lift的物理含义,直接参考:关联规则(apriori algorithm)(1) - zgw21cn - 博客园。我这里直接截图了:

也就是说这lift指标表示了一条关联规则是否有效,这里表示度量(A==>B)这条规则有效程度的值为1.32。满足最小支持度和最小置信度的规则,叫做“强关联规则”。然而,强关联规则里,也分有效的强关联规则和无效的强关联规则。

如果Lift(X→Y)>1,则规则“X→Y”是有效的强关联规则。

如果Lift(X→Y) <=1,则规则“X→Y”是无效的强关联规则。

特别地,如果Lift(X→Y) =1,则表示X与Y相互独立。

这里再推荐一篇博客(http://blog.csdn.net/rav009/article/details/8985322)的结论:

5. 参考

  1.  第六章:关联分析(1)
  2. https://www.cnblogs.com/zgw21cn/archive/2009/05/31/1492809.html
  3. https://blog.csdn.net/rav009/article/details/8985322
  4. mahout版本:使用mahout fpgrowth算法求关联规则 - ValiancyHe - 博客园
  5. java版本:FP-Tree算法的实现 - 张朝阳 - 博客园
  6. python版本:利用orange进行关联规则挖掘 - lxneng - ITeye博客
  7. spark版本:https://spark.apache.org/docs/latest/mllib-frequent-pattern-mining.html#fp-growth

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值