掌桥专利:专业的专利平台
掌桥专利
首页

一种基于布尔矩阵和二进制编码改进的关联规则Apriori算法

文献发布时间:2023-06-19 13:45:04



技术领域

本发明涉及一个基于布尔矩阵和二进制编码改进的关联规则Apriori算法,属于数据挖掘领域。

背景技术

Apriori算法是最经典的关联规则挖掘算法之一,其核心思想就是利用连接产生候选项集,同时利用最小支持度对候选项集进行剪枝,最终生成频繁项集,但是随着数据爆发性的增长,传统的Aprior算法需要多次扫描数据库并且容易产生大量的候选项集,使得算法效率低下。

因此本发明提出一种基于布尔矩阵与二进制编码改进的关联规则Apriori算法,通过用布尔矩阵存储数据库的方式,使得整个算法对数据库只进行一次扫描操作,然后利用二进制编码之间的“与”运算获取项集的事务支持度,同时增加了非频繁项集的记录表,对候选项集提前剪枝,大大提高了算法的效率。

发明内容

为了解决Apriori算法需要多次扫描数据库与产生大量候选项集的缺点,本发明提出了一种基于布尔矩阵与二进制编码改进的关联规则Apriori算法。

为实现上述目的,本发明提供了如下技术方案:

1.一种基于布尔矩阵和二进制编码改进的关联规则Apriori算法,其特征在于,该方法包括以下步骤:

(1)扫描数据库,生成布尔矩阵,获得频繁1-项集;

(2)压缩布尔矩阵;

(3)提前预剪枝,同时建立非频繁项集的记录表;

(4)建立辅助表;

(5)更新非频繁项集记录表;

(6)缩减算法流程;

(7)压缩布尔矩阵,预剪枝,同时返回到步骤4,直到频繁k-项集个数小于k+1时,迭代结束。

2.根据权利要求1所述的一种基于布尔矩阵和二进制编码改进的关联规则Apriori算法,其特征在于,所述步骤(1)中,扫描数据库,生成布尔矩阵,获得频繁1-项集,具体步骤为:

步骤1-1首先扫描数据库,用布尔矩阵来存储,行表示事务id,列表示项,其中矩阵中的a

步骤1-2根据布尔矩阵,获得频繁1-项集。

3.根据权利要求1所述的一种基于布尔矩阵和二进制编码改进的关联规则Apriori算法,其特征在于,所述步骤(2)中,计算各个事务的项目数,并按这个值对矩阵进行降序排列,将非频繁1-项集所在的列删除,重新计算矩阵列n的值,按降序重新排列矩阵,同时在求频繁k-项集(k≥2)时,将矩阵中的事务数小于k的行直接删除,重新计算矩阵中各列的值并重新排列矩阵。

4.根据权利要求1所述的一种基于布尔矩阵和二进制编码改进的关联规则Apriori算法,其特征在于,所述步骤(3)中,提前预剪枝,同时建立非频繁项集的记录表,具体步骤为:

步骤3-1利用“若能生成频繁k-项集(k≥2),则频繁(k-1)-项集中每个项的个数不能小于k-1”的性质,对候选k-项集(k≥2)进行剪枝;

步骤3-2建立非频繁项集的记录表;

步骤3-3将候选k-项集(k≥2)与非频繁项集记录表进行匹配,若候选k-项集(k≥2)集合中的某一项集与记录表中的项集匹配成功,则此项集不是频繁项集,删掉此候选k-项集(k≥2),对候选k-项集(k≥2)进行二次剪枝。

5.根据权利要求1所述的一种基于布尔矩阵和二进制编码改进的关联规则Apriori算法,其特征在于,所述步骤(4)中,建立辅助表,将候选k-项集(k≥2)编码成二进制数,编码长度为频繁1-项集的个数,将候选k-项集(k≥2)与布尔矩阵的事务id行相“与”,计算候选k-项集(k≥2)的支持度计数,根据给出的最小支持度计数,删除小于最小支持度计数的候选项集,最终得到频繁k-项集(k≥2)。

6.根据权利要求1所述的一种基于布尔矩阵和二进制编码改进的关联规则Apriori算法,其特征在于,所述步骤(5)中,更新非频繁项集记录表,将没有达到最小阈值的项集记录到非频繁项集记录表中。

7.根据权利要求1所述的一种基于布尔矩阵和二进制编码改进的关联规则Apriori算法,其特征在于,所述步骤(6)中,利用“若频繁k-项集中的项集个数小于k+1,则不能生成频繁(k+1)-项集”的性质,缩减算法流程。

8.根据权利要求1所述的一种基于布尔矩阵和二进制编码改进的关联规则Apriori算法,其特征在于,所述步骤(7)中,压缩矩阵,预剪枝,同时返回到步骤4,直到频繁k-项集个数小于k+1时,迭代结束,具体步骤为:

步骤7-1在求频繁k-项集(k≥2)时,将矩阵中的事务数小于k的行直接删除,重新计算矩阵中各列的值并重新排列矩阵;

