Apriori 算法是一种用于关联规则学习的无监督机器学习算法。关联规则学习是一种数据挖掘技术,可识别数据中被称为项目集的不同项组之间的频繁模式、联系和依赖关系。一些常见的用例是疾病预测和推荐系统,例如电子商务平台的市场篮子分析。
“Apriori”由 Rakesh Agrawal 和 Ramakrishnan Srikant 于 1994 年提出(ibm.com 外部链接),该算法源于它在计算中使用的频繁项集的先验知识。该算法通过对数据进行多次迭代以识别 k 个项集,即经常一起出现的 k 个项。然后,使用这些 k 项集来标识 k+1 项集。Apriori 算法依赖于这样一种洞察见解,即向频繁购买的项集添加项只会降低其频率,而不是增加频率。该过程依赖于 Apriori 属性,即如果某项集在数据集中频繁出现,则其所有子集也必须频繁出现。相反,如果某个项集被标识为不频繁,则其所有超集都被视为不频繁。
Apriori 算法适用于各种类型的数据集,尤其是由事务型数据库生成的数据集,通常用于市场篮子分析,以支持推荐系统。例如,当使用销售服装和鞋子的电子商务平台时,购物者搜索鞋子,并决定将一双黑色正装鞋添加到购物车。然后,购物者注意到界面推荐了其他要购买的商品,比如袜子。此推荐系统的工作方式之一是通过了解客户的购买模式,并将可能一起被购买的物品关联起来。
使用 Apriori 算法的最大优势之一在于其简单性和适应性。然而,Apriori 算法在处理大型数据集时效率并不高。由于候选项集生成的多次迭代过程可能会使计算成本变得非常高且占用大量内存。为了缓解这些问题,Apriori 通常与其他技术相结合。
Apriori 函数已集成到许多流行的编程语言中,包括 Python、Java 和 R,使得生成高质量的关联规则和频繁项集能够轻松集成到现有的应用程序或系统中。
Apriori 算法中的每个关键步骤都旨在识别项集及其所有可能的超集,寻找最常见的项集以创建关联规则。
该算法首先识别数据集中的唯一项(有时称为 1 项集)并计算其频率。然后,将那些出现概率超过指定阈值的项组合成候选项集,并筛选出不常见的项集,以降低后续步骤中的计算成本。此过程称为频繁项集挖掘,即仅查找具有有意义频率的项集。
该算法利用 Apriori 特性,进一步组合频繁项集,形成更大的项集。针对概率较低的大项集的组合会进行修剪。这样可以进一步减少了搜索空间,并提高了计算效率。
该算法重复步骤 1 和 2,直至完成生成所有符合定义阈值概率的频繁项集。每次迭代都会生成更复杂、更全面的项集关联。
Apriori 算法创建项集后,可以进一步分析其关联规则的强度和关系。
Apriori 算法通过使用支持度、置信度和提升度等指标来定义其操作准则,并提高性能效率。
支持度被定义为某个商品在交易中出现的次数与交易总数的比值。因此,该指标定义了每个商品在交易中出现的概率。相同的逻辑也可以扩展到项集。
其中,IA 代表商品 A,Occ(IA) 表示商品 A 出现的次数,而 S(IA) 表示商品 A 的支持度
例如,在一家零售店,一天内的 2000 笔交易中,有 250 笔交易可能包含苹果的购买。使用公式:
这一结果意味着当天购买苹果的概率为 12.5%。
您可以在应用 Apriori 算法时指定所需的最低支持度阈值。这意味着,任何支持度低于该阈值的项或项集都将被视为不频繁项集。
置信度指标用于标识项或项集中同时出现在项集中的概率。例如,如果一笔交易中有两个商品,假设一个商品的存在会导致另一个商品的出现。第一个项或项集称为前件,第二个项或项集为后件。因此,置信度被定义为同时具有前件和后件的交易次数与仅包含前件的交易次数的比值。该场景表示为:
其中,A 是前件,B 是后件,并且 C(A,B) 表示前件 A 导致后件 B 的置信度。
扩展前面的示例,假设有 150 笔交易同时购买了苹果和香蕉。置信度的计算公式为:
这一结果表明,购买苹果后导致购买香蕉的概率为 60%。同样,假设总共有 500 笔香蕉交易,则购买香蕉导致购买苹果的置信度的计算公式为:
在这里,购买香蕉导致购买苹果的概率仅为 30%。
虽然置信度是衡量可能性的重要指标,但它并不能保证项之间存在明确的关联。高置信度可能基于其他原因。因此,在使用关联规则进行挖掘时,通常会设定一个最低置信度阈值,以筛选低概率的关联。
提升度是项 A 导致项 B 的可能性高于项 A 的可能性的因子。这一指标量化了 A 和 B 之间的关联强度。提升度可以帮助指示项集中的项之间是否存在真实关系,或者它们是否只是巧合而组合在一起。
其中,LA,B表示项 A 导致项B 的提升度,CA,B 表示项 A 导致项 B 的置信度,SA 表示项 A 的支持度。
基于上面的示例,我们可以看到:
较高的提升度表明,苹果和香蕉一起购买的概率比单独购买苹果的概率高4.8倍。此外,还可以看到:
较低的提升度表明,购买香蕉导致购买苹果的情况可能只是巧合。
在许多情况下,应用暴力计算方法(ibm.com 外部链接)来计算每个规则的支持度和置信度阈值,然后对不符合阈值的规则进行修剪,在计算上代价可能会导致无法承受。为了提高 Apriori 算法的应用效率,通常会将其与其他关联规则挖掘技术相结合。其中最常见的两种算法是 FP-growth 算法(ibm.com 外部链接)及其变体 FP-Max,用于减少内存和计算限制。Apriori 算法还可以与 Decision Trees 相结合,其中 Apriori 算法用于识别频繁项集,而 Decision Trees 技术则有助于识别关联规则。
Apriori 算法的另一种流行变体是动态项集计数 (DIC)(ibm.com 外部链接),该算法可提前开始计数潜在项集,而无需等待所有交易记录完成。DIC 将数据集划分为更小的片段,并分别处理每个片段。这种分段处理使算法能够在无法识别任何频繁的项集时提前停止,同时数据划分也显著降低了计算成本。
Apriori 算法也可用于基于无监督学习的人工智能应用程序,例如在数据支持时的聚类算法 。它可以帮助识别看似独立实体之间的关系和关联,并将其分组成可能的聚类。
发现和分组项集有着广泛的应用,Apriori 算法因其多功能性,常被称为数据挖掘者首选的算法。接下来,我们将探讨该算法在不同行业中的一些常见用例。
Apriori 算法最常见的应用之一是执行市场购物篮分析。零售商通过分析客户购买历史,优化店铺布局,将经常一起购买的商品放在彼此附近或同一货架上。电子商务平台使用 Apriori 算法研究基于用户偏好的商品关系,并通过挖掘购买模式,创建高效的客户推荐系统。此外,这类分析还可用于优化服务采购,例如从课程目录中选择培训课程,或在选择保险时推荐其他类型的保险。
Apriori 算法可用于发现症状与疾病之间的强关联规则,从而提高诊断效率并制定有针对性的治疗计划。例如,它可以帮助预测哪些患者 可能患有糖尿病(ibm.com 外部链接),或研究 饮食或生活方式对疾病的影响(ibm.com 外部链接)。此外,它还可以帮助确定与药物不良反应相关的因素。
Apriori 算法同样适用于非交易型性数据库。数据分析师经常使用 Apriori 算法进行 Web 使用情况挖掘、分析点击流数据以及解读用户行为。
Apriori 算法的另一个常见应用是识别金融交易中的欺诈模式。通过识别特定购买模式可能存在欺诈行为,金融机构能够迅速采取行动,暂停交易或联系账户持有人。
我们对 2,000 家组织进行了调查,旨在了解他们的 AI 计划,以发现哪些方法有效、哪些方法无效,以及如何才能取得领先。
IBM Granite 是我们开放式、性能优异、值得信赖的 AI 模型系列,专门为企业量身定制,并经过优化,可以帮助您扩展 AI 应用程序。深入了解语言、代码、时间序列和护栏选项。
立即购买单用户或多用户订阅,即可访问我们完整的包含 100 多个在线课程的目录,以低廉的价格扩展您的技能。
本课程由 IBM 资深思想领袖带领,旨在帮助企业领导者获得所需的知识,以便划分可以推动增长的 AI 投资的优先级。
想要从 AI 投资中获得更好的回报吗?了解如何通过帮助您最优秀的人才构建和提供创新的新解决方案,在关键领域扩展生成式人工智能来推动变革。
了解如何自信地将生成式 AI 和机器学习融入您的业务中。
深入了解强大 AI 战略的 3 个关键要素:创造竞争优势、在整个企业中扩展 AI 以及推进值得信赖的 AI。