普通英语的Apriori算法?


9

我阅读了有关Apriori的Wiki文章。我在理解修剪和加入步骤时遇到了麻烦。谁能用简单的术语解释我Apriori算法的工作原理(这样像我这样的新手都可以轻松理解)?

如果有人解释其中涉及的逐步过程,那将是很好的。


您可能对我的Python实现感兴趣。
马丁·托马

Answers:


11

维基百科的文章并不特别令人印象深刻。您可能会发现这些幻灯片更有帮助:123

在每个级别 k, 你有 k-频繁的项目集(有足够的支持)。

在下一级别, k+1您需要考虑的-item集必须具有其每个子集必须频繁(具有足够支持)的属性。这是apriori属性:频繁项目集的任何子集都必须是频繁的。

因此,如果您在第2级知道 {1,2}{1,3}{1,5}{3,5} 是仅有的具有足够支持的布景,然后在第3级将它们彼此结合以产生 {1,2,3}{1,2,5}{1,3,5}{2,3,5} 但是你只需要考虑 {1,3,5} 进一步:其他每个都具有不足的支持子集(例如 {2,3} 要么 {2,5} )。


2

Apriori算法是用于数据挖掘的关联规则挖掘算法。它用于在给定数量的交易中查找频繁项集。

它基本上包括两个步骤

  1. 自我加入
  2. 修剪

重复这些步骤k次,其中k是项目数,在上一次迭代中,您将获得包含k个项目的频繁项目集。

请在此处查找非常简单的说明,并提供详细示例http://nikhilvithlani.blogspot.com/2012/03/apriori-algorithm-for-data-mining-made.html

它的解释简单,没有任何复杂的方程式。


2
我之所以留下此公告,是因为通常最好提供您要强调的要点的摘要,而不是链接到博客而无需进一步说明。此外,该站点的目的是建立对特定问题的有知识的答案的集合,并尽可能减少对悬挂或短暂链接的依赖。因此,除非您可以保证上述链接在10年后仍然有效,否则,我强烈建议您在本答复中总结其要点。
chl 2012年

1

Apriori用简单的英语。

Apriori采用称为“逐级搜索”的迭代方法,其中使用k个项目集探索(k + 1)个项目集。首先,通过扫描数据库以累积每个项目的计数,然后收集满足最小支持的那些项目,来找到一组频繁的1个项目集。结果集表示为L1。接下来,使用L1查找L2,这是一组频繁的2个项目集,该集合用于查找L3,依此类推,直到找不到更多的频繁k个项目集。找到每个Lk要求对数据库进行一次完整扫描。

在最后一次迭代中,您将获得许多k-itemsets,基本上称为关联规则。为了从所有可能的规则集中选择有趣的规则,可以应用各种约束措施,例如支持置信度。

术语和术语

  • 1个项目集表示{a},{b},{c}
  • 2个项目集表示{a,b},{d,d},{a,c}
  • K个项集表示{i1,i2,i3,... ik},{j1,j2,j3,.... jk}

联接步骤:意味着使1-itemset与自身进行自我联接以生成2-itemset。

修剪步骤:此处以最小支持阈值过滤来自连接的结果集。

基数集:修剪步骤的结果集。

支持 =包含“ a”和“ b”的交易数量/交易总数。

支持=> supp(a,b)=> p(a U b)

置信 =包含“ a”和“ b”的交易数量/包含“ a”的交易数量。

有信心=> con(a,b)==> P(b | a)只不过是条件概率。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.