机器学习算法——使用 Apriori 算法进行关联分析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_20840025/article/details/79959729

参考博客:点击打开链接点击打开链接

1、什么是关联分析?

关联分析是一种在大规模数据集中寻找有趣关系的任务,这些关系可以有两种形式:频繁项集或者关联规则

频繁项集(frequent item set):是经常出现在一块的物品集合

关联规则(association rules):暗示两种物品之间可能存在很强的关系

2 Apriori理论

算法的一般过程:

  • 收集数据:使用任何方法
  • 准备数据:任意数据类型都可以,因为我们只保存集合
  • 分析数据:使用任何方法
  • 训练算法:使用Apriori算法来找到频繁项集
  • 测试算法:不需要测试过程
  • 使用算法:用于发现频繁项集以及物品之间的关联规则

  支持度:数据集中包含该项数据集的记录所占的比例。一个集合的支持度是指有多少比例的交易记录包含该集合。

              项集A、B同时发生的概率称为关联规则的支持度(Python数据分析与挖掘实战P114)

  可信度(置信度): 项集A发生,则 项集B发生的概率称为关联规则的置信度。

       

        使用Apriori算法,首先计算出单个元素的支持度,然后选出单个元素置信度大于我们要求的数值,比如0.5或是0.7等。然后增加单个元素组合的个数,只要组合项的支持度大于我们要求的数值就把它加到我们的频繁项集中,依次递归。然后根据计算的支持度选出来的频繁项集来生成关联规则。

一般来说,支持度高的数据不一定构成频繁项集,但是支持度太低的数据肯定不构成频繁项集

3、Apriori原理:

原理作用:这个原理是针对计算支持度时候,要遍历所有的数据,这样会造成计算量过大,非常耗时,使用Apriori原理,可以减少遍历次数,减少时间。

原理内容:Apriori原理是说如果某个项集是频繁的,那么它的所有子集也是频繁的

也就是说:如果{0,1}是频繁的,那么{0},{1}也一定是频繁的,反过来也就是说:如果一个项集是非频繁集,那么它的所有超集也是非频繁的。(这个很有用)

例如:我么如果知道{2,3}是非频繁的,那么{0,1,2,3}{1,2,3}{0,2,3}也是非频繁的。也就是说一旦计算出{2,3}的支持度,知道他是非频繁的之后,就不需要在计算{0,1,2,3}{1,2,3}{0,2,3}的支持度了。

4、使用Apriori算法来发现频繁集

关联分析包括两项:发现频繁项集发现关联规则。我们需要先找到频繁项集,然后才能获得关联规则,所以我们先说怎么样发现频繁项集。

Apriori算法:该算法的的输入参数分别是最小支持度数据集。该算法首先会生成所有单个物品的项集列表。接着扫描交易记录查看哪些项集满足最小支持度要求,那些不满足支持度的集合会被去掉。然后,对剩下来的集合进行组合以生成包含两个元素的项集。接下来,在重新扫描交易记录,去掉不满足最小支持度的项集。该过程重复进行直到所有项集都被去掉。

5.    Apriori 算法优缺点

* 优点:易编码实现
* 缺点:在大数据集上可能较慢
* 适用数据类型:数值型 或者 标称型数据。

总结:虽然我们用Apriori原理来减少在数据库上进行检查的集合的数目。这样可以提高速度。但是,每次增加频繁项集的大小,Apriori算法都会重新扫描整个数据集,当数据集很大的时候,还是会降低频 繁项集的发现的速度。如果有需要,可以看下FPfrowth算法,该算法对数据库进行两次遍历,能够显著加快发现频繁项集的速度。




阅读更多

没有更多推荐了,返回首页