ML【2】:Apriori 算法

系列文章目录

频繁模式挖掘系列算法(一):
频繁模式挖掘系列算法(二):
频繁模式挖掘系列算法(三):



前言

频繁模式挖掘是一种数据挖掘技术,旨在发现数据集中出现频率较高的模式。这些模式可能是项目集中的频繁项集,或者是序列数据中的频繁子序列。常见的频繁模式挖掘算法包括 Apriori 算法、FP-growth 算法等。这些算法可以在大规模数据集中高效地发现频繁模式,并提供支持度、置信度等指标来评估模式的重要性和可靠性。

本文主要介绍了什么是频繁模式,和频繁模式常见的第一个算法 Apriori 算法。


1. 频繁模式

1.1. 定义

频繁模式

  • 指在一个数据集中频繁出现的模式(如一组项目、子序列、子结构等)
  • 数据集的一个内在的和重要的属性,是进行任何必要的数据分析任务的基础

动机

  • 寻找数据中的内在规律性

1.2. 评价指标

  • Basic Concepts
    • itemset: 一个或多个项目的集合
    • k-itemset X = { x 1 , ⋯   , x k } X = \{x_1, \cdots, x_k \} X={x1,,xk}
    • support
      • (absolute) support / support count:一个项目集 X X X 的频率或发生率
      • (relative) support:一次交易中包含 X X X 的概率
      • 一个项目集 X X X 是频繁的,如果 X X X 的支持度不低于一个 minsup(最小支持度)阈值
  • Association Rules
    • support - 支持度
      • 支持度就是几个关联的数据在数据集中出现的次数占总数据集的比重,或者说几个数据关联出现的概率
      • 一般来说,支持度高的数据不一定构成频繁项集,但是支持度太低的数据肯定不构成频繁项集
      • s u p p o r t ( X , Y ) = P ( X Y ) = n u m e r ( X Y ) n u m ( A l l _ S a m p l e ) support(X, Y) = P(XY) = \frac{numer(XY)}{num(All\_Sample)} support(X,Y)=P(XY)=num(All_Sample)numer(XY)
    • confidence - 置信度
      • 置信度体现了一个数据出现后,另一个数据出现的概率,或者说数据的条件概率
      • c o n f i d e n c e ( X → Y ) = P ( Y ∣ X ) = P ( X Y ) / P ( X ) confidence(X \rightarrow Y) = P(Y | X) = P(XY) / P(X) confidence(XY)=P(YX)=P(XY)/P(X)
    • 一般来说,要选择一个数据集合中的频繁数据集,则需要自定义评估标准。最常用的评估标准是用自定义的支持度,或者是自定义支持度和置信度的一个组合
  • Closed Patterns and Max-Patterns
    • Closed Patterns 是对频繁模式的压缩,可以减少模式和规则的数量
    • 项集 X X Xclosed-pattern 如果 X X X 是个频繁项集并且不存在和 X X X 拥有相同的支持度的 super-pattern Y ⊃ X Y \supset X YX
    • 项集 X X Xmax-pattern 如果 X X X 是个频繁项集并且不存在 super-pattern Y ⊃ X Y \supset X YX
    • 在这里插入图片描述

1.3. 向下封闭性

频繁模式挖掘算法的理论基础:频繁项目集的任何子集都必须是频繁的


2. Apriori 算法

2.1. 算法思想

  • Apriori 算法的目标是找到最大的 K 项频繁集:
    • 要找到符合支持度标准的频繁集,但是这样的频繁集可能有很多
    • 要找到最大个数的频繁集
    • 举例来说:如果我们找到符合支持度的频繁集 AB 和 ABE,那么我们会抛弃 AB,只保留 ABE,因为 AB 是 2 项频繁集,而 ABE 是 3 项频繁集
  • Apriori 的一个重要属性
    • 频繁项集的所有非空子集也必须是频繁的
  • Apriori 修剪原则
    • 如果有任何项目集是不频繁的,它的超集不应该被生成

