基础篇 | 06 Apriori 算法

Apriori算法主要用于找出频繁项集和分析项集内部的关联规则。支持度是衡量项集出现概率的指标,计算频繁项集时,Apriori算法通过逐层组合和设定阈值提高效率。置信度则表示A出现时B出现的概率,用于发现项集间的因果关系。算法实现包括支持度的计算,并可通过调整阈值限制计算层数,以适应大规模数据的处理需求。
摘要由CSDN通过智能技术生成

Apriori 算法的作用

Apriori 算法的核心思想是计算频繁项集出现的概率(即支持度)和频繁项集内部的关联规则(即置信度)。

支持度

什么是支持度

 support
如图:如果订单总数为N,包含某个组合的订单为M,那么M组合出现的支持度(概率)为M/N.。

Note
我们这里认为样本数据和我们现实世界的真实情况是同分布的。

如何计算支持度

在数学上我们如何找出某一项集的出现概率呢?
我们先列出所有的一项集,然后计算每一项集在在总数据中出现的概率,再计算它们所有的组合产生的概率,如果数据有成千上万,这个计算量是非常大的,这种情况下,在数学上合理的逻辑在计算机上并不可行,那么Apriori算法的思路是什么呢。
 Apriori logic

支持度的核心思想
如果AB的组合频繁出现,是频繁项集,那么子集A、B必然频繁出现;
反过来,如果A、B中有一项不是频繁项集,那么AB集合必然不是频繁项集。

我们利用概率论的思想来解决这个问题,根据Apriori算法的思路:如果AB组合频繁出现,那么A、B自身必然频繁出现,反过来,如果A、B不是频繁出现的,那AB组合也就不是频繁出现的。所以说Apriori算法提出逐层组合计算思路。
首先列出所以的一项集,计算每一项的支持度,剔除支持度过低的数据项,如图,也就是后两项,然后将前四项组成二项集,再计算每一个种组合的支持度,剔除支持度低的项集,支持度的滤值可以根据实际情况自行设定。然后再组合成三项集、四项集,依次类推,直到n项集为空为止,也就是某个维度的频繁项集不存在,为空集。
那我需要推到什么时候呢,数据量这么大,这就提到了一个概念,阈值threshold,对这个推荐算法来说,我是不是推到四五层就足够了,我迭代到15层,这有15层的组合是不是就足够满足我的需求了呢。我设定这样一个阈值。或这说我支持度达到一个什么程度,我也可以设置一个阈值。概率达到什么程度的阈值。满足这个条件的时候我自然而然的停止,而不是一直计算到为空集为止。这样就能大大提高算法的执行效率也能满足我们的需求。这个和传统咱们计算出所有排列组合的情况是完全不一样的。
这样最后得到的结果项集里面的所有所有可能组合就是频繁项集,这样的项集可能有多个。
比如我们得到最终的频繁项集结果:
[‘I1, I2, I3’, ‘I1, I2, I5’]
比如对于:I1,I2,I3 这个频繁集,我们可以得到它的子集:{I1}, {I2}, {I3}, {I1, I2}, {I1,I3}, {I2,I3}。

那么,如何得到项集内部的规则,也就是关联关系呢。这就涉及另一个概念:置信度。

置信度

释义:A出现的时候,B出现的概率。

这里面还有一个问题是,A和B的关联关系,比如,买C++ Primer Plus,可能会买 C Primer Plus,因为他要研究一下底层的东西,可是买C Primer Plus的人不会买 C++ Primer Plus,他做底层开发,只看底层就够了,也可能我们需要向他汇编一类的书籍。所以,A、B存在因果关系,A是B出现的原因,B却不是A出现的原因,对于这这关系的计算称之为置信度,置信度是找出组合内部的关联关系,支持度是找出在一起出现的频繁项集。这种项集内部的因果关系我们称之为关联规则。

如果A是B出现的原因,我们判断支持度强弱的方法是用A和B并集{support(A|B)的并集指的是A集合和B集合的出现的概}的支持度除以A的支持度。这样我们就可以推断A出现的情况下,B出现的概率。

如果A出现的时候B经常出现,那么A导致B的概率就非常高。如图
confidence
A导致B出现称为置信度。

举个例子
support define
我们有ABCD组合,可以拆成下面为四种组合,我们依次从右边拿出一个放到左边,这样每种组合又能派生出三种组合, 这种情况下,依次类推,直到左边有三项右边有一项为止,这样我们就可以生成所有合理的关联规则组合,在这个基础上,我们再计算所有关联规则的置信度confidence,剔除置信度小于某个阈值threshold的关联规则,这就是关联分析。

所以Apriori算法是找出频繁项集和分析组合内部的因果关系(关联分析)的算法。最后,我们会设定一个阈值,不可能计算到空集位置,这种情况太少见了,推到10 - 15个的项集组合的时候可能就足够了,这种情况下可能会限定一个threshold,避免很多无意义的计算,实际项目当中可能有几百万的项目,以现在的计算能力计算出所有的组合是不可能的吗,所有希望用足够少的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值