Apriori算法

什么是项集?

一组项目一起称为项目集。如果任何项目集包含k个项目,则称为k个项目集。一个项目集包含两个或多个项目。频繁出现的项目集称为频繁项目集。因此,频繁项集挖掘是一种数据挖掘技术,用于识别经常一起出现的项。

例如,面包和黄油,笔记本电脑和防病毒软件等。

什么是频繁项集?

如果一组项目满足支持和置信度的最小阈值,则称为频繁。支持显示在单个交易中包含一起购买的物品的交易。置信度显示了一个接一个地购买物品的交易。

对于频繁的项目集挖掘方法,我们仅考虑那些满足最低阈值支持和置信度要求的交易。这些挖掘算法的见解提供了很多好处,削减了成本并提高了竞争优势。

挖掘数据和频繁挖掘的数据量需要权衡时间。频繁挖掘算法是一种有效的算法,可以在短时间内以较少的内存挖掘项目集的隐藏模式。

频繁模式挖掘(FPM)

频繁模式挖掘算法是发现数据集中不同项目之间关系的最重要的数据挖掘技术之一。这些关系以关联规则的形式表示。它有助于发现数据中的不规则性。

FPM在数据分析,软件错误,交叉营销,促销活动分析,市场分析等领域中具有许多应用程序。

通过Apriori发现的频繁项集在数据挖掘任务中有许多应用。其中最重要的任务是在数据库中查找有趣的模式,找出序列和挖掘关联规则。

关联规则适用于超级市场交易数据,即根据购买的产品检查客户行为。关联规则描述了一起购买物品的频率。

关联规则

关联规则挖掘的定义为:

“让 I= {…} 是一组称为项的n个二进制属性。令D = {…}为称为数据库的事务集。 D中的每个事务都有唯一的事务ID,并且包含I中项的子集。规则定义为X-> Y形式的含义,其中X,Y?我和X?Y =?。项目X和Y的集合分别称为规则的前因和结果。”

学习关联规则用于查找大型数据库中属性之间的关系。关联规则A => B的形式为“对于一组交易,项目集A的某些值确定了满足最小支持和置信度的条件下项目集B的值”

支持和置信可以通过以下示例表示:

面包=>黄油[支持率= 2%,置信度-60%]

上面的陈述是关联规则的示例。 这意味着有2%的交易是一起购买面包和黄油,并且有60%的客户购买了面包和黄油。

项目集A和B的支持度和置信度由以下公式表示:

在这里插入图片描述
关联规则挖掘包括2个步骤:

查找所有频繁项集。
从上述频繁项目集生成关联规则。

为什么频繁进行项集挖掘?

由于频繁项集或模式挖掘在基于频繁模式,顺序模式和许多其他数据挖掘任务的挖掘关联规则,相关性和图模式约束方面的广泛应用,因此被广泛使用。

Apriori算法–频繁模式算法

Apriori算法是针对频繁项集挖掘而提出的第一个算法。 后来由R Agarwal和R Srikant进行了改进,后来被称为Apriori。 该算法使用“加入”和“修剪”两个步骤来减少搜索空间。 这是一种发现最频繁项目集的迭代方法。

Apriori 表示:

项目I不频繁出现的可能性是:

P(I)<最小支持阈值,则I不频繁。
P(I + A)<最小支持阈值,则I + A不频繁,其中A也属于项目集。

如果一个项目集的值小于最小支持,则其所有超集也将低于最小支持,因此可以忽略。 此属性称为“反单调”属性。

数据挖掘的Apriori算法遵循的步骤是:

连接步骤:此步骤通过将每个项目与其自身连接,从K个项目集生成(K + 1)个项目集。

修剪步骤:此步骤扫描数据库中每个项目的计数。 如果候选项目未达到最低支持要求,则认为该项目不常见,因此将其删除。 执行该步骤以减小候选项目集的大小。

文字描述的步骤为:

Apriori算法是在给定数据库中查找最频繁项目集所要遵循的一系列步骤。此数据挖掘技术反复执行联接和修剪步骤,直到获得最频繁的项集为止。在问题中给出了最小支持阈值,或者由用户假定了最小支持阈值。

#1)在算法的第一次迭代中,每个项目都被视为1个项目集的候选对象。该算法将计算每个项目的出现次数。

#2)让最小支持量min_sup(例如2)。确定出现次数满足min sup的1个项目集的集合。只有计数大于或等于min_sup的那些候选者才被带到下一次迭代,而其他的则被删减。

#3)接下来,发现带有min_sup的2项频繁项。为此,在连接步骤中,通过将项与自身组合形成2个一组来生成2个项集。

#4)使用min-sup阈值修剪2个候选项集。现在,该表将具有2个仅带有min-sup的项目集。

#5)下一个迭代将使用连接和修剪步骤形成3个项目集。此迭代将遵循反单调属性,其中3个项目集的子集(即每个组的2个项目集的子集)属于min_sup。如果所有2-itemset子集都很频繁,则超集将很频繁,否则将被修剪。

#6)下一步将通过将3-itemset与自身连接在一起来制作4-itemset,如果其子集不符合min_sup标准,则对其进行修剪。当获得最频繁的项目集时,算法将停止。

例子步骤:

在这里插入图片描述

支持阈值= 50%=> 0.5 * 6 = 3 => min_sup = 3

在这里插入图片描述
修剪步骤:表-2显示I5项目不符合min_sup = 3,因此将其删除,只有I1,I2,I3,I4符合min_sup计数。
在这里插入图片描述
表格2项集。 从表1中找出2-itemset的出现。
在这里插入图片描述
表-4显示项目集{I1,I4}和{I3,I4}不符合min_sup,因此将其删除。
在这里插入图片描述
加入并修剪步骤:形成3-项集。 从表1中找出3个项目集的出现。 从表5中找出支持min_sup的2个项目集子集。

我们可以看到,对于项集{I1,I2,I3}的子集,{I1,I2},{I1,I3},{I2,I3}出现在表5中,因此{I1,I2,I3}很常见。

我们可以看到对于项目集{I1,I2,I4}的子集,{I1,I2},{I1,I4},{I2,I4},{I1,I4}并不频繁,因为它不在表5中发生 因此{I1,I2,I4}并不频繁,因此将其删除。
在这里插入图片描述
仅{I1,I2,I3}很频繁。

6.生成关联规则:从上面发现的频繁项目集中,关联可以是:

{I1,I2} => {I3}

置信度=支持{I1,I2,I3} /支持{I1,I2} =(3/4)* 100 = 75%

{I1,I3} => {I2}

置信度=支持{I1,I2,I3} /支持{I1,I3} =(3/3)* 100 = 100%

{I2,I3} => {I1}

置信度=支持{I1,I2,I3} /支持{I2,I3} =(3/4)* 100 = 75%

{I1} => {I2,I3}

置信度=支持{I1,I2,I3} /支持{I1} =(3/4)* 100 = 75%

{I2} => {I1,I3}

置信度=支持{I1,I2,I3} /支持{I2 =(3/5)* 100 = 60%

{I3} => {I1,I2}

置信度=支持{I1,I2,I3} /支持{I3} =(3/4)* 100 = 75%

这表明,如果最小置信度阈值为60%,则所有上述关联规则均很强。

优点

易于理解的算法
联接和修剪步骤易于在大型数据库中的大型项目集上实施

缺点

如果项目集很大并且最小支持率保持得很低,则需要高计算量。
整个数据库都需要扫描。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值