一种基于SQL的Apriori改进算法.docVIP

  • 3
  • 0
  • 约2.89千字
  • 约 5页
  • 2016-09-10 发布于北京
  • 举报
一种基于SQL的Apriori改进算法.doc

一种基于SQL的Apriori改进算法   摘 要:针对关联规则经典算法Apriori的不足,这篇文章提出了一种基于SQL的改进算法。该算法只需要1次扫描数据库即可判断候选集是否频繁,减少了对候选数据库的扫描次数。实验证明该方法的执行效率比原方法要快。   关键词:关联规则;Apriori;SQL   中图分类号:TP301   关联规则(Association rules)是数据挖掘的一个重要研究方向,其目的是发现大量数据中项集之间有趣的关联或相关联系[1]。挖掘关联规则就是在大量事务数据(比如顾客消费记录)中找出用户感兴趣的关联性(比如购买面包的顾客有多少同时又购买了牛奶,并且符合这一关联性的顾客又在总的消费记录中占了多少比例),也就是事务数据库中满足用户给定条件(最小支持度和最小置信度)的项目集合,我们把这个项目集合称作频繁项目集,又称为频繁集。我们可以将以上挖掘过程分解成2个步骤:一是扫描事务数据库D,从中找出所有满足用户指定最小支持度的频繁项集;二是利用频繁项集生成所需要的关联规则,分析项目之间的关联性。在这两步中,第二步比第一步更为容易实现,因此目前大量的研究工作主要都集中在如何进一步提高第一步中频繁集的查找效率。   1 经典Apriori算法   Apriori算法是挖掘关联规则的经典算法,由Agrawal等人于1994年提出[2],是一种具有重要影响的挖掘关联规则频繁项集的算法,其核心是基于两阶段频繁项集的递推算法,通过候选项集找到频繁项集[3]。Apriori算法使用一种称作逐层搜索的迭代方法,k项集用于探索生成(k+1)项集。每个频繁集Lk的查找生成都需要扫描一次数据库。   为了提高频繁项集产生的效率,可以用一种称作Apriori性质的重要性质来压缩搜索空间。Apriori性质是这样的:频繁项集的所有非空子集都必须也是频繁项集。将Apriori性质用于查找频繁项集的时候,只要发现一个候选集的非空子集不频繁,则可以判断这个候选集不频繁。可以将这个过程分成两个步骤:连接和剪枝。   (1)连接步:产生候选项集Ck;   (2)剪枝步:扫描数据库,计算候选项集Ck中每个候选的计数是否满足最小支持度来确定Lk。然而Ck可能很大,为了减少对数据库的扫描次数,可以利用前面所提的Apriori性质来将候选集从Ck中删除。   通过上面对算法的描述我们可以看出,尽管利用Apriori性质来减少了部分对数据库的扫描。但是,依然存在以下不足:   (1)它可能需要产生大量候选项集;   (2)它可能需要重复地扫描数据库,以计算每个候选集的频繁程度。   所以对Apriori算法的改进主要集中在降低候选集的数量和减少对数据库的扫描次数两个方面。   2 Apriori的改进   2.1 SQL语言简介   SQL(Structured Query Language,结构化查询语言)语言是一种用于关系数据库操作的通用计算机编程语言,用来存取数据以及查询、更新和管理关系数据库系统。它用select、insert、update等语句实现对数据表格的查询、插入、更新等操作。select语句用以从表中获得数据,确定数据怎样在应用程序给出。它拥有很多可用于计数和计算的内建函数,计算从列中取得的值,返回一个单一的值。其中count函数的作用是返回满足查询条件的记录的数量,通常用来计数。   2.2 改进算法描述   为了实现减少对数据库的扫描次数来提高算法效率的目的,本改进算法采用结构化查询语言SQL的select查询语句通过and运算符来连接Ck中各项,用count函数直接计算候选项集Ck在事务数据库中出现的次数,然后将这个计算出来的次数和用户指定的最小支持度作比较,实现只需要1次扫描数据库来判断Ck是否频繁,从而减少对数据库的扫描次数。   改进算法描述如下:   算法:基于SQL的Apriori改进算法   输入:事务数据库,最小支持度   输出:频繁项集   方法:   (1)根据每个项的出现次数得到频繁1-项集L1;   (2)k++;   (3)连接Lk-1生成Lk;   (4)如果 ,goto(8);   (5)否则采用SQL语句的and运算连接Ck中的各项,使用count函数计算Ck的频度和给定的最小支持度相比较,得到Lk;   (6)如果 ,goto(8);   (7)否则goto(2);   (8)输出Lk-1;   3 算法验证   我们使用相同的软硬件环境分别将经典的Apriori原算法和本文提出的改进算法实现频繁集的挖掘过程。经过编程调试,挖掘结果如下:   (1)分析5918条事务数据,2种算法结果一致。原算法运行时间4秒,改进算法需要

文档评论(0)

1亿VIP精品文档

相关文档