步骤7-2利用“若能生成频繁k-项集(k≥2),则频繁(k-1)-项集中每个项的个数不能小于k-1”的性质,对候选k-项集(k≥2)进行一次剪枝,将候选k-项集(k≥2)与非频繁项集记录表进行匹配,若候选k-项集(k≥2)集合中的某一项集与记录表中的项集匹配成功,则此项集不是频繁项集,删掉此候选k-项集(k≥2),对候选k-项集(k≥2)进行二次剪枝;

步骤7-3返回步骤4,直到频繁k-项集个数小于k+1时,迭代结束。

有益效果

1.本发明是一种基于布尔矩阵与二进制编码的关联规则Apriori算法,利用布尔矩阵对数据库进行存储,改进了传统算法需要多次扫描数据库的弊端,改进算法只需扫描一次数据库即可。

2.本发明对候选项集做了两次提前预剪枝,大大减少了候选项集的产生。

附图说明

图1为本发明实施方式中的一种基于布尔矩阵与二进制编码的关联规则Apriori算法流程图。

图2为本发明实施方式中的一种基于布尔矩阵与二进制编码的关联规则Apriori算法实验结果对比图。

具体实施方式

为了使本发明的实施例中的技术方案能够清楚和完整地描述,以下结合实施例中的附图,对本发明进行进一步的详细说明。

假设给出数据库D,最小支持度minsup=0.3,如表1所示:

表1

本发明实施例所涉及的一种基于布尔矩阵与二进制编码的关联规则Apriori算法流程,如图1所示,它包括以下步骤:

步骤1:扫描数据库,生成布尔矩阵,获得频繁1-项集过程如下:

步骤1-1:由数据库表可以看出T4与T9有相同的项集,对相同的事务进行压缩,得到矩阵A:

步骤1-2:根据矩阵得到频繁1-项集L1={I2,I3,I4,I5,I6}。

步骤2:重新排列矩阵,得到压缩后的矩阵A1:

步骤3:提前预剪枝,同时建立非频繁项集的记录表过程如下:

步骤3-1:频繁1-项集的个数均为1,无需剪枝;

步骤3-2:建立非频繁项集的记录表,如表2所示:

表2

步骤3-3:频繁1-项集自连接生成候选2-项集,候选2-项集为{I2I3,I2I4,I2I5,I2I6,I3I4,I3I5,I3I6,I4I5,I4I6,I5I6},将候选2-项集与非频繁项集记录表匹配,发现没有项集匹配成功。

步骤4:建立辅助表,将所有候选2-项集编码成二进制数,与矩阵各行相“与”,得到事务支持度,辅助表如表3所示:

表3

根据辅助表得到频繁2-项集L2={I2I3,I2I5,I2I6,I3I5,I4I5,I5I6}。

步骤5:更新非频繁项集记录表,如表4所示:

表4

步骤6:判断频繁k-项集(k≥2)中的项集个数是否小于k+1,通过计算得知,频繁2-项集个数为6,大于2+1,算法继续。

步骤7:压缩矩阵,预剪枝,同时返回到步骤4,直到频繁k-项集个数小于k+1时,迭代结束,过程如下:

步骤7-1:重新排列矩阵,得到矩阵A2:

步骤7-2:计算频繁2-项集中每个项的个数,I4的个数为1小于2,所以删除{I4I5},由{I2I3,I2I5,I2I6,I3I5,I5I6}自连接生成候选3-项集{I2I3I5,I2I3I6,I2I5I6,I3I5I6},将候选3-项集与非频繁项集记录表进行匹配,发现{I2I3I6,I3I5I6}不是频繁项集,将它们删除;

步骤7-3:返回到步骤4计算结果可知频繁3-项集为L3={I2I5I6},由于频繁3-项集中的项集个数小于3+1=4,算法结束。

选择经典的Chess数据集进行测试,并将本发明所提方法与传统的Apriori算法进行对比,实验对比结果如图2所示,结合图2可以看出,本发明所提方法要明显优于传统Apriori算法,既可以提高准确率,又可以保证结果的稳定性。

本发明实施方式中的一种基于布尔矩阵和二进制编码改进的关联规则Apriori算法,利用布尔矩阵对数据库进行存储,改进了传统算法需要多次扫描数据库的弊端,改进算法只需扫描一次数据库即可,本发明对候选项集做了两次提前预剪枝,大大减少了候选项集的产生。

以上所述是结合附图对本发明的实施例进行的详细介绍,本文的具体实施方式只是用于帮助理解本发明的方法,对于本技术领域的普通技术人员,依据本发明的思想,在具体实施方式及应用范围内均可有所变更和修改,故本发明书不应理解为对本发明的限制。

相关技术
  • 一种基于布尔矩阵和二进制编码改进的关联规则Apriori算法
  • 一种基于改进Apriori算法的数据库关联规则挖掘方法
技术分类

06120113792731