李春生,豆立憲,張可佳,劉 濤,鄒林浩
(東北石油大學(xué) 計(jì)算機(jī)與信息技術(shù)學(xué)院,黑龍江 大慶 163318)
通過對(duì)企業(yè)員工的web日志的數(shù)據(jù)挖掘,能夠更加科學(xué)有效地監(jiān)督管理員工,數(shù)據(jù)挖掘的核心工作之一就是對(duì)原始數(shù)據(jù)的預(yù)處理,它影響到數(shù)據(jù)分析結(jié)果的準(zhǔn)確度。但當(dāng)前面向web日志的數(shù)據(jù)預(yù)處理方法沒有考慮到復(fù)雜web日志數(shù)據(jù)格式的問題,浪費(fèi)了過多的人力與時(shí)間,缺乏智能性且不夠高效。通過專家系統(tǒng)自動(dòng)對(duì)復(fù)雜web日志數(shù)據(jù)格式的判別,將對(duì)應(yīng)的web日志格式進(jìn)行數(shù)據(jù)清洗,完成數(shù)據(jù)預(yù)處理。能夠很大程度地節(jié)約時(shí)間與人力,相對(duì)于當(dāng)下web日志數(shù)據(jù)的預(yù)處理方法更加智能高效。
由于專家系統(tǒng)其技術(shù)特點(diǎn)能應(yīng)對(duì)復(fù)雜的日志格式,因此應(yīng)用專家系統(tǒng)能很大程度地實(shí)現(xiàn)自動(dòng)對(duì)復(fù)雜web日志數(shù)據(jù)格式的判別,彌補(bǔ)傳統(tǒng)方法的不足。
專家系統(tǒng)定義:經(jīng)由推論引擎、知識(shí)庫及接口為基礎(chǔ)而組成的系統(tǒng)即是所熟知的專家系統(tǒng)。專家系統(tǒng)的職責(zé)就是對(duì)社會(huì)生活中的問題進(jìn)行一定的判斷解釋及認(rèn)知。只是在這個(gè)特別的領(lǐng)域中有著不同的對(duì)于認(rèn)知定義的解釋。雖然當(dāng)下還沒有明確的定義,但是只要當(dāng)設(shè)計(jì)的系統(tǒng)在執(zhí)行的信度及效度、對(duì)專業(yè)知識(shí)的需求、復(fù)雜性等能夠與專家不相上下的時(shí)候,就可以把該系統(tǒng)稱為專家系統(tǒng)[1]。
由于基于規(guī)則的專家系統(tǒng)衍生出的一種推廣,即基于框架的專家系統(tǒng),本身具有一種區(qū)別于其余專家系統(tǒng)的編程風(fēng)格。當(dāng)初提出用框架來表示數(shù)據(jù)結(jié)構(gòu)的人是Minsky。很多概念的槽、知識(shí)、名稱包含于框架之中,當(dāng)符合這個(gè)概念的某些實(shí)例出現(xiàn)時(shí),就可以把和這個(gè)實(shí)例相關(guān)的特定值輸入到當(dāng)前框架中。編程語言中引入框架的概念后,就形成了面向?qū)ο蟮木幊碳夹g(shù)。所以目前可以得出一個(gè)結(jié)論:在某種程度上面向?qū)ο蟮木幊碳夹g(shù)等于基于框架的專家系統(tǒng)。但由于當(dāng)下日志的總字段長短不一,屬性不同,所以基于框架的專家系統(tǒng)不適用于日志類型的判別。
采用以前存在的案例來推理解答目前問題的系統(tǒng),即基于案例推理的專家系統(tǒng)。求解的順序:第一步,得到問題,并開始對(duì)以往的案例進(jìn)行匹配,直到找到跟目前問題最匹配的案例;第二步,基于第一步找到的當(dāng)前問題最合理的匹配案例,就將之前案例所用的解決方案運(yùn)用到現(xiàn)在,如果并沒有找到合適的匹配案例,將當(dāng)前的作為新的案例并加入到案例庫。綜上所述,基于案例推理的專家系統(tǒng)能夠不斷地學(xué)習(xí)新的經(jīng)驗(yàn),并不斷進(jìn)步。
當(dāng)然,如何從過往的案例中找出最合理的案例并與當(dāng)前的問題進(jìn)行匹配是當(dāng)前基于案例推理的專家系統(tǒng)比較大的一個(gè)難點(diǎn)。在案例尋找過程中,需要將一些過分相似的案例進(jìn)行刪除,因?yàn)槿鐖D案例庫太大,將會(huì)影響案例匹配的效率。目前來說一些主流的匹配算法有:徑向基函數(shù)網(wǎng)絡(luò)、k-近鄰法、最近鄰法。但基于案例的分析相對(duì)于基于規(guī)則的推理有一定的不準(zhǔn)確性[2]。
由于該類系統(tǒng)是在專家系統(tǒng)中最早被研發(fā)出來的,同樣也是基本的結(jié)構(gòu)被用來組成專家系統(tǒng)。由于使用的規(guī)則來源于產(chǎn)生式定義,所以,在一般的狀況下,在基于規(guī)則的專家系統(tǒng)中就會(huì)用“if……then……”的類型來解決問題。環(huán)境與行為的關(guān)系一般會(huì)被用一種心理學(xué)術(shù)語來進(jìn)行描述,即產(chǎn)生式。而專家系統(tǒng)在最開始是從其中演變而來的。斯坦福大學(xué)設(shè)計(jì)的第一個(gè)專家系統(tǒng),它的主要功能是判定物質(zhì)的結(jié)構(gòu)。而且在產(chǎn)生式的系統(tǒng)當(dāng)中,知識(shí)被分割成了兩個(gè)方面,靜態(tài)的系統(tǒng)是一方面,用事實(shí)來表示,例如事件與事物及其相互之間的聯(lián)系;推理的行為及其推理過程是另一方面,用產(chǎn)生式的規(guī)則來實(shí)現(xiàn)。因?yàn)樵擃愊到y(tǒng)的知識(shí)庫主要用來存儲(chǔ)規(guī)則,所以該類系統(tǒng)又被稱為基于規(guī)則專家系統(tǒng)[3]。
當(dāng)前最常使用的方法是基于規(guī)則的專家系統(tǒng),其主要原因是擁有許多成功的案例和便捷輕快的開發(fā)工具。基于規(guī)則的專家系統(tǒng)不僅可以用各種各樣的規(guī)則來實(shí)現(xiàn)專家系統(tǒng),而且可以用來直接對(duì)人的心理過程進(jìn)行模仿?;谝?guī)則的專家系統(tǒng)有兩種基本的推理:第一種是將已經(jīng)存在的知識(shí)作為專家系統(tǒng)推理開始點(diǎn)的正向推理;第二種是將假定的結(jié)果作為專家系統(tǒng)推理開始點(diǎn)的反向推理。且對(duì)于反向推理,如果找不到匹配的規(guī)則,改變假設(shè),重新進(jìn)行推理[4]。
知識(shí)與處理的相分離?;谝?guī)則的專家系統(tǒng)的結(jié)構(gòu)為知識(shí)庫和推理引擎提供了有效的分離機(jī)制。因此,能夠使用同一個(gè)專家系統(tǒng)框架開發(fā)不同的應(yīng)用,系統(tǒng)本身也容易擴(kuò)展。在不干擾控制結(jié)構(gòu)的同時(shí)通過添加一些規(guī)則,還能使系統(tǒng)更聰明。
大多數(shù)基于規(guī)則的專家系統(tǒng)都能表達(dá)和推理不完整、不確定的知識(shí)。因此可以采用基于規(guī)則的專家系統(tǒng)思路來構(gòu)建專家系統(tǒng)。
在數(shù)據(jù)分析的過程中,如果數(shù)據(jù)沒有進(jìn)行過數(shù)據(jù)處理,原來的數(shù)據(jù)依然存在各種各樣的異常,且存在不一致、不完整等問題,即會(huì)導(dǎo)致數(shù)據(jù)分析的結(jié)果不夠準(zhǔn)確。所以在數(shù)據(jù)分析之前,對(duì)原始數(shù)據(jù)進(jìn)行數(shù)據(jù)預(yù)處理的步驟至關(guān)重要。
一條真實(shí)的NCSA(ECLF)日志記錄為“27.19.74.143 - - [30/May/2013:17:38:20 +0800] "GET /static/image/common/swfupload.swf?preventswfcach-ing=1369906718144 HTTP/1.1" 200 13333”,這類日志主要由以下幾個(gè)部分組成:
標(biāo)識(shí)符(ident):目前幾乎多數(shù)的瀏覽器已經(jīng)取消了該功能,因?yàn)樯婕暗搅擞脩羿]箱等隱私信息。
授權(quán)用戶(authuser):雖然目前多數(shù)的網(wǎng)站的該類日志項(xiàng)并不存在,但是該類字段對(duì)于那些需要身份驗(yàn)證或者訪問時(shí)候個(gè)人密碼保護(hù)的信息項(xiàng)網(wǎng)站來說,不能為空。
日期時(shí)間(date):即[日期/月份/年份:小時(shí):分鐘:秒鐘時(shí)區(qū)],占用的字符位數(shù)也基本固定,一般的格式形如[22/Feb/2010:09:51:46 +0800]。
請(qǐng)求(request):在網(wǎng)站上通過使用哪些方式獲取了哪些信息在日志數(shù)據(jù)格式中也扮演著重要的角色。
請(qǐng)求類型(method):目前來說,主流的請(qǐng)求類型主要有以下三種:POST/HEAD/GET。
請(qǐng)求資源(resource):可以是css、動(dòng)畫、圖片等資源,也可以是某網(wǎng)頁的地址,即是請(qǐng)求資源的相應(yīng)的UPL。
協(xié)議版本號(hào)(protocol):通常是HTTP/1.0或者HTTP/1.1,用于版本信息及顯示的協(xié)議。
狀態(tài)碼(status):用于響應(yīng)瀏覽器的請(qǐng)求。
傳輸字節(jié)數(shù)(bytes):在一次請(qǐng)求過程中的資源數(shù)量。
訪問主機(jī)(remotehost):已經(jīng)解析的域名或者用于顯示主機(jī)的ip。
各類web日志數(shù)據(jù)的處理流程基本一致。處理流程主要分為:數(shù)據(jù)抽取、數(shù)據(jù)格式轉(zhuǎn)換、數(shù)據(jù)重復(fù)值處理[5]。
web日志分析過程中,并不是每個(gè)字段都是日志分析中所需要的。比如,DNS的IP在每行數(shù)據(jù)中都是相同的,所以沒有必要分析;日志記錄中也記錄了兩次用戶請(qǐng)求的主機(jī)地址,實(shí)際分析中只需要一個(gè)即可;還有一些無關(guān)的符號(hào)(client、query、IN、+客戶端端口號(hào)等)[6]也都需要過濾。最終,在數(shù)據(jù)表中保存了所需要的有用字段。
web日志數(shù)據(jù)格式的轉(zhuǎn)換主要針對(duì)的是日期字段。在這里,將字符型的日期格式04.Jan.2017轉(zhuǎn)換成了日期類型的數(shù)據(jù)格式2017—01—04[7]。
在海量的web日志數(shù)據(jù)行中,有大部分?jǐn)?shù)據(jù)行是重復(fù)的,數(shù)據(jù)量很大,會(huì)對(duì)數(shù)據(jù)分析的準(zhǔn)確性帶來一定的影響,因此有必要對(duì)重復(fù)的數(shù)據(jù)進(jìn)行去重處理[8]。
本次實(shí)驗(yàn)的數(shù)據(jù)來源于某企業(yè)Apache服務(wù)器2013年的員工web日志數(shù)據(jù)。
專家系統(tǒng)主要邏輯:
(1)獲取web日志數(shù)據(jù),將獲取web日志數(shù)據(jù)某一行的前三列轉(zhuǎn)換為已知事實(shí)。
(2)輸入目前已經(jīng)存在的事實(shí)—>進(jìn)行推理。
(3)綜合數(shù)據(jù)庫db添加輸入的已知事實(shí)。
(4) 規(guī)則庫獲取,并在之后將存在對(duì)應(yīng)關(guān)系的前提與結(jié)論分別各自存儲(chǔ)于兩個(gè)列表里[9]。
(5)前提與已知知識(shí)庫進(jìn)行匹配:
如果有一個(gè)前提,所有這些在已知的事實(shí)中出現(xiàn),那么最少也能夠得出一個(gè)結(jié)論[10]。將結(jié)論添加到綜合數(shù)據(jù)庫中,并對(duì)推理過程進(jìn)行標(biāo)記。在推理列表之中存在的數(shù)字是前提和推理出來結(jié)論的下標(biāo)[11]。用于展示。
如果這樣的前提并不存在,就無法推理出想要的中間結(jié)論,跳轉(zhuǎn)(7)。
(6)等循環(huán)完了,因?yàn)橹辽俅嬖谝粋€(gè)中間結(jié)論,所以直接輸出推理過程和(中間或者最終)結(jié)論[12]。
(7)提示什么也不能推出來,詢問是否進(jìn)行補(bǔ)充,如果選擇“是”就回到主頁面,如果選擇“否”就關(guān)閉程序。
界面設(shè)置:
框:讀取并顯示web日志數(shù)據(jù)的框,輸入事實(shí)的框,顯示推理過程的框,顯示結(jié)論的框,自動(dòng)顯示當(dāng)前規(guī)則庫的框,用來添加規(guī)則庫的框。
按鈕:打開web日志數(shù)據(jù)的按鈕,點(diǎn)擊進(jìn)行推理的按鈕,點(diǎn)擊添加規(guī)則庫并更新當(dāng)前窗口的按鈕。
對(duì)話提示框:詢問是否進(jìn)行補(bǔ)充的框。
主界面如圖1所示。
圖1 主界面
點(diǎn)擊文件,打開需要處理的web日志數(shù)據(jù),如圖2所示。
圖2 打開web數(shù)據(jù)
顯示讀取的web日志數(shù)據(jù),將獲取的web日志數(shù)據(jù)的第一行前三列,轉(zhuǎn)換為已知事實(shí),并顯示于“獲取web日志”,推理輸出對(duì)應(yīng)的日志格式,如圖3所示。
圖3 推理過程及結(jié)果顯示
通過“2”得到輸入的web數(shù)據(jù)格式是NCSA(ECLF)[13],針對(duì)其特定的數(shù)據(jù)格式自動(dòng)進(jìn)行數(shù)據(jù)預(yù)處理,NCSA(ECLF)日志格式如下所示:
3.3.1 數(shù)據(jù)抽取
企業(yè)員工的web日志中時(shí)區(qū)、方法、協(xié)議、狀態(tài)碼等字段對(duì)于分析沒有作用。企業(yè)員工都在同一時(shí)區(qū),所以時(shí)區(qū)這一字段對(duì)于企業(yè)分析員工行為沒有意義,可以舍去;在企業(yè)分析員工web日志過程中,請(qǐng)求方法、協(xié)議、狀態(tài)碼等字段沒有實(shí)際應(yīng)用價(jià)值,亦可以舍去。因此將這些無意義字段都刪除,只保留主機(jī)IP、請(qǐng)求時(shí)間、資源、發(fā)送字節(jié)量等字段[14]。
3.3.2 數(shù)據(jù)格式轉(zhuǎn)換
由于數(shù)據(jù)格式的轉(zhuǎn)換主要針對(duì)的是日期字段,因此需要將字符型的日期格式轉(zhuǎn)換成日期類型的數(shù)據(jù)格式。
3.3.3 重復(fù)字段刪除
由于數(shù)據(jù)量龐大,因此以10秒鐘為間隔定義員工日志。在這里,刪除的對(duì)象針對(duì)的是同一ip,訪問時(shí)間相差大于10秒的數(shù)據(jù)行。將員工日志數(shù)據(jù)重新定義完成后,刪除其中的重復(fù)數(shù)據(jù)行。在一定程度上能提高之后數(shù)據(jù)分析的準(zhǔn)確性[15]。
經(jīng)過處理完的ECLF web日志數(shù)據(jù)如下所示:
傳統(tǒng)的日志數(shù)據(jù)清洗方式難以應(yīng)對(duì)目前如此復(fù)雜的日志格式。由于專家系統(tǒng)其技術(shù)特點(diǎn)能應(yīng)對(duì)復(fù)雜的日志格式,所以通過結(jié)合專家系統(tǒng),推理出對(duì)應(yīng)的web日志格式,從而自動(dòng)進(jìn)行日志數(shù)據(jù)清洗。該文通過對(duì)若干種日志數(shù)據(jù)格式建立規(guī)則庫,并對(duì)其進(jìn)行知識(shí)推理,基于推理得到對(duì)應(yīng)日志類型,自動(dòng)進(jìn)行數(shù)據(jù)預(yù)處理。證明了基于專家系統(tǒng)的web日志數(shù)據(jù)預(yù)處理的可行性,使得當(dāng)前的日志數(shù)據(jù)處理更加高效且智能,有效提高了企業(yè)的工作效率,節(jié)約了時(shí)間成本,推動(dòng)了企業(yè)快速發(fā)展。