WEB日志数据预处理算法研究与实现
Web日志挖掘是Web数据挖掘研究领域中一个最重要的应用方面。而数据预处理在Web日志挖掘过程中起着至关重要的作用。文中深入探讨了数据预处理各环节的主要任务,提出了一种数据预处理算法,并实现。实验结果表明,本算法能很好的分割服务器日志为单独的用户和用户会话模式。
标签: Web日志挖掘 数据预处理 算法
一、引言
在Web数据挖掘中,最重要的应用是Web日志挖掘,即通过挖掘服务器的日志文件,得出用户的访问模式,从而可以进一步分析和研究日志记录的规律,来改进网站的组织结构及其性能,构造自适应网站;还可以通过统计和关联分析,增加个性化服务,发现潜在的用户群体,这在电子商务等领域是很有市场的。
Web日志挖掘主要分为三个步骤:
1.数据预处理
根据挖掘的目的,对原始Web日志文件中的数据进行提取、分解、合并,最后转化为适合进行数据挖掘的数据格式,并保存。
2.模式识别
运用各种算法对处理后的数据进行挖掘,生成模式。
3.模式分析
进行用户访问模式的分析,从而将有价值的模式提取出来的过程。
其中,数据预处理这个环节是整个过程的基础和实施有效挖掘算法的前提。本文深入探讨了数据预处理各环节的主要任务,并提出了新的数据预处理算法,实现之。
二、Web日志预处理过程
Web服务器日志中的内容非常丰富,而且用户访问和服务器资源不是一对一的关系,比如,服务器端日志可能记载了一个用户可以在多个客户端提交请求,多个用户也可以在一个客户端提交请求。因此,在实施数据挖掘之前,首先必须对Web log 文件进行数据清洗、用户识别、会话识别、页面过滤、路径补充等一系列的工作。
1.数据清洗
是指删除Web日志中与数据挖掘不相关的冗余项,同时将有用的Web日志记录信息转换为适当的数据格式。
2.用户识别
是指从日志中的每一条记录中识别出相应的用户。
3.会话识别
就是将用户的访问记录划分成单个的会话,不同用户访问的页面属于不同的会话。
4.路径补充
根据引用日志和网络拓扑结构提供的信息对用户访问路径进行完善,推断出用户从访问缓存中访问的页面信息。
三、数据预处理算法实现
1.概念定义
进行操作的数据源是服务器端的日志文件。现将服务器日志中的每一个记录用一组数学符号来表示如下:
定义1:服务器日志中的一个页面视图L可用如下的符号定义:
L=[A∶V] V=
A={a1,a2,…,ak}
每一个页面视图包括一个页面的定义vi(通常为这个页面Url),参考页面文件ri(通常为这个页面的Referer),访问时间ti(通常为这个页面的Data或叫Time),至于{d1,d2,……,dm}则为客户端向服务器通过表单发送的数据项及值对。
定义2:日志中的记录经过预处理过以后,所形成的单个用户对单个站点的一次访问的数据定义如下:
设L是服务器日志文件中记录的集合,其中的每一个记录L均适合上面定义的记录的格式,这里L∈L。每一个L包括客户端IP地址L.IP,客户端浏览器L.agent,客户端访问的页面的Url为L.url,访问页面时间L.time 等。则用户的
一次会话或叫事务t为下式:
t=
这里满足:1≤k≤m,ltk∈L,ltk.ip=ipt,ltk.agent=agentt
2.具体的算法实现
(1)数据清理,简单的就是检查每一个日志记录L的Url的扩展名,消除扩展名为gif,jpg,jpeg的日志记录就可以了。
(2)首先将原日志文件划分成相同的IP和Agent的用户访问的序列集的形式,集合中的每一个序列形如Hi={f1,f2,…,fn},每一个Hi执行算法(3)。
(3)将相同的IP和Agent的用户访问序列划分成用户的一次访问序列。
①主程序
输入:经过清洗过的日志记录L。
输出:用户会话文件
对于每一个Hi={f1,fn,……fn}是一个时间序列的日志记录集,其中lj,fj,rj,tj分别定义日志记录的页面视图,Url,Referer,访问时间Time。
定义T为一个时间戳:
for each unique IP/Agent Pair do
for each lj do
if((tj-tj-1)>T)∨rj∈Hthen
f Timeout()then i++;
Add lj to Hi else
assign=Distance(H,rj)
add rj to Hassign // Hassign是包含rj页面视图的序列集中,rj距离最短的那
个序列集
end.
②Timeout()函数
此函数完成的主要功能是测试包含lj的请求页的rj页,在Hi中是否已经过时了,也就是是否已经大于T。如果大于T返回真,否则返回假。
value=true;
For each Hi∈H do
If lj∈H
If(tj-tj-1)∈T
value=false end
return value
③Distance(H,rj)函数
Distance(H,rj)函数主要是计算页面的距离函数,当一个日志记录视图的参考页面rj为不同的Hi所包含时,确定该页面文件是属于那一个序列集。
对于每一个Hi={f1,f2,…,fn}是一个时间序列的日志纪录集,设f是一个日志记录文件:
set min=∞ // 设置页面距离;
for each Hi H do
if rj Hi
di=Hi.size()-Hi.index(),//计算页面距离;Hi.size()序列集的总页数Hi.index()该请求页在序列集中的位置;
ti=hi.tn-Hi.tj
if(di min=di else if(di=min) if(ti=tassign) assign=i tin=tj return assign end 四、实验结果 本文引用南京工业大学网络中心的2005年5月24日的日志文件542条日志记录作为实验数据,其实验结果如下: 1.日志数据 #Fields:date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent)sc-status sc-substatus sc-win32-status 2005~05~24 00:19:13 202.119.248.87 GET/styles/default.css-80-218.13.136.59 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.0;+Poco+0.31;+TencentTraveler+) 200 0 0 ………. 2005~05~24 23:54:12 202.119.248.87 GET/images/weather/0.gif-80-218.58.78.114 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1;+Maxthon) 200 0 0 2.运行结果 经过数据预处理,共有77个不同的IP用户,共包括111段会话。实验证明,此算法效果良好。 3.运行界面剪切如下: 五、结论 由于日志文件不同于传统的数据库文件,所以其预处理方法也有明显的差别。本文深入讨论了对Web日志文件进行数据清洗、用户识别、用户会话识别、路径补充等预处理方法,并实现。实验结果表明,本算法能很好的分割服务器日志为单独的用户和用户会话模式。 参考文献: [1]KamdafT JoshiA:On Creating Adaptive Web Servers Using Weblog Mining [EB/OL].http//:/citeseer.nj.nec.com/kamdar00creating.html.2002 [2]Bucbber AG,Anandss,MulvennaMD,et al.Discovering Internet Marketing Intelligence Through Weblog Mining [EB/OL].http://citeseer.nj.nec.com/244461.html,1998 [3]张健沛 刘建东 杨 静:基于Web的日志挖掘数据预处理方法的研究[J].计算机工程与应用,2003(10):191~193 “本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文” 因篇幅问题不能全部显示,请点此查看更多更全内容