Apriori算法简单总结

版权声明:本文为博主原创文章,欢迎转载,但请注明出处~ https://blog.csdn.net/njustzj001/article/details/46914135


关联分析是一种在大规模数据集中寻找有趣关系的任务。Apriori是解决这一问题的基本算法。这个算法也是数据挖掘的入门算法。

首先明确两个个概念:频繁项集和关联规则。

- 频繁项集:经常出现在一块儿的物品的集合。
- 关联规则:暗示两种物品之间可能存在很强的关系。

那么,如何定量地定义这种很强的“关系”?“频繁”又是什么?这里又必须明确两个概念:支持度和可信度。

- 支持度:一个项集所对应的支持度定义为数据集中包含该项集的记录所占的比例。
- 可信度:说白了是一个条件概率P(B|A),在A发生的事件中同时发生B的概率 p(AB)/P(A)。

Apriori算法的功能是寻找所有支持度不小于minsup的项集。项集的支持度是指包含该项集的事务所占所有事务的比例。频繁项集就是指满足给定的最小支持度的项集。Apriori的关键在于它使用了一种分层的完备搜索算法(深度优先搜索),该算法用到了项集的反向单调性,即:如果一个项集是非频繁的,那么他的所有超集也是非频繁的,这个性质也被称为向下闭合性。该算法会对数据集进行多次遍历:第一次遍历,对所有单项的支持度进行计数并确定频繁项;在后续的每次遍历中,利用上一次遍历所得频繁项集作为种子项集,产生新的潜在频繁项集——候选项集,并且对候选项集的支持度进行计数,在本次遍历结束时统计满足最小支持度的候选项集,本次遍历对应的频繁项集就算是确定了,这些频繁项集又成为下一趟遍历的种子;重复此遍历过程,直到再不能发现新的频繁项集。

简单来说,Apriori算法分为两个过程:

- 发现频繁项集。核心是连接步和剪枝步。连接步是自连接,原则是保证前k-2项相同,并按照字典顺序连接;剪枝步(Apriori的关键),是使任一频繁项集的所有非空子集也必须是频繁的。反之,根据向下闭合性,该houxuan肯定不是频繁的,从而可以将其删除。
- 产生关联规则。过程为:根据前面提到的置信度的定义,关联规则产生如下:(1)对于每个频繁项集L,产生L的所有非空子集;(2)对于L的每个非空子集S,如果P(L)/P(S) >= minsup,则输出规则S->(L-S)。

Apriori通过减少候选集大小来获得良好的性能。然而,在频繁项集很多或者最小支持度很低的情况下,算法必须生成数量庞大的候选项集并且需要反复扫描数据库来检查数量庞大的候选项集,代价任然十分高。

参考:
《数据挖掘十大算法》
http://blog.csdn.net/lizhengnanhua/article/details/9061755

猜你喜欢

转载自blog.csdn.net/njustzj001/article/details/46914135