什么是Apriori算法?
Apriori是由R. Agrawal和R. Srikant于1994年开发的一种开创性算法,用于挖掘布尔关联规则的频繁项集。该算法依赖于算法需要事先了解频繁项集属性的情况。
Apriori使用一种称为逐层搜索的迭代方法,其中k-项集可以探索(k+1)-项集。首先,通过浏览数据库来收集每个项目的计数,并接收满足最小支持度的项目,从而发现频繁1-项集的集合。结果集表示为L1。
接下来,L1可以找到L2,即频繁2-项集的集合,它可以找到L3,等等,直到无法发现更多频繁的k-项集。每个Lk的发现都需要对数据库进行一次完整扫描。
它可以提高频繁项集逐层生成的效率,这是一个称为Apriori属性的重要特性。它可以减少搜索空间。
Apriori属性 - 频繁项集的某些非空子集也应该频繁。
Apriori属性依赖于以下观察结果。根据定义,如果项集I不满足最小支持度阈值min sup,则I不频繁;也就是说,P(I) < min_sup。
如果将项A插入到项集I中,则生成的项集(即I ∪ A)不能比I更频繁地出现。因此,I∪A不频繁,例如P (I ∪ A) < min_sup。
此属性属于一类称为反单调的属性,从某种意义上说,如果一个集合不能通过测试,则某些超集也将无法通过相同的测试。它被称为反单调,因为该属性在拒绝测试的上下文中是单调的。
遵循一个两步过程,包括连接和剪枝操作,如下所示:
连接步骤 - 它可以找到Lk,通过将Lk−1自身连接起来生成一组候选k-项集。这组候选表示为Ck。设L1和L2为Lk−1中的项集。文档Li[j]定义Li中的第j个项(例如,L1 [k−2]定义L1中倒数第二个项)。
剪枝步骤 - Ck是Lk的超集,即它的成员可能不频繁,但Ck中包含一些频繁的k-项集。对数据库进行扫描以确定Ck中每个候选的计数,可以导致Lk的确定(即,根据定义,某些计数不少于最小支持度计数的候选是频繁的,因此属于Lk)。Ck可能很大,并且可能涉及大量的计算。
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP