数据挖掘 Apriori 算法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/myonelotus/article/details/80323224

学习笔记之数据挖掘 Apriori 算法

关联规则

设 A 是一个由项目构成的集合,称为项集。如果项集 A 中包含 k 个项目,则称其为 k 项集。项集 A 在事务数据库 D 中出现的次数占 D 中总事务的百分比叫做项集的支持度。如果项集的支持度超过用户给定的最小支持度阈值,就称该项集是频繁项集(或频集)。
关联规则的信任度为 Support(XY)/support(X)

(5)support(XY)=P(XY)(6)confidence(XY)=P(Y|X)

关规则挖掘算法

  • Agrawal 等人提出的 AIS, Apriori 和 AprioriTid
  • Cumulate 和 Stratify, Houstsma 等人提出的 SETM
  • Park 等人提出的 DHP
  • Savasere 等人的 PARTITION
  • Han 等人提出的不生成候选集直接生成频繁模式 FPGrowth
  • 其中最有效和有影响的算法为 Apriori, DHP, PARTITION 和 FPGrowth

步骤

通过迭代,检索出事务数据库中的所有频繁项集,即支持度不低于用户设定的阈值的项集;利用频繁项集构造出满足用户最小信任度的规则;挖掘或识别出所有频繁项集是该算法的核心,占整个计算量的大部分。

  1. 连接步:为找 Lk 通过将 Lk1自身连接产生候选 k 项集的集合。Lk 表示 k 项集。
  2. 剪枝步:CkLk 的超集,也就是说,Ck 的成员可以是,也可以不是频繁的,但所有的频繁 k 项集都包含在 Ck 中。任何非频繁的 (k-1) 项集都不是频繁 k 项集的子集。

例子

这里写图片描述
这里写图片描述
这里写图片描述

其他例子: https://blog.csdn.net/v_july_v/article/details/6279498

性质

  1. 频繁项集的所有非空子集必为频繁项集;

    {a, b, c, d} 出现的频次很高,那么,{a}, {a, b} 出现的频次也一定高。

  2. 非频繁项集的超集一定是非频繁的。

    如果 {a, b, c} 出现 10 次,则 {a, b, c, d} 出现的频次一定是小于等于 10 的。

不足


  1. Ck 的项集是用来产生频繁集的候选集。
  2. 最后的频繁集 Lk 必须是 Ck 的一个子集。Ck 中的每个元素在交易数据库中进行验证来决定其是否加入 Lk
  3. 验证过程是性能瓶颈。

交易数据库可能非常大;比如频繁集最多包含 10 个项,那么就需要扫描交易数据库 10 遍,需要很大的 I/O 负载。

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页