我之前已经多次听说过Apriori算法,但从来没有时间或机会深入研究,有人能用简单的方法向我解释这个算法的工作原理吗?另外,一个基本的例子可以让我更容易理解。
答案 0 :(得分:6)
请参阅Top 10 algorithms in data mining(免费访问)或The Top Ten Algorithms in Data Mining。后者给出了算法的详细描述,以及如何获得优化实现的细节。
答案 1 :(得分:6)
它是用于数据集中频繁模式挖掘的候选生成和测试方法。你必须要记住两件事。
Apriori修剪原则 - 如果任何项目集不经常,则不应生成/测试其超集。
Apriori Property - 只有当(k+1)-itemset
个子集的所有子频繁出现时,给定(k+1)-itemset
才是候选人k-itemset
。
现在,这里是4步的apriori算法。
1-itemset
。k+1
个频繁项目集生成长度k
候选项目集。假设有一个交易数据库如下,包含4个交易,包括交易ID和用它们购买的物品。假设最低支持度为min_sup
为2
。术语“支持”是指存在/包含某个项目集的交易数量。
交易数据库
tid | items
-------------
10 | A,C,D
20 | B,C,E
30 | A,B,C,E
40 | B,E
现在,让我们通过DB的第一次扫描创建候选1-itemsets
。它被简单地称为C_1
的集合如下。
itemset | sup
-------------
{A} | 2
{B} | 3
{C} | 3
{D} | 1
{E} | 3
如果我们使用min_sup
对此进行测试,我们会发现{D}
不符合min_sup
的{{1}}。因此,它不会包含在频繁的2
中,我们只需将其称为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}
的{{1}},因此它们不会包含在频繁的min_sup
中,2
2-itemset
现在让我们对数据库进行第3次扫描,并获得候选人L_2
,itemset | sup
-------------
{A,C} | 2
{B,C} | 2
{B,E} | 3
{C,E} | 2
,如下所示。
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}
的{{1}}。因此,它们不会包含在频繁的{A,C,E}
,min_sup
中,如下所示。
2
现在,最后,我们可以计算可以由itemset生成的关联/关联规则的3-itemset
,L_3
和itemset | sup
-------------
{B,C,E} | 2
值{ {1}}如下。
support (supp)
答案 2 :(得分:4)
好吧,我假设您已经阅读了维基百科条目,但您说“一个基本的例子会让我更容易理解”。维基百科就是这样,所以我假设你没有阅读它,并建议你这样做。
阅读wikipedia文章。
答案 3 :(得分:2)
Apriori的最佳介绍可以从这本书下载:
http://www-users.cs.umn.edu/~kumar/dmbook/index.php
你可以免费下载第6章,非常清楚地解释Apriori。
此外,如果你想下载一个Java版本的Apriori和其他算法进行频繁的项目集挖掘,你可以查看我的网站: