【问题标题】:Apriori Algorithm先验算法
【发布时间】:2009-08-08 08:46:23
【问题描述】:

我之前多次听说过 Apriori 算法,但一直没有时间或机会深入研究它,谁能简单地向我解释一下该算法的工作原理?另外,一个基本的例子会让我更容易理解。

【问题讨论】:

    标签: algorithm apriori


    【解决方案1】:

    先验算法

    这是一种用于数据集中频繁模式挖掘的候选生成和测试方法。您必须记住两件事。

    Apriori Pruning Principle - 如果任何项集不频繁,则不应生成/测试其超集。

    Apriori 属性 - 一个给定的 (k+1)-itemset 是候选 (k+1)-itemset 仅当它的每个 k-itemset 子集都是频繁的。

    现在,这里是 4 步的先验算法。

    1. 最初,扫描数据库/数据集一次以获取频繁的1-itemset
    2. 从长度k频繁项集生成长度k+1候选项集。
    3. 针对数据库/数据集测试候选人。
    4. 在无法生成频繁集或候选集时终止。

    解决的例子

    假设有一个如下的交易数据库,其中包含 4 笔交易,包括他们的交易 ID 和与他们一起购买的物品。假设最低支持 - min_sup2。术语支持​​是存在/包含某个项目集的事务数。

    交易数据库

    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} 不满足2min_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} 项集不满足2min_sup,因此它们不会包含在频繁出现的2-itemsetL_2

    itemset | sup
    -------------
      {A,C} |  2
      {B,C} |  2
      {B,E} |  3
      {C,E} |  2
    

    现在让我们对数据库进行第 3 次扫描,得到候选 3-itemsetsC_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_sup2。所以它们不会被包含在频繁的3-itemsetL_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
    

    【讨论】:

    • 这是一个真实的答案
    • 为什么B->E和E->B没有在关联规则列表中?
    【解决方案2】:

    请参阅Top 10 algorithms in data mining(免费访问)或The Top Ten Algorithms in Data Mining。后者给出了算法的详细描述,以及如何获得优化实现的详细信息。

    【讨论】:

      【解决方案3】:

      好吧,我假设你已经阅读了维基百科条目,但你说“一个基本的例子会让我更容易理解”。维基百科就是这样,所以我假设您还没有阅读它并建议您阅读。

      阅读wikipedia 文章。

      【讨论】:

      • 谢谢,其实我之前读过wiki页面,但当时内容很差,现在它甚至包含一个真实世界的例子! =)
      【解决方案4】:

      Apriori 的最佳介绍可以从这本书中下载:

      http://www-users.cs.umn.edu/~kumar/dmbook/index.php

      您可以免费下载第6章,非常清楚地解释了Apriori。

      另外,如果你想下载Java版的Apriori等频繁项集挖掘算法,可以查看我的网站:

      http://www.philippe-fournier-viger.com/spmf/

      【讨论】:

        猜你喜欢
        • 2023-03-30
        • 2017-08-20
        • 1970-01-01
        • 2010-11-18
        • 2016-03-25
        • 2013-04-09
        • 2018-05-21
        • 2014-05-09
        • 2016-01-17
        相关资源
        最近更新 更多