Apriori 算法

2025年03月17日 | 阅读 9 分钟
Apriori Algorithm

Apriori算法是指用于计算对象之间关联规则的算法。它表示两个或更多对象之间是如何相互关联的。换句话说,我们可以说Apriori算法是一种关联规则学习,它分析购买产品A的顾客也购买了产品B。

Apriori算法的主要目标是创建不同对象之间的关联规则。关联规则描述了两个或更多对象之间是如何相互关联的。Apriori算法也称为频繁模式挖掘。通常,您在包含大量事务的数据库上运行Apriori算法。让我们通过一个例子来理解Apriori算法;假设您去大卖场购买不同的产品。它帮助顾客轻松购买产品,并提高大卖场的销售业绩。在本教程中,我们将通过示例讨论Apriori算法。

引言

我们举一个例子来更好地理解这个概念。您一定注意到披萨店老板将披萨、软饮料和面包棒搭配在一起销售。他还为购买这些套餐的顾客提供折扣。您有没有想过他为什么这样做?他认为购买披萨的顾客也会购买软饮料和面包棒。然而,通过制作套餐,他方便了顾客。同时,他也提高了自己的销售业绩。

同样,您去大卖场,会发现饼干、薯片和巧克力捆绑在一起销售。这表明店主方便顾客在同一地点购买这些产品。

以上两个例子是数据挖掘中关联规则的最佳例子。它帮助我们学习Apriori算法的概念。

什么是Apriori算法?

Apriori算法是指用于挖掘频繁产品集和相关关联规则的算法。通常,Apriori算法在包含大量事务的数据库上运行。例如,顾客在大卖场购买的商品。

Apriori算法帮助顾客轻松购买产品,并提高特定商店的销售业绩。

Apriori算法的组成部分

以下三个组成部分构成了Apriori算法。

  1. 支持
  2. 信心
  3. 升降机

让我们举一个例子来理解这个概念。

我们前面已经讨论过;您需要一个包含大量事务的庞大数据库。假设您在大卖场有4000笔顾客交易。您需要计算两种产品(例如饼干和巧克力)的支持度、置信度和提升度。这是因为顾客经常同时购买这两种商品。

在4000笔交易中,400笔包含饼干,而600笔包含巧克力,这600笔交易中有200笔同时包含饼干和巧克力。利用这些数据,我们将计算支持度、置信度和提升度。

支持

支持度是指任何产品的默认普及程度。您可以通过将包含该产品的交易数量除以总交易数量来找到支持度。因此,我们得到:

支持度(饼干)=(包含饼干的交易数量)/(总交易数量)

= 400/4000 = 10%。

信心

置信度是指顾客同时购买饼干和巧克力的可能性。因此,您需要将同时包含饼干和巧克力的交易数量除以包含饼干的总交易数量来获得置信度。

故,

置信度 =(同时包含饼干和巧克力的交易数量)/(包含饼干的总交易数量)

= 200/400

= 50%。

这意味着50%购买饼干的顾客也购买了巧克力。

升降机

考虑上面的例子;提升度是指当您销售饼干时,巧克力销售额的增长比率。提升度的数学公式如下。

提升度 =(置信度(饼干 → 巧克力))/(支持度(饼干))

= 50/10 = 5

这意味着人们同时购买饼干和巧克力的可能性是单独购买饼干的五倍。如果提升度值低于1,则表示人们不太可能同时购买这两种商品。值越大,组合越好。

Apriori算法的历史

Apriori算法由Rakesh Agrawal和Ramakrishnan Srikant于1994年提出。该算法用于在数据集中查找频繁项集。算法的名称为“Apriori”,因为它承认在计算中使用了频繁项集的先验知识。Apriori算法有助于识别k-项集。K-项集是指k个同时频繁出现的项。然后该算法使用k-项集来识别k+1项集。此过程依赖于Apriori属性,该属性定义了如果一个项集在数据集中频繁出现。

Apriori算法的应用

Apriori算法在各个领域都做出了非常重要的贡献。近年来,该算法占据了举足轻重的位置。Apriori算法被用于不同行业的数据挖掘和数据处理。下面讨论Apriori算法有用的领域。

1. 移动电子商务

大数据能够通过Apriori算法帮助移动电子商务公司提供便捷、简单、个性化的购物体验。公司的产品推荐准确性提高,带来了卓越的客户体验。因此,客户参与度和公司的销售额都增加了。

2. 教育

研究人员和学生使用该算法来存储和分析他们的数据。教育机构存储和监控学生数据,如年龄、性别、特征、成绩、表现、家长详细信息等。

3. 林业

如今,关注林业和野生动物非常重要。Apriori算法被用于存储、分析和管理特定地区每种动植物的细微细节。

4. 医疗

为了治疗现有患者,医生需要检索大量与患者相关的历史数据。在这种情况下,医院通常使用Apriori算法来管理患者数据库,而不会将其与其他患者混淆。

5. 市场篮子分析

零售商可以通过监控顾客频繁一起购买的产品组合来分析顾客的购买模式。这些信息有助于推荐这些产品,以增加销售额。Apriori算法也在此处使用。

6. 改进网站设计和排名

使用Apriori算法,我们可以分析用户在网站上的导航模式。获取这些信息,我们可以改进网站设计和用户体验。

7. 旅游

Apriori算法分析游客的预订模式。该算法在旅游业中具有非常重要的作用。

Apriori算法在数据挖掘中如何工作?

