【发布时间】:2009-08-08 08:46:23
【问题描述】:
我之前多次听说过 Apriori 算法,但一直没有时间或机会深入研究它,谁能简单地向我解释一下该算法的工作原理?另外,一个基本的例子会让我更容易理解。
【问题讨论】:
我之前多次听说过 Apriori 算法,但一直没有时间或机会深入研究它,谁能简单地向我解释一下该算法的工作原理?另外,一个基本的例子会让我更容易理解。
【问题讨论】:
这是一种用于数据集中频繁模式挖掘的候选生成和测试方法。您必须记住两件事。
Apriori Pruning Principle - 如果任何项集不频繁,则不应生成/测试其超集。
Apriori 属性 - 一个给定的 (k+1)-itemset 是候选 (k+1)-itemset 仅当它的每个 k-itemset 子集都是频繁的。
现在,这里是 4 步的先验算法。
1-itemset。k频繁项集生成长度k+1候选项集。假设有一个如下的交易数据库,其中包含 4 笔交易,包括他们的交易 ID 和与他们一起购买的物品。假设最低支持 - min_sup 是 2。术语支持是存在/包含某个项目集的事务数。
交易数据库
tid | items
-------------
10 | A,C,D
20 | B,C,E
30 | A,B,C,E
40 | B,E
现在,让我们通过对数据库的第一次扫描来创建候选 1-itemsets。它被简单地称为C_1的集合,如下所示。
itemset | sup
-------------
{A} | 2
{B} | 3
{C} | 3
{D} | 1
{E} | 3
如果我们用min_sup 进行测试,我们可以看到{D} 不满足2 的min_sup。因此,它不会包含在频繁的1-itemset 中,我们将其简单地称为L_1 的集合,如下所示。
itemset | sup
-------------
{A} | 2
{B} | 3
{C} | 3
{E} | 3
现在,让我们第二次扫描数据库,生成候选2-itemsets,我们将其简单地称为C_2的集合,如下所示。
itemset | sup
-------------
{A,B} | 1
{A,C} | 2
{A,E} | 1
{B,C} | 2
{B,E} | 3
{C,E} | 2
如您所见,{A,B} 和 {A,E} 项集不满足2 的min_sup,因此它们不会包含在频繁出现的2-itemset、L_2 中
itemset | sup
-------------
{A,C} | 2
{B,C} | 2
{B,E} | 3
{C,E} | 2
现在让我们对数据库进行第 3 次扫描,得到候选 3-itemsets、C_3,如下所示。
itemset | sup
-------------
{A,B,C} | 1
{A,B,E} | 1
{A,C,E} | 1
{B,C,E} | 2
您可以看到,{A,B,C}、{A,B,E} 和 {A,C,E} 不满足 min_sup 的 2。所以它们不会被包含在频繁的3-itemset、L_3 中,如下所示。
itemset | sup
-------------
{B,C,E} | 2
现在,我们终于可以计算出由项目集{B,C,E} 生成的关联/相关规则 的support (supp)、confidence (conf) 和lift (interestingness value) 值,如下所示。
Rule | supp | conf | lift
-------------------------------------------
B -> C & E | 50% | 66.67% | 1.33
E -> B & C | 50% | 66.67% | 1.33
C -> E & B | 50% | 66.67% | 1.77
B & C -> E | 50% | 100% | 1.33
E & B -> C | 50% | 66.67% | 1.77
C & E -> B | 50% | 100% | 1.33
【讨论】:
请参阅Top 10 algorithms in data mining(免费访问)或The Top Ten Algorithms in Data Mining。后者给出了算法的详细描述,以及如何获得优化实现的详细信息。
【讨论】:
好吧,我假设你已经阅读了维基百科条目,但你说“一个基本的例子会让我更容易理解”。维基百科就是这样,所以我假设您还没有阅读它并建议您阅读。
阅读wikipedia 文章。
【讨论】:
Apriori 的最佳介绍可以从这本书中下载:
http://www-users.cs.umn.edu/~kumar/dmbook/index.php
您可以免费下载第6章,非常清楚地解释了Apriori。
另外,如果你想下载Java版的Apriori等频繁项集挖掘算法,可以查看我的网站:
【讨论】: