基于关联规则算法的改进研究概要.docx
- 文档编号:29968476
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:10
- 大小:125.49KB
基于关联规则算法的改进研究概要.docx
《基于关联规则算法的改进研究概要.docx》由会员分享,可在线阅读,更多相关《基于关联规则算法的改进研究概要.docx(10页珍藏版)》请在冰豆网上搜索。
基于关联规则算法的改进研究概要
第5卷第3期2007年9月职教与经济研究
VocationalEducationandEconomicResearchVo.l5No.3Sept.,2007
收稿日期:
2007-08-27
作者简介:
李新良(1974-
女,娄底职业技术学院讲师,湖南大学在读研究生。
研究方向:
数据挖掘与软件开发。
基于关联规则算法的改进研究
李新良
(娄底职业技术学院,湖南娄底417000
摘要:
目前,已经提出了许多挖掘关联规则的算法及其变型,其中最著名的是Apriori算法,但传统的算
法效率太低,为了解决这些问题,提出了一种快速更新的关联挖掘算法。
关键词:
数据挖掘;关联规则;频繁项集;Apriori算法
中图分类号:
TP3文献标识码:
A文章编号:
(200703-0054-05
ResearchingtheImprovementofAlgorithmonAssociationalRules
LIXin-liang
(LoudiVocational&TechnicalCollege,LoudiHuman417000
Abstract:
Nowadays
alotofalgorithms,includingthewell-knownAprior,ihasbeenputforward.
Tosolvetheproblemsoflowefficiencycausedbythetraditionalalgorithm,anewalgorithmnamedMiningAlgorithmforAssociationisproposed.Keywords:
datamining;associationalrule;frequencyitemse;tApriorialgorithm数据挖掘是数据库研究、开发和应用最活跃的分支之一。
它不满足于对数据的简单查询,而是想从众多的数据中找出更多有用的东西(知识,所以数据挖掘的过程又被称为知识发现的过程。
从某种意义上讲,数据挖掘的自主性使得计算机具有一定的智能,可以实现许多人力所无法完成的事情,让计算机对人类的辅助作用得到更大的发挥,信息资源也得到更大的利用。
关联分析是数据挖掘诸多功能中的一种,也是最为重要和应用最广泛的一种。
关联分析用于发现关联规则,关联规则描述了给定数据集的项之间的有趣联系。
通过这些描述,可以从大量的事务记录中发现有趣的关联关系,可以帮助制定许多重大决策。
1关联规则挖掘1.1基本概述
关联规则挖掘问题是R.Agrawal等人于1993年在文献中首先提出来的
[1]
。
关联规则挖掘是指
从一个大型的数据集中发现有趣的关联或相关关系,即从数据集中识别出频繁出现的属性值集,也称为频繁项集(FrequentItemsets,简称频繁集,然后再利用这些频繁集创建描述关联规则的过程
[4]
。
关联规则中的支持度和置信度是两个规则兴趣度的度量,它们分别反应了所发现规则的有用性、确定性、新颖性和简洁性。
通常,用户为了达到一定的要求,都需要指定规则必须满足的支持度和信任度的门限,称其为最小支持度和最小信任度。
1.2关联规则挖掘问题
关联规则是描述数据库中数据项之间存在的潜在的关系规则。
问题可以描述如下:
I={i1,i2,...,im}是所有项的集合,相当与商品的种类集合。
D是所有事务的子集,相当于数据库中的记录
集合。
每个事务T由I中的若干项组成,是I的子集,用唯一的ID标识,记为T={t1,t2,...,tn},t!
i相当于每次交易中的商品列表。
假设X,Y是数据项集,X中含有的项的数目为k,称为k∀∀∀数据项集,是I的子集。
关联规则表示为:
(T中包含X((T中包含Y。
意义在于一次交易中(数据库中的一条记录存在X项目,意味着该交易中也存在Y项目。
通常简写为X(Y,X称为关联规则的前项,Y称为该关联规则的后项,(称为关联操作。
关联规则挖掘问题可以分为两个子问题:
(1找出事务数据库中所有大于等于用户指
定的最小支持度的数据项集,即具有最小支持度的数据项集。
(强项集
(2利用最大数据项集生成所需要的关联规则,根据用户指定的最小置信度规则的取舍,最后得到强关联规则。
2关联规则的算法
2.1Apriori算法
Apriori算法是关联规则是最典型的算法,它通过对数据库D的多趟扫描来发现所有的强项集。
该算法的流程如下
:
该算法有如下两个基本性质:
性质1:
任何强项集的子集必定是强项集。
性质2:
任何弱项集的超集必定是弱项集。
Apriori算法[6]
用代码描述如下:
Inpu:
tDatabaseDoftransactions;minimumsupportthresholdMinsupportMethod,
Outpu:
tL1frequentitemsetsinDL1={Large1-itemsets};
for(k=2;Lk-1#(;k++dobeginCk=apriori_gen(Lk-1,minsupport;/*生成候选k-项集*/
foralltransactionst!
Ddobegin
Ct=subset(Ck,t;/*候选集Ck中提取包含在事务t中的候选k-项集*/
forallCandidatesC!
CtdoC.Count++;end
Lk={C!
Ck|C.Conut∃minsupporrt};Answer=UkLk;/*求L的和*/函数Apriori_gen按如下方式分两步进行工作:
(1合并InsertintoCkSelectP.item1,P.
item2,%,P.
itemk-1,
Q.itemk-1
FromLk-1P,Lk-1Q
WhereP.item1=Q.item1,%,P.itemk-2=Q.itemk-2,P.itemk-1=Q.itemk-1;
(2修剪:
如果k-项集C!
Ck的某(k-1子集不是(k-1-强项集,则将C从候选集Ck中删除。
forallitemsetsC!
Ckdoforall(k-1-subsetsbofcdoif(bLk-1thenDeleteCfromCk
Apriori_gen函数充分利用了前述的性质来生55
总第15期李新良:
基于关联规则算法的改进研究
速度和扫描数据库的速度均有较大提高,算法的效率得到较大改善。
2.2Apriori算法的问题描述
以上的关联分析Apiori算法,在应用时会遇到项集生成瓶颈[2]的问题。
即由于生成的侯选项集太多而造成算法效率的急剧降低。
同时,过多的侯选项集可能会生成大量的规则,怎样从中选择出用户感兴趣的规则成为了另一问题。
而生成过多侯选项集的原因,主要有两种:
(1被挖掘数据库的容量很大;(2用户选择的支持度阈值过小。
文献&2∋提出了一种无冗余快速关联规则发现算法,该算法基本原理与Apriori算法相似,但采取了不同的计算候选项集支持度的方法。
减少了I/O操作而提高效率,但没有有效地利用频繁项集中的特性,下面提出了一种快速发现关联规则的算法。
3改进的算法
3.1快速发现关联规则算法
为解决Apriori算法中存在问题:
生成较小的候选项目集,即尽可能不生成和计算那些不能成为频繁项集的候选项集。
它利用了这样一个基本性质:
即一个频繁项集的任意子集必定是频繁项集。
对于一个给定的强项集L,可首先生成以一个数据项为结果的关联规则;然后,利用这些规则的结果和前述的Apriori_gen函数,生成所有可能从强项集L中产生的、以两个数据项为结果的潜在规则,即候选规则,最后,检验这些候选规则的置信度,若其置信度满足给定的最小置信度mincon,f则得以两个数据项为结果的关联规则,以此类推。
因此,关联规则发现快速算法的代码描述如下:
forallLargek-itemsLk,K∃2dobeginH1={ConsequentsofrulesderivedfromLkwithoneitemintheConsequent};
Callap_genrules(Lk,H1;/*由以单个数据项为结果的规则生成以多个数据项为结果的所有规则*/
end
其中:
ap_genrules函数是以m个数据项为结果的规则集Hm生成以m数据项为结果的规则集Hm+1的递归函数,ap_genrules函数的基本代码描述:
ap_genrules(Lk,Hm
if(k>m+1thenbegin
1m
forallhm+1!
Hm+1do
beginConfidence=Support(Lk/Support(Lk-
hm+1
if(Confidence∃minconfidencethen
Outputtherule(Lk-hm+1?
hm+1withConfidence=contandSupport=Support(Lk;
elseDeletehm+1fromHm+1;
end
Callap_genrules(Lk,Hm+1;
End
3.2尚未解决的问题描述
快速发现关联规则算法能尽快地发现候选集,但在关联规则挖掘过程中,为发现事先未知的关联规则,用户必然要不断反复调整最小支持度和最小置信度这两个门限值,则对于新的最小支持度,须将Apriori算法重新运行一遍,所有的强项集都必须从头进行计算,在原最小支持度下进行的强项集的计算都被浪费掉,不利于高效发现新的最小支持度下的关联规则。
3.3强项集的快速更新算法
为解决反复改变最小支持度和最小置信度带来的统一资源浪费问题,提出一种强项集的快速更新算法。
假设事务数据库不变,当最小支持度发生变化时,在Apriori算法发现的最小支持度下的强项集基础上高效地生成新的强项集[6]。
给定事务数据库D,设原最小支持度为minsup,Lk(k=1,2,%,n1为此时k-强项集;新的最小支持度为minsup(,Lk(k=1,2,%,n2为此时k-强项集的集。
当最小支持度发生变化时,可以分为如下两种情况:
(1minsup(﹥minsup,此时原Lk中的某些强项集可能不再满足新的最小支持度而成为弱项集。
(2minsup(<=minsup,此时原Lk中的所有强项集在新的最小支持度也成为强项集。
对于第一种情况,新的强项集必然包含在原强项集中,即Lk'Lk。
同时,强项集的更新很直观,只要利用原强项集的支持度计数域Count重新进行判断即可。
其算法的基本代码描述如下:
最小支持度增大时的强项集更新算法(minsup(>minsup:
for(k=1;kn1;k++do
beginLk=∗{c!
Lk|c.count∃minisuppor,t};End
w
56职教与经济研究总第15期
最小支持度减小时的强项集更新算法(minsup(<=minsup:
L12={newlarge1-itemsets};L11=L1;L1(=L11+L12;
for(k=2;Lk-1(#(;k++do
beginCk0=apriori_gen(Lk-11-Lk;Ck2=apriori_gen(Lk-12;Ck3=;
for(i=1;ik-1;k++do
beginCk3=Ck3+Ck3_gen(Li1,Lk-i2,Lk-13;end
foralltransactionst!
Ddo
beginCt0=subset(Ck0,t;/*在候选集Ck0中提取包含在事务t中的候选k-项集*/
forallcandidatesc!
Ct0doc.Count++;Ct2=subset(Ck2,t;/*在候选集Ct2中提取包含在事务t中的候选k-项集*/
forallcandidatesc!
Ct2doc.Count++;Ct3=subset(Ck3,t;/*在候选集Ck3中提取包含在事务t中的候选k-项集
forallcandidatesc!
Ct3doc.Count++;end
end
Lk0={c!
Ck0|c.Count∃minsup(};
Lk2={c!
Ck2|c.Count∃minsup(};
Lk3={c!
Ck3|c.Count∃minsup(};
Lk1=Lk0+Lk;Lk(=Lk1+Lk2+Lk3;
end
Answer=+kLk(;
4算法检验及性能分析
4.1算法检验
在计算机上用VC++实现了上述算法,并利用模拟测试数据集分别对产生强项集的apriori算法和更新算法进行了验证,比较了它们的运行结果和算法的执行时间。
采用随机方式生成事务数据记录数为800个的测试数据集,其数据项用数据项目数为10。
验证计算测试数据集在800个记录的六种情况下进行,最小支持度分别为0.275,0.25,0.225,0.200,0.175,0.15,0.135和0.125。
运算表明:
两种算法在上述各种最小支持度下所得到的强项集是相同的,更新算法的时间更短。
当最小支持度增大时(即minsup(>minsup,更新维护算法的效率远优于Apriori算法;当最小支持度减小时(即minsup(<=minsup,两种算法在各种情况下执行时间的运算结果(见下表
记录数为800条时两算法的运行时间对比表
表1记录数为800条时两算法的运行时间对比表
算法
最小支持度
0.2750.250.2250.2000.1750.150.1350.125Apriori算法0.820.811.743.163.564.017.9210.12
更新维护算法原
最
小
支
持
度
0.275---0.711.562.892.993.696.148.660.25------1.442.782.453.346.018.010.225---------2.092.333.215.237.450.200------------1.982.174.887.230.175---------------2.224.327.010.15------------------4.126.450.135---------------------5.21
从验证结果可以看出,更新维护算法的运行速度比Apriori算法快,其运行速度的改善程度取决于新旧最小支持度的差异和其强项集的分布情况。
当新旧最小支持度的差异较小,且原最小支持度下的强项集Lk较大时,更新维护算法的效率可以得到较大的提高。
4.2性能分析
在minsup(>minsup的情况下,由于算法只需要利用原强项集的支持度计数域重新进行判断,而不需要重新生成候选集,更不需要对数据库进行扫57
总第15期李新良:
基于关联规则算法的改进研究
描。
因此,在这种情况下,算法的效率将大大提高。
在minsup(<=minsup的情况下,算法效率提高的关键在于高效地生成了较小的候选集。
主要有以下几方面:
首先,在第一趟扫描数据库时,Apriori算法需要对数据库的全体数据项集I中的所有单个数据项进行支持度计数以生成I-强项集,而更新算法只需要对(I-L1中的单个数据项进行支持度计数;其次,在后续的第k趟扫描数据库中,Apriori算法中只需要进行支持度计数的候选集为Cka=Apriori_gen(lK-1(,而更新算法需要进行支持度计数的候选集为Ck(=Cka-Lk,显然,Ck(比Cka小,则算法的计算量减少,而且Lk越大,算法效率提高越明显;第三,在生成候选集的修剪步骤中,Apriori算法必须检查整个Lk-1(才能进行有效的修剪,而更新算法在生成Ck(的三个子集Ck0,Ck2,Ck3时,只需要对其对应的Lk-11,Lk-12和Lk-13单独进行检查就能实现有效的修剪。
由于Lk-11,Lk-12和Lk-13都是Lk-1(的子集,因此,更新维护算法中修剪步骤的检查范围明显比Apriori算法中修剪步骤的检查范围小,其修剪的效率也得以改善。
因此,更新算法在最小支持度发生改变而更新强项集意义下优于Apriori算法。
5小结
本文从关联规则的典型算法Apriori算法为基础,介绍了该算法的原理及框架结构,研究了Apriori算法的流程;在此基础上提出了一种快速的更新式算法,并对两者的性能进行了比较,给出了结论,更新算法在最小支持度发生改变而更新强项集意义下,所需的1/O次数较少且内存开销适中,减少了发现的规则数量,同时提高了规则发现的速度。
故优于Apriori算法。
该算法应用领域非常广,更新算法在现实生活有非常重要的现实意义。
(责任编辑:
刘康民
参考文献:
[1]AgrawalR,Imielinski工SwamiA.Miningassociationrulesbetween!
setsofitemsinlargedatabases[C].ProceedingsoftheACMSIGMODconferenceonmanagementofdata,1993.
[2]吴伟平,林馥,贺贵明!
一种无冗余的快速关联规则发现算法[J].计算机工程,2003(8:
90-91!
[3]何小东,刘卫国!
数据挖掘中关联规则挖掘算法比较研究[J].计算机工程与设计,2005(5:
1265-1267!
[4][美]格罗思R.Dataminingbuildingcompetitiveadvantage[M].西安:
西安交通大学出版社,2001.
58职教与经济研究总第15期
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 关联 规则 算法 改进 研究 概要
![提示](https://static.bdocx.com/images/bang_tan.gif)