Apriori算法

相关问题——啤酒与尿布

TID Items
1 Bread, Milk
2 Bread, Diaper, Beer, Eggs
3 Milk, Diaper, Beer, Coke
4 Bread, Milk, Diaper, Beer
5 Bread, Milk, Diaper, Coke

关联规则是形如X{\rightarrow}Y的蕴含表达式,其中X和Y是不想交的项集。关联规则的强度可以用它的支持度(support)和置信度(confidence)来度量。支持度确定规则可以数据集的频繁程度,置信度确定Y在包含X的交易中出现的频繁程度。
支持度形式定义:s(X{\rightarrow}Y)=\frac{{\sigma}(X{\cup}Y)}{N}
置信度形式定义:c(X{\rightarrow}Y)=\frac{{\sigma}(X{\cup}Y)}{{\sigma}(X)}
关联规则挖掘的目标:已知所有交易的集合T和购物篮数据所有项集合I,找到所有满足以下条件的规则

  • support {\ge} minsupthreshold
  • confidence {\ge} minconf threshold

关联规则挖掘任务分解为如下两个主要任务:

  1. 频繁项集的产生,目标是发现满足最小支持度阈值的所有项集,称作频繁项集。
  2. 规则的产生,目标是从上一步发现的频繁项集中提取所有高置信度的规则,称作强规则。

最简单的方法是通过暴力搜索,枚举所有可能项集。I={\{a, b, c, d, e\}}

Apriori.png

但是其计算量过大,并不现实,为了降低产生频繁项集的计算复杂度,利用支持度对候选项集剪枝。

Apriori定律1:如果一个集合是频繁项集,则它的所有子集都是频繁项集。
Apriori定律2:如果一个集合不是频繁项集,则它的所有超集都不是频繁项集。

当{A, B}是非频繁集时,所有包含它的超集也是非频繁的。


Apriori2.png

Apriori算法

  • Let k=1
  • Generate frequent itemsets of length k
  • Repeat until no new frequent itemsets are identified
    • Generate length (k+1) candidate itemsets from length k frequent itemsets 排好序
    • Prune candidate itemsets containing subsets of length k+1 that are infrequent 删除掉包含非L_k子集的候选集
    • Count the support of each candidate by scanning the database
    • Eliminate candidates that are infrequent, leaving only those that are frequent
Apriori3.png

举个例子


Apriori4.png

电信套餐预测中TOP1的方案,其中有一个特征使用关联规则的方法。
TOP1的github

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容