2.2. 算法流程

  • 输入与输出
    • 输入:数据集合 D D D,支持度阈值 α \alpha α
    • 输出:最大的频繁 K K K 项集
  • 流程
    • 概述
      • Apriori算法采用了迭代的方法,先搜索出候选 1 1 1 项集及对应的支持度,剪枝去掉低于支持度的 1 1 1 项集,得到频繁 1 1 1 项集
      • 然后对剩下的频繁 1 1 1 项集进行连接,得到候选的频繁 2 2 2 项集,筛选去掉低于支持度的候选频繁 2 2 2 项集,得到真正的频繁 2 2 2 项集
      • 以此类推,迭代下去,直到无法找到频繁 k + 1 k+1 k+1 项集为止,对应的频繁 k k k 项集的集合即为算法的输出结果
    • 具体操作流程
      1. 扫描整个数据集,得到所有出现过的数据,作为候选频繁 1 1 1 项集, k = 1 k=1 k=1,频繁 0 0 0 项集为空集。
      2. 挖掘频繁 k k k 项集
        1. 扫描数据计算候选频繁k项集的支持度
        2. 去除候选频繁 k k k 项集中支持度低于阈值的数据集,得到频繁 k k k 项集
          1. 如果得到的频繁 k k k 项集为空,则直接返回频繁 k − 1 k-1 k1 项集的集合作为算法结果,算法结束
          2. 如果得到的频繁 k k k 项集只有一项,则直接返回频繁 k k k 项集的集合作为算法结果,算法结束
        3. 基于频繁 k k k 项集,连接生成候选频繁 k + 1 k+1 k+1 项集
      3. 令k=k+1,转入步骤2

从算法的步骤可以看出,Aprior 算法每轮迭代都要扫描数据集,因此在数据集很大,数据种类很多的时候,算法效率很低

2.3. 算法实现

  • Candidate-generation
    • self-joining L k L_k Lk
    • pruning
    • Example
      在这里插入图片描述

完整例子,min_sup = 2:
在这里插入图片描述

2.4. 算法伪代码

  • Input:
    • D, a database of transactions;
    • min_sup, the minimum support count threshold.
  • Output: L, frequent itemsets in D.
  • Method 1
    • 在这里插入图片描述
  • Method 2
    • 在这里插入图片描述

2.5. 算法存在的问题

  • 主要的计算挑战
    • 对交易数据库进行多次扫描
    • 候选人数量巨大
    • 对候选人进行支持性计数的繁琐工作量
  • 改进先验方法:一般想法
    • 减少交易数据库的扫描次数
    • 缩减候选人的数量
    • 便于对候选人的支持计数

总结

Aprior 算法是一个非常经典的频繁项集的挖掘算法,很多算法都是基于 Aprior 算法而产生的,包括 FP-TreeGSPCBA 等。这些算法利用了 Aprior 算法的思想,但是对算法做了改进,数据挖掘效率更好一些,因此现在一般很少直接用 Aprior 算法来挖掘数据了,但是理解 Aprior 算法是理解其它 Aprior 类算法的前提,同时算法本身也不复杂,因此值得好好研究一番

本文部分内容参考自:Apriori算法原理总结
本文部分内容参考自:BUPT 物联网信息处理技术——张海涛老师

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Apriori算法是一种常用于商品推荐系统的关联规则挖掘算法。该算法的主要目的是通过分析用户的购买数据,挖掘出商品之间的关联关系,从而实现商品的个性化推荐。 Apriori算法的基本原理是基于频繁项集的挖掘。频繁项集是指在数据集中经常同时出现的一组项的集合。通过统计数据集中每个商品的出现次数,并设定一个最小支持度阈值,可以挖掘出满足最小支持度的频繁项集。 Apriori算法的具体过程如下: 1. 首先,对每个商品进行计数,得到每个商品的出现次数。 2. 根据设定的最小支持度阈值,筛选掉出现次数低于阈值的商品。 3. 根据两两组合的方式,生成新的候选项集。 4. 统计新的候选项集的出现次数,并筛选满足最小支持度的频繁项集。 5. 重复步骤3和4,直到无法生成更多的频繁项集为止。 6. 根据频繁项集生成关联规则,并计算关联规则的置信度。 7. 根据设定的最小置信度阈值,筛选出满足置信度阈值的关联规则。 8. 根据用户的历史购买记录和满足置信度阈值的关联规则,进行商品推荐。 通过Apriori算法可以发现商品之间的关联关系,从而可以根据用户的购买数据进行个性化推荐。例如,当用户购买了某个商品A时,根据Apriori算法发现与商品A频繁共现的商品B,系统可以向用户推荐商品B。这样可以提高用户的购买意愿,提高销售额。同时,Apriori算法还可以帮助商家分析商品之间的关系,并根据关联规则进行市场营销策略的制定。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zzzyzh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值