基于关联规则的日志分析系统的设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第44卷 增刊厦门大学学报(自然科学版)
Vo l.44 Sup. 2005年6月
Journal of Xiam en U niversity (Natural Science)
Jun.2005
基于关联规则的日志分析系统的设计与实现
收稿日期:2005 01 21
基金项目:福建省自然基金项目(A0310008),福建省高新技术研究
开放计划重点项目(2003H 043),厦门大学中央行动计划院士基金项目(X01122)资助
作者简介:文娟(1982-),女,硕士研究生.
文 娟,薛永生,段江娇,王劲波
(厦门大学计算机科学系,福建厦门361005)
摘要:网上广告势必成为中国广告业不可取代的部分,广告人总是期望广告能获得最好的效果.为此,本文设计并实现了
一个基于关联规则数据挖掘的日志分析系统,数据挖掘引擎在实现过程中针对挖掘数据的特点对A prior i 算法进行了改进,并通过仿真数据库对挖掘结果进行了验证,日志分析系统获得的 知识 可以直接用于改善Web 的信息服务.
关键词:日志分析系统;数据挖掘;关联规则
中图分类号:T P 311 文献标识码:A 文章编号:0438 0479(2005)Sup
0258 04 数据挖掘技术在科学发现、商业应用、市场营销、金融投资等领域都有广阔的应用前景.目前,大型数据挖掘系统有Intelligent Miner,SPSS,DBM iner 等,国
内也有研究[1,2],但是,这些大型的数据挖掘系统功能布局相对不合理,并且价格昂贵,当实现某些行业的某些特定目的的数据挖掘时,没有突出的特色.
网上广告已经成为广告业中不可忽视的部分,这涉及如何从网站上丰富的数据中提取有效信息的问题.W eb 日志挖掘可以发现用户的浏览模式,用于改进Web 服务器的设计以方便用户使用和提高Web 服务器的性能,增加个性化服务和在电子商务中发现潜在的客户群等.目前用于Web 日志挖掘的关联规则算法有FP [3]
,Tv p [4]
,Apriori [5]
等.本文以邮政网络的日志分析为例,实现了基于Aprior i 算法的关联规则的分析系统,对网站日志进行挖掘分析,得到网页组相应的最大频繁项集,即商家决策者所感兴趣的 黄金网页组合 ,据此改善Web 的信息服务,有效地提高网站的效益,同时在实现过程中针对挖掘数据的特点对Apri o ri 算法做了一些改进,并通过仿真数据库对挖掘结果进行了验证.
1 日志分析系统的基本模块
本文基于关联规则的日志分析系统是专门为邮政部门优化网络系统开发的.该系统分为数据预处理,数据挖掘和知识转化3个模块.数据预处理模块将原始日志文件先导入数据库管理系统SQL Ser ver 2000
中,然后数据过滤得到用户会话文件,即数据库的表,最后生成布尔型事务数据库,事务数据存于文本文件中;数据挖掘引擎采用关联规则中的经典算法Apriori 算法实现,并针对挖掘数据的特点对Apiro ri 算法进行了改进;知识转化模块将挖掘得到最大频繁项集及相关信息转化成知识,生成强关联规则,网站设计者可根据这些强关联规则改善信息服务.整个系统的模块结构如图1所示.
图1 日志分析系统的模块结构
F ig.1 M odule structur e of W eblog analysis system
2 日志分析系统的具体实现
2.1 数据预处理
数据预处理一般根据具体源数据的数据要求进行再加工,如检查数据的完整性及数据的一致性,对丢失的数据进行填补,消除 脏 数据等.常见的预处理方法有:数据清理、数据集成、数据变换和数据归约.该系统的数据预处理不仅面临数据清理问题,还需要将数据转化成数据挖掘引擎需要的数据形式,即如何将源数据转换成事务数据库的问题,所以,预处理分为数据导入,数据清理和生成布尔型事务数据库三步来实现.2.1.1数据导入和清理
挖掘的原始日志数据如下,且保存在文本文档中.
例:2003 03 3100:00:16211.147.212.111 192.168.0.2 80G ET/pubser v/scr ipt s/yo uchu/pos.asp 200M o zilla/4.0+ (compatible;+M SIE+5.5;+W indow s+N T+5.0)+Fetch+ AP I+Request
我们使用SQL Server2000作为数据库管理系统,它的集成工具数据转换服务DT S可实现数据库迁移.DTS能合并SQL Serv er2000、ORACLE、DB2、文本文件、EXCEL、ACCESS、PARA DOX等各种不同数据源的数据,并且可以在迁移的同时实现对数据的过滤和清理.利用DTS的导入向导将邮政网络所提供的日志数据源先全部导入数据库dw的表t_dw_log中,其实,还可以编写导入的DT S包或者存储结构,都有一次编写、多次使用的优点.
分析数据库dw中数据源表t_dw_log中的各属性,只留下对日志挖掘有贡献的属性域c_date、c_ tim e、c_ip和cs_uri_stem.可以直接通过SQ L语言实现对数据源表t_dw_log的清理,过滤掉对挖掘没有意义的属性列,也可以编写DT S包过滤源数据,利用DT S提供的工具 执行SQ L任务 ,执行DTS包,得到数据清理后的表t_w eblog.该DT S包可重复使用. 2.1.2生成布尔性事务数据库
根据邮政部门的实际需求,在将数据库dw中的表t_w eblog转化成布尔型事务数据库时,处理方法为:(1)从表t_w eblog中选择出访问率高于给定支持度的的网页作为研究对象.(2)将访问记录整合成事务,整合规则:如果同一个ip的相邻的log记录时间相差不到半个小时,那就可认为是同一个事务.将访问记录整合成事务还可以采用其他的方法,如Rough Set.
(3)最后,将每个事务对属于研究对象的网页的访问情况记录下来,生成布尔型事务数据库.
整个数据预处理模块构造在数据库关系系统SQ L Ser ver2000上,用Delphi实现.该可执行程序中通过ADOConnectio n控件建立与数据库的连接,通过ADOQuery控件进行对数据库的SQL操作,可移植性强.程序运行生成布尔型事务数据库,同时,还将生成数据挖掘算法的入口参数文件,以及访问率高于给定支持度的网页网址的文本文件.
2.2 数据挖掘
数据挖掘模块中要实现关联规则的找寻,即找到相应的频繁集.数据挖掘引擎采用关联规则中的经典算法Apriori算法,并针对挖掘数据的特点对Apiror i 算法进行了改进,为了提高数据挖掘工具的效率和可移植性,整个数据挖掘引擎用Jav a实现.
2.2.1Apriori算法
Apriori算法是一种最有影响的挖掘布尔关联规则频繁项集算法.它使用一种逐层搜索的迭代方法,利用k 项集探索(k+1) 项集.首先,找出频繁1 项集的集合.该集合记作L1.L1用于找频繁2 项集的集合L2,而L2用于找L3,如此下去,直到不能找到频繁k 项集为止.为了提高逐层产生频繁项集的效率,可用Apriori性质压缩搜索空间,即:频繁项集的所有非空子集都必须也是频繁的.将Apriori性质用于算法中,由频繁项目集L k-1生成候选项目集C k分成两步进行:第一步:连接步.为找L k,通过任意两个满足条件的L k-1连接产生候选k 项集集合,记作C k.不妨设l1和l2分别是两个不同L k-1中的项集.记号l i[j]表示l i 的第j项.为方便计,假定事务或项集中的项按字典次序排序.如果该两个不同L k-1的前(k-2)个项都相同,则说明该两个频繁项目集L k-1是可连接的,执行连接L k-1 L k-1(其中L k-1的元素是可连接的).即两个不同的L k-1对应的项集l1和l2满足条件:
(l1[1]=l2[1]) (l1[2]=
l2[2]) (l1[k-2]=
l2[k-2]) (l1[k-1] l2[k-1])
连接L k-1 L k-1产生的结果项集是:
l1[1]l1[2] l1[k-2]l1[k-1]l2[k-1].
第二步:剪枝步.扫描数据库,确定C k中的每个候选项集的计数,从而确定L k.然而,当C k中的候选项集的数目很多时,涉及的计算量就很大.为了提高效率,可用A priori性质压缩C k,即任何非频繁的 项集都不可能是频繁(k-1) 项集的子集,可得:如果一个候选k 项集的(k-1) 子集不在L k-1中,则该候选项集也不可能是频繁项集,便可将它从C k中删除.这种子集测试可使用所有频繁项集的散列树快速完成.
2.2.2Apriori算法的改进及实现
定义1 超集,如果存在有序集合{X1,X2, , X n},它的任意子集{X j, ,X k}(其中k j),那么该子集对应的超集为{X j, ,X k,X k+1},{X j, ,X k, X k+2}, ,{X j, ,X k,X n}.例:有序集合{1,3,4,6,7}的子集{1,4},对应的超集为{1,4,6}和{1,4,7}.
定义2 T扫描数据库,为找C k扫描数据库时,当事务数据库中某条事务的代数和小于k时,跳过该条数据,这种扫描方式就称为T扫描数据库.这样,第k+ 1次扫描事物数据库D时需要扫描的事务数相对第k 次一般是减少的,而且k越大,扫描事务数据库的效率也提高得更明显.例如:为找3 项集时,扫描数据库时遇到事务{010010},由0+1+0+0+1+0=2<3,跳过该事务往下处理其他事务,为找4 项集时,就不需要再扫描该事务了.
259
增刊 文 娟等:基于关联规则的日志分析系统的设计与实现