基于关联规则的Web日志挖掘算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于关联规则的Web日志挖掘算法
金骅;陈基漓;阮百尧;吕彦红
【摘要】分析了经典的基于关联规则的Apriori挖掘算法,对该算法在Web日志挖掘中存在的不足进行了讨论.针对这些不足,对该算法进行了改进,并介绍了算法的具体实现.经实验测试,改进后的算法具有更好的效率.
【期刊名称】《桂林理工大学学报》
【年(卷),期】2009(029)004
【总页数】4页(P561-564)
【关键词】Web日志挖掘;关联规则;Apriori算法
【作者】金骅;陈基漓;阮百尧;吕彦红
【作者单位】桂林理工大学,信息科学与工程学院,广西,桂林,541004;桂林理工大学,信息科学与工程学院,广西,桂林,541004;桂林理工大学,信息科学与工程学院,广西,桂林,541004;桂林理工大学,信息科学与工程学院,广西,桂林,541004
【正文语种】中文
【中图分类】TP301.6
关联规则是数据挖掘中极其重要的一个研究方向,最早是在大型交易事务研究中提出,目的是用来寻找用户在一次购物中所选物品之间的关联关系。
在用户访问日志挖掘研究中,人们希望通过关联规则的挖掘找到用户访问页面之间的联系,从而为网站的管理者提供网站改进资料,使网站的管理者可以对站点进行有针对性的改进
和设计,从而提高服务质量。
因此,对Web站点的经营者和管理者都具有极其现实的意义。
1 关联规则
数据挖掘中最基本的方法是关联规则挖掘,其目标是把数据项之间的关联从挖掘数据集中寻找出来。
关联规则以一些事务为研究对象,例如:在事务l中出现了A,在事务2中出现了B,在事务3中同时出现了A和B,能否发现A和B在这3个事务中出现的互相之间的规律呢?要解决这个问题可以通过关联规则挖掘来找到A
和B在这3个事务之中出现的规律。
进一步说,关联规则通过概率来描述出现A
对出现B的影响。
1.1 关联规则的相关定义[1]
1.1.1 数据项与数据项集设I={i1,i2,…,im}是m个不同项目的一个集合,每个ik(k=1,2,…,m)称为数据项(item),数据项的集合I称为数据项集(itemset),简称为项集,其元素个数称为数据项集的长度,长度为k的数据项集称为k维数
据项集,简称为k-项集(k-itemset)。
1.1.2 事务事务T(transaction)是数据项集I上的一个子集,即T⊆I,每个事务均
有一个唯一的标识符TID与之相联,则称二元组(TID,T)为数据库事务。
在不引起误会的情况下,一般简单表示为T,不同事务的全体构成了全体事务集D,即事务数据库。
1.1.3 关联规则设I={i1,i2,…,im}是所有项的集合,D是一组事务集。
D中的每个事务T是一个项的集合,并且满足T⊆I。
每一个事务T都有一个唯一的标识TID。
如果项集合X⊆I且X⊆T,则称事务T包含X。
关联规则是如下形式的一种
蕴含,即R∶X⟹Y,其中X⊂I,Y⊂I,且X∩Y=∅。
1.1.4 支持度关联规则X⟹Y在事务集合D中成立,则具有支持度s,其中s是D
中事务包含X∪Y(即X和Y两者)的百分比,它等于D中包含X和Y的事务个数与
D中事务个数之比,即概率P(X∪Y):
s(X⟹Y)=s(X∪Y)=P(X∪Y)。
支持度反映了X和Y中所含的项在事务集中同时出现的概率。
1.1.5 置信度规则X⟹Y在事务集D中的置信度c为D中包含X的事务个数与D 中同时包含X和Y的事务个数之比,即条件概率P(Y|X):
c(X⟹Y)=s(X∪Y)/s(X)= P(Y|X)。
置信度反映了在包含A的事务中,出现B的条件概率。
1.1.6 频繁项集如果项集U=(u1,u2,…,um)出现的频率大于或等于最小支持计数min_sup,即满足最小支持度阈值,则称它为频繁项集(frequent itemset),频繁k-项集的集合通常记为Lk。
1.1.7 强关联规则设有关联规则R∶X⟹Y,若(s(R)>min_sup)∧(c(R)>min_conf)均为真,则R∶X⟹Y为强关联规则。
通常可描述为:同时满足最小支持度阈值(min_sup)和最小置信度阈值(min_conf)的规则称作强关联规则。
1.2 关联规则挖掘的两个步骤
1.2.1 找出所有频繁项集发现频繁项集的算法是通过对数据进行反复搜索实现的。
这些项集的频繁度不低于预定义的最小支持度。
在每次搜索中,都从频繁项集的种子集开始,用种子集产生新的可能的频繁项集,称之为候选集合。
在搜索的同时计算这些候选集合的支持数(D对一个数据项集的支持数,即为D中包含这个数据项集的事件个数),搜索一遍后确定哪些候选集合是频繁的,这些集合成为下一次搜索的种子集。
这个过程不断重复,直到没有新的频繁项集产生为止。
1.2.2 由频繁项集产生关联规则由给定的最小置信度min_sup,在每个最大频繁项集中,寻找置信度不小于min_conf的关联规则。
2 对经典关联规则挖掘Apriori算法的分析
2.1 Apriori算法基本思想
Apriori算法是进行关联规则挖掘的核心算法[2],其基本思想是:首先通过扫描数
据集,产生一个大的候选数据项集,并计算每个候选数据项发生的次数,然后基于预先给定的最小支持度生成一维大数据集L1,然后基于L1和数据集中的数据,产生二维大数据项集L2,用同样的方法,直到生成n维大数据项集Ln,其中己不再可能生成满足最小支持度的n+1维大数据项集。
最后,从大数据项集中导出规则。
在此过程中主要包含两个操作:连接和剪枝。
连接操作:把L1与自身相连,即设I1和I2是L1的两个元素,如果
(I1[1]=I2[1])∧(I1[2]=I2[2])∧…∧(I1[k-2]= I2[k-2])∧(I1[k-1]≠I2[k-1]),则连接I1和I2得到结果项集I1[1] I1[2]…I1[k-1] I2[k-1],最终生成可能的k维数据项目候选集,记为Ck。
剪枝操作:因Ck是Lk的超集,其成员可以是频繁的,但也可以不是频繁的,此时
应先扫描数据库,得到Ck中每个候选的计数,计数值小于最小支持度计数的则把它从候选项中删除,然而这样所得到的Ck依然会很大,根据Apriori性质——任何非频繁的(k-1)-项集都不可能是频繁k-项集的子集,在检测候选项的子集时,只要其中有任意一个子集不属于Lk-1,则此候选项就可以从候选项集中删除,到此
一次剪枝过程完成并得到Lk。
2.2 Apriori算法的不足
Apriori算法一直作为经典的关联规则挖掘算法被使用。
但是,当把该算法应用于Web日志挖掘时存在着几个影响性能的问题[3-4]:
(1)在循环扫描的过程中,数据库D的大小将影响算法的性能,在数据量非常大的
时候这个问题就会更加明显,缩减循环查找过程中的数据库D的规模是算法改进
的方向之一。
(2)由频繁(k-1)-项集进行自连接生成的候选频繁k-项集数量巨大。
由Lk-1产生候
选k-项集Ck是指数级增长的,如此巨大的侯选集对时间和主存空间都是一种挑战。
(3)在刚开始的时候候选访问集会特别的大,这种情况在生成二维候选访问模式的
时候常常会发生,而在后期候选访问集会非常迅速减少。
这个问题在对Web日志进行挖掘的情况中特别突出。
3 Apriori算法的改进
3.1 改进算法的理论基础
性质1 在数据库中如果有一事务T的长度小于k+1,则通过k维频繁项集生成
(k+1)维频繁项集,那么事务T是没有必要扫描的。
性质2 如果存在k维频繁项集X={ i1,i2,…,ik},则至少存在一个j∈X能够使得|Lk-1(j)|≤k-2,因此X不是频繁项集。
其中|Lk-1(j)|的含义是(k+1)维频繁项集
的集合Lk-1中所包含j的个数。
推论1 设Xk是k维频繁项集,如果所有k-1维频繁项集集合Xk-1中包含Xk的
k-1维子项集的个数小于k,则Xk不可能是k维最大频繁数据项集。
推论2 假如某一事务不包含候选(k-1)-项集Ck-1中的任何项集,那么删除该事务对频繁j项集Lj(j≥k)的计算没有任何影响。
3.2 改进算法的实现
首先计算Lk-1中所有项目的频度,找出那些频度小于k-1的项目,然后在Lk-1
中去掉非频繁项目集而得到一个新的更小的k-1维频繁项目集的集合Lk-1′,再由Lk-1′与自身连接而直接生成候选k维数据项目集的集合Ck。
接下来在每次计算
Ck支持度的过程中,对包含Ck中任何项集的事务进行标注,在以后的扫描记数
中就不再计算,所以在计算候选项集支持度所涉及的记录数目将远远小于数据库中的实际记录数,并且随着k的增大,这个差值也不断增大,因而有效的降低了项
集的计算速度,提高了算法的效率。
针对Apriori算法在Web日志挖掘中存在的不足,在改进的算法中增加了2个方
法[5]:delete_infrequent_itemsets(Lk-1)和compress DB(Dk-1),分别用于从Lk-1中删除不可能得到k频繁项集的集合和压缩数据库。
伪代码如下:
{
L1=get_frequent_1_itemsets(D);
for(k=2;Lk-1≠Φ;k++)
{
//删除不可能得到频繁k-项集的集合
Lk-1′=delete_infrequent_itemsets(Lk-1);
//产生新的候选项集,同Apriori中原方法
Ck=apriori_gen(Lk-1′);
//扫描D
for(each transaction t∈Dk-1)
{
//压缩数据库
Dk=compressDB(Dk-1);
//获取t的子集作为候选项集
Ct=subset(Ck,t);
for(each candidate c∈Ct)
c.count++;//对候选集合的候选集计数
}
//得到满足条件的频繁k-项集Lk
Lk={ c∈Ct|c.count >= min_sup};
}
returnL =∪kLk;
}
4 性能比较
软件环境:Window XP操作系统,MySQL 5.0数据库。
硬件环境:1.4 G CPU,512 M内存,60 G硬盘。
数据为某网站2个月的Web服务器日志文件,共计300万条Request(请求),格式如图1。
在min_sup=0.7和记录数不断增长的条件下测试结果如图2。
在不同min_sup条件下测试结果如图3。
由图3可见,改进算法的执行时间比原算法耗时少,并有较好的稳定性。
图1 Web服务器日志文件格式Fig.1 Format of Web server′s log file
图2 两种算法在不同记录数下的时间性能比较Fig.2 Time comparison between two arithmetics underdifferent records
图3 两种算法在不同min_sup条件下的时间性能比较Fig.3 Time comparison between two arithmetics underdifferent min_sup
5 结论
本文针对Apriori算法在Web日志挖掘方面的不足,采用了缩减项目集和压缩数据库的方法提高执行效率,并取得了一定的效果。
事实上,Web日志挖掘还有许多算法,并且针对不同的应用,不同的算法在效率上是不同的,在下一步的工作中可考虑对各种不同算法作比较研究,并确定每一类算法大体的适用范围。
参考文献:
【相关文献】
[1]韩家炜,Kamber M.数据挖掘概念与技术[M].范明,孟小峰,译.北京:机械工业出版社,2001.
[2]Agrawal R,Imielinski T,Swami A.Mining associations between sets of items in massive databases[C]//Proceedings of the 1993 ACM SIGMOD International Conference on Management of Data,Washington D C.New York:ACM,1993:207-216.
[3]刘鑫.基于Web日志挖掘系统的设计与实现[D].哈尔滨:哈尔滨工程大学,2006.
[4]Witten I H,Frank E.数据挖掘实用机器学习技术[M].董琳,邱泉,译.北京:机械工业出版社,2006.
[5]孙金华.基于关联规则的Web日志挖掘研究与实现[D].南昌:南昌大学,2007.。