我们将通过一个例子来理解这个算法

考虑一个大卖场场景,其中产品集P = {大米,豆类,油,牛奶,苹果}。数据库包含六个事务,其中1表示产品存在,0表示产品不存在。

交易 ID大米豆类油 牛奶Apple
t111100
t201110
t300011
t411010
t511101
t611111

Apriori算法做出以下假设

  • 频繁项集的所有子集都必须是频繁的。
  • 非频繁项集的子集必须是非频繁的。
  • 设定一个阈值支持度水平。在本例中,我们将其设定为50%。

步骤 1

制作所有交易中出现的所有产品的频率表。现在,缩短频率表,只添加支持度阈值超过50%的产品。我们得到以下频率表。

产品频率(交易数量)
大米 (R)4
豆类(P)5
油(O)4
牛奶(M)4

上表显示了顾客经常购买的产品。

步骤 2

创建产品对,如RP、RO、RM、PO、PM、OM。您将得到以下频率表。

项集频率(交易数量)
RP4
RO3
RM2
PO4
PM3
OM2

步骤 3

实施相同的50%阈值支持度,并考虑超过50%的产品。在我们的例子中,它超过了3

因此,我们得到RP、RO、PO和PM

步骤 4

现在,寻找顾客同时购买的三种产品。我们得到以下组合。

  1. RP和RO给出RPO
  2. PO和PM给出POM

步骤 5

计算两个项集的频率,您将得到以下频率表。

项集频率(交易数量)
RPO4
POM3

如果您实施阈值假设,您可以发现顾客的三种产品集是RPO。

我们考虑了一个简单的例子来讨论数据挖掘中的Apriori算法。实际上,您会发现成千上万种这样的组合。

如何提高Apriori算法的效率?

有多种方法可以提高Apriori算法的效率

基于哈希的项集计数

在基于哈希的项集计数中,您需要排除其等效哈希桶计数小于阈值的k-项集作为非频繁项集。

事务削减

在事务削减中,不包含任何频繁X项集的事务在后续扫描中变得不重要。

数据挖掘中的Apriori算法

我们已经讨论了一个Apriori算法的例子,该例子与频繁项集生成相关。Apriori算法在数据挖掘中有许多应用。

在数据挖掘中查找关联规则的主要要求如下。

使用暴力法

分析所有规则,并找到各个规则的支持度和置信度水平。然后,消除低于阈值支持度和置信度水平的值。

两步法

两步法是寻找关联规则的更好选择,而不是暴力法。

步骤 1

在本文中,我们已经讨论了如何创建频率表并计算具有大于阈值支持度的项集。

步骤 2

要创建关联规则,您需要使用频繁项集的二分法。您需要选择具有最高置信度水平的那些。

在上面的例子中,您可以看到RPO组合是频繁项集。现在,我们使用RPO找出所有规则。

RP-O、RO-P、PO-R、O-RP、P-RO、R-PO

您可以看到有六种不同的组合。因此,如果您有n个元素,将有2n - 2个候选关联规则。

使用Apriori算法的优点

1. Apriori算法的高可扩展性

Apriori算法可以无故障地处理大量数据,这使其具有高度可扩展性。因此,它适用于各种行业。

2. 扩展的可用性

对于多种用例,我们需要扩展,而Apriori算法中扩展的可用性使其效率更高。

3. 直接明了

Apriori算法非常直接明了,相对容易实现。

4. 处理未标记数据

Apriori算法可用于处理未标记数据。

Apriori算法的缺点

  • Apriori算法是一种昂贵的查找支持度的方法,因为计算必须遍历整个数据库。
  • 有时,您需要大量的候选规则,因此它在计算上变得更加昂贵。

Apriori算法的MCQ(多项选择题)

1. Apriori算法的组成部分是/否?

  1. 支持
  2. 信心
  3. 升降机
  4. 以上全部。

答:d. 以上所有

解释:Apriori算法由三个组成部分构成。这些组成部分是——支持度、置信度和提升度。


2. Apriori算法是哪一年提出的?

  1. 1995
  2. 1998
  3. 1994
  4. 1997

答:c. 1994

解释:Apriori算法首次于1994年提出。


3. 谁提出了Apriori算法?

  1. Rakesh Agrawal
  2. Ramakrishnan Srikant
  3. a 和 b 都是
  4. 以上都不是

答:c. a和b都对

解释:1994年,Rakesh Agrawal和Ramakrishnan Srikant提出了Apriori算法。


4. 我们如何提高Apriori算法的效率?

  1. 使用基于哈希的项集计数方法
  2. 使用事务削减方法
  3. a 和 b 都是
  4. 以上都不是

答:c. a和b都对

解释:有多种方法可以提高Apriori算法的效率。但两种流行的方法是基于哈希的项集计数和事务削减。


5. Apriori算法的缺点是什么?

  1. 它很昂贵
  2. 它具有计算复杂性
  3. 需要更高的内存
  4. 以上全部。

答:d. 以上所有

解释:以上所有三个选项都是Apriori算法的缺点,并在使用时会产生问题。


6. Apriori算法的一个流行变体是DIC。DIC代表什么?

  1. 动态项集计数(Dynamic Itemset counting)
  2. 数据集成代码(Data integration Code)
  3. 数据集成计数(Data integration Counting)
  4. 以上都不是

答:a. 动态项集计数。

解释:流行变体DIC代表动态项集计数。