[摘 要] 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=1
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 assign=i 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格式閱讀原文”