学习笔记之数据挖掘 Apriori 算法
关联规则
设 A 是一个由项目构成的集合,称为项集。如果项集 A 中包含 k 个项目,则称其为 k 项集。项集 A 在事务数据库 D 中出现的次数占 D 中总事务的百分比叫做项集的支持度。如果项集的支持度超过用户给定的最小支持度阈值,就称该项集是频繁项集(或频集)。
关联规则的信任度为
关规则挖掘算法
- Agrawal 等人提出的 AIS, Apriori 和 AprioriTid
- Cumulate 和 Stratify, Houstsma 等人提出的 SETM
- Park 等人提出的 DHP
- Savasere 等人的 PARTITION
- Han 等人提出的不生成候选集直接生成频繁模式 FPGrowth
- 其中最有效和有影响的算法为 Apriori, DHP, PARTITION 和 FPGrowth
步骤
通过迭代,检索出事务数据库中的所有频繁项集,即支持度不低于用户设定的阈值的项集;利用频繁项集构造出满足用户最小信任度的规则;挖掘或识别出所有频繁项集是该算法的核心,占整个计算量的大部分。
- 连接步:为找 通过将 与自身连接产生候选 k 项集的集合。 表示 k 项集。
- 剪枝步: 是 的超集,也就是说, 的成员可以是,也可以不是频繁的,但所有的频繁 k 项集都包含在 中。任何非频繁的 (k-1) 项集都不是频繁 k 项集的子集。
例子
其他例子: https://blog.csdn.net/v_july_v/article/details/6279498
性质
-
频繁项集的所有非空子集必为频繁项集;
{a, b, c, d} 出现的频次很高,那么,{a}, {a, b} 出现的频次也一定高。
-
非频繁项集的超集一定是非频繁的。
如果 {a, b, c} 出现 10 次,则 {a, b, c, d} 出现的频次一定是小于等于 10 的。
不足
- 的项集是用来产生频繁集的候选集。
- 最后的频繁集 必须是 的一个子集。 中的每个元素在交易数据库中进行验证来决定其是否加入 。
- 验证过程是性能瓶颈。
交易数据库可能非常大;比如频繁集最多包含 10 个项,那么就需要扫描交易数据库 10 遍,需要很大的 I/O 负载。