Apriori算法用于关系数据库的频繁项集挖掘和关联规则学习,简单的说就是找出数据中频繁出现的数据集合。Apriori算法在没有找到成功扩展时就会停止。
使用广度优先搜索和哈希结构,Apriori算法可以有效地计算候选项目集。它从长度为k-1的项目集生成长度为k的候选项目集。再根据向下闭合,候选集包含所有频繁的k长度项集。之后,它扫描事务数据库以确定候选中的频繁项集。
Apriori算法步骤详解
以下是算法的主要步骤:
1.计算数据库中项目集(大小k=1)的支持度,支持度是项目集出现的频率。
2.在算法的第一次迭代中,每个项目都被视为1项集候选。该算法将计算每个项目的出现次数,这称为生成候选集。
3.假设有一些最小支持min_sup,确定其出现满足min sup的1项集的集合。只有那些计数大于或等于min_sup的候选者才会被提前用于下一次迭代,而其他的则被修剪。
4.通过消除支持小于给定阈值的项目来修剪候选集。
5.接下来,发现具有min_sup的2项集频繁项。为此,在连接步骤中,通过将项目与其自身组合生成2项集。
6.加入频繁项集,形成大小为k+1的集合,并重复上述集合,直到不能形成更多的项集。当形成的集合具有小于给定支持的支持时,就会发生这种情况。
7.使用min-sup阈值修剪2项集候选。现在该表将有2个仅带有min-sup的项目集。
8.下一次迭代将使用连接和修剪步骤形成3个项目集。此迭代将遵循反单调属性,其中3项集的子集,即每个组的2项集子集落在min_sup中。如果所有2项集子集都是频繁的,则超集将是频繁的,否则将被修剪。
9.下一步将通过将3项集与自身连接来制作4项集,如果其子集不符合min_sup标准,则进行修剪。当达到最频繁项集时算法停止。
提高Apriori算法效率的方法
以下5种方法可用于提高Apriori算法的效率。
1.基于哈希的技术:使用基于哈希结构来生成k项集及其相应的计数。它使用哈希函数来生成表。
2.事务减少:此方法减少迭代中扫描的事务数量。不包含频繁项的事务被标记或删除。
3.分区:这种方法只需要两次数据库扫描来挖掘频繁项集。对于任何可能在数据库中频繁出现的项集,它应该在数据库的至少一个分区中频繁出现。
4.抽样:该方法从数据库中随机抽取一个样本,然后在样本中搜索频繁项集。
5.动态项集计数:这种技术可以在扫描数据库期间,在数据库的任何标记的起点添加新的候选项集。
尽管Apriori算法是关联规则学习算法中最简单易懂的算法,但它有个非常大的缺陷,因为Apriori算法是详尽的,大量时间被浪费在候选生成,导致Apriori算法在大型数据库中会变得低效和缓慢。