- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于模式矩阵Apriori优化算法
基于模式矩阵Apriori优化算法
摘 要:本文利用模式矩阵对传统Apriori算法进行优化,提出了一种新的优化算法EP_Apriori。该算法仅扫描数据库一次,建立模式矩阵,将项频繁集的产生简化为1-项频繁集矩阵和项频繁集矩阵行向量的逻辑与操作,避免了大量候选项集的产生。该算法在时间复杂度和空间复杂度上均优于Apriori算法。
关键词:关联规则 Apriori算法 模式矩阵
中图分类号:TP301.6 文献标识码:A 文章编号:1007-9416(2011)01-0083-01
1、概述
关联规则挖掘是由Rakesh Agrawal等人于1993年提出的[1],是在数据集中找出满足用户设定的最小支持度和最小置信度的关联规则。关联规则挖掘通常分为两步:(1)从事务数据库中找出所有频繁项集;(2)从频繁项集中得到所有符合条件的关联规则。其中第(1)步频繁项集的产生是关联规则挖掘问题的核心,其效率高低决定关联规则挖掘的总体性能。产生频繁项集的算法很多,其中最具影响力的Apriori算法,采用逐层迭代从大量候选项集中产生频繁项集。Apriori算法实现时需要多次扫描数据库,产生大量候选项集。本文提出一种利用模式矩阵的优化算法EP_Apriori。
2、基本概念
Apriori算法首先扫描事务数据库中找出项频繁集,记为,然后利用项频繁集来找出项频繁集的集合,直到不能找到频繁项集为止。其中核心的步骤分三步[2]:
(1)连接(self-joining):通过连接产生项候选集合。
(2)剪枝(pruning):第(1)步中包含有大量的候选项集,为了减少支持度的计算量,要对进行剪枝。依据的原理是频繁集的非空子集一定是频繁的,如果一个项候选集的任意个项子集不在中,则该候选集不可能是频繁的,可以从中删除。
(3)计算:扫描事务数据库,统计中每个项集的支持度计数,根据用户设定的最小支持度阈值确定项频繁集。
3、EP_Apriori算法
3.1 EP_Apriori算法基本思想
Apriori算法存在以下2点不足:(1)经过连接和剪枝后仍然会产生海量的候选项集;(2)需要多次扫描事务数据库,每计算一次频繁集需要对所有事务进行扫描。文献[3]介绍的P_Matrix算法通过一次扫描数据库产生模式矩阵,通过对矩阵的按位与运算直接产生频繁项集,减少了扫描事务数据库的次数,避免了海量候选项集的产生。但是该算法在产生项()频繁集时需要重新建立模式矩阵,还需要用并集运算去掉重复项,时间消耗较多。EP_Apriori算法只建立一次模式矩阵,保留每次向量的与操作结果,在项频繁集的基础上直接计算项频繁集,减少了剪枝步骤,避免了大量候选项集的产生。
定义 设事务数据库中有事务个,项目个,构建矩阵,其中行向量,()表示第i个项目在第j个事务是否出现,如果出现令,否则令。删除1个数小于最小支持度阈值的行向量,保留下来的矩阵为模式矩阵,其行数为1-项频繁集的项目个数。
3.2 EP_Apriori算法设计
Input:T:data set;minsup:minimum support threshold
Output:L:frequent itemsets
Method:
for each transaction t in T do
P1={x[1],x[2],...,x[items_count]}//模式矩阵P,行向量表示一个项目
for(i=1; i=items_count; i++ )//生成频繁1-项集矩阵
if(minsup)
delete x[i] from P1
Else
{
L1_count++
insert item i into L1
}
for(i=1; i=L1_count; i++)//生成频繁2-项集
for(j=1;j=L1_count-i;j++)
y=x[i]x[i+j]
if(minsup)
delete x[i] from P1
else
{
L2_count++
insert y[i] into P2
insert item i and i+j into L2
}
k = 2
while
L = L1L2EP_Apriori_gen(P1,Pk-1,L1,Lk-1,Lkminsup)
return L
procedure EP_Apriori_gen(P1,Pk-1,L1,Lk-1,minsup)
{
for(i=1;i=L1_
文档评论(0)