張玉霞 陳浩然
[摘要]重點(diǎn)對(duì)Web使用挖掘中模式挖掘前進(jìn)行的工作多且事務(wù)識(shí)別不夠準(zhǔn)確,提出新的解決方法,主動(dòng)數(shù)據(jù)收集技術(shù),然后從網(wǎng)絡(luò)廣告的邏輯結(jié)構(gòu)、模式挖掘所需的數(shù)據(jù)結(jié)構(gòu)、重點(diǎn)算法和軟件架構(gòu)等方面研究主動(dòng)數(shù)據(jù)收集技術(shù)。結(jié)果表明主動(dòng)數(shù)據(jù)收集技術(shù),為Web使用挖掘提供比服務(wù)器日志更全面而準(zhǔn)確的數(shù)據(jù)。
[關(guān)鍵詞]數(shù)據(jù)挖掘使用挖掘Web挖掘網(wǎng)絡(luò)廣告數(shù)據(jù)收集
中田分類號(hào):TP3文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1671-7597(2009)0210065-02
一、網(wǎng)絡(luò)廣告和Web挖掘
廣告對(duì)于企業(yè)的生存和發(fā)展有著重要的作用和影響,而相對(duì)傳統(tǒng)廣告而言,網(wǎng)絡(luò)廣告又有其獨(dú)特優(yōu)勢(shì)。在[1]中,提到廣告的作用有:情報(bào)性功能、娛樂(lè)性功能、提醒性及說(shuō)服性功能、協(xié)助促銷的功能、增加價(jià)值的功能。企業(yè)利用廣告促使消費(fèi)者認(rèn)識(shí)公司的名稱、品牌,在存在多種產(chǎn)品競(jìng)爭(zhēng)時(shí),廣告可以創(chuàng)造消費(fèi)者對(duì)品牌的心理差異,起到促銷,增加利潤(rùn)的作用,它是現(xiàn)代企業(yè)促銷的重要方法之一[2]。
數(shù)據(jù)挖掘是從數(shù)據(jù)庫(kù)、數(shù)據(jù)倉(cāng)庫(kù)或其他信息庫(kù)中的大量數(shù)據(jù)中挖掘有趣知識(shí)的過(guò)程[3]。
Web使用挖掘[4],它通過(guò)挖掘Web日志記錄來(lái)發(fā)現(xiàn)用戶訪問(wèn)Web頁(yè)面的模式,通過(guò)分析和探究Web日志記錄中的規(guī)律,可以識(shí)別電子商務(wù)的潛在客戶,增強(qiáng)對(duì)最終用戶的因特網(wǎng)信息服務(wù)的質(zhì)量和交付,并改進(jìn)Web服務(wù)器系統(tǒng)的性能和結(jié)構(gòu)。
二、問(wèn)題的提出
下面我們將對(duì)當(dāng)前的Web數(shù)據(jù)挖掘作分析,然后分析其中的問(wèn)題,最后提出解決方法及其優(yōu)點(diǎn)。
(一)目前Web使用挖掘的狀況
目前幾乎所有的Web使用挖掘,都是從服務(wù)器端的日志記錄和用戶的個(gè)人信息中自動(dòng)發(fā)現(xiàn)隱藏在數(shù)據(jù)中的模式信息,了解系統(tǒng)的訪問(wèn)模式以及用戶的行為模式,從而做出預(yù)測(cè)性分析。
在[5]中建立的Web使用挖掘的框架模型如下圖2-1:
根據(jù)[6],模式挖掘之前工作繁多。首先,數(shù)據(jù)清洗(data cleaning)解決“臟數(shù)據(jù)(dirty data)”問(wèn)題,消解數(shù)據(jù)中的不一致性,并將多個(gè)數(shù)據(jù)源中的數(shù)據(jù)統(tǒng)一成一個(gè)數(shù)據(jù)存儲(chǔ)。然后,事務(wù)識(shí)別中,用戶Session的識(shí)別問(wèn)題是一個(gè)難點(diǎn)。如多個(gè)用戶訪問(wèn)同一頁(yè)面,在Proxy服務(wù)器日志中可能只列出一次;同時(shí)Internet服務(wù)提供商如采用動(dòng)態(tài)分配IP將使得用戶識(shí)別變得困難。最后,還要將數(shù)據(jù)集成到數(shù)據(jù)庫(kù)中。
(二)解決方法的提出及其優(yōu)點(diǎn)
我們將上述基于日志的Web挖掘中的數(shù)據(jù)收集方法稱為被動(dòng)數(shù)據(jù)收集。從2.1節(jié)的分析中不難看出為了得到模式挖掘的輸入數(shù)據(jù),經(jīng)過(guò)了很多的步驟,而且更重要的是結(jié)果有些并不一定準(zhǔn)確。
現(xiàn)在我們提出主動(dòng)的數(shù)據(jù)收集方法,也就是通過(guò)JsP頁(yè)面中的JavaBean調(diào)用用于數(shù)據(jù)收集的java包中的類,并傳入Web服務(wù)器已經(jīng)構(gòu)造好的Request和Response對(duì)象,然后將用戶Session信息保存到數(shù)據(jù)庫(kù),并在瀏覽器端添加用戶信息的Cookie。
這樣做的優(yōu)點(diǎn)有:
1.不用進(jìn)行數(shù)據(jù)清洗。最后保存到數(shù)據(jù)庫(kù)中的信息,不會(huì)包括對(duì)一些非主頁(yè)面請(qǐng)求的信息,如,不會(huì)包括對(duì)圖片的請(qǐng)求;因?yàn)椴淮嬖诙鄠€(gè)數(shù)據(jù)源,所以也不存在數(shù)據(jù)的不一致性。
2.不用進(jìn)行費(fèi)時(shí)而且不準(zhǔn)確的事務(wù)識(shí)別。因?yàn)閃eb服務(wù)器將為我們做這些工作,而且是在用戶訪問(wèn)時(shí)做,它所識(shí)別的Session幾乎是完全正確。
3.不用進(jìn)行數(shù)據(jù)集成。因?yàn)橛脩魹g覽完頁(yè)面之后,數(shù)據(jù)就已經(jīng)持久化到數(shù)據(jù)庫(kù)中了。
4.可以識(shí)別多個(gè)Session來(lái)自同一臺(tái)主機(jī)。因?yàn)槲覀兎胖昧薈ookie在瀏覽器端。
5.留有和主商務(wù)邏輯的接口。也就是可以將事務(wù)識(shí)別的Session和主商務(wù)邏輯中的客戶聯(lián)系起來(lái),即使用戶在不同的機(jī)器登陸。
6.一個(gè)瀏覽器端有多個(gè)客戶登陸,也可進(jìn)行一定的Session和客戶之間的對(duì)應(yīng)。
三、主動(dòng)數(shù)據(jù)收集的研究
我們現(xiàn)在的工作是:從分析網(wǎng)絡(luò)廣告的邏輯結(jié)構(gòu)出發(fā),確定進(jìn)行模式挖掘輸入數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),然后確定獲取這些數(shù)據(jù)的算法,最后編寫類庫(kù),以便使用JavaBean獲取數(shù)據(jù),并保存到數(shù)據(jù)庫(kù)中。
(一)廣告的邏輯結(jié)構(gòu)
廣告的邏輯結(jié)構(gòu)可以用圖3-1進(jìn)行簡(jiǎn)單的示意。單個(gè)頁(yè)面的內(nèi)容由多個(gè)服務(wù)器提供,同一頁(yè)面上的多個(gè)廣告可來(lái)自不同的服務(wù)器。內(nèi)容服務(wù)器由廣告商提供的;廣告服務(wù)器由廣告經(jīng)紀(jì)人或者廣告客戶提供,服務(wù)器可根據(jù)Session記錄的用戶信息制訂個(gè)性化的頁(yè)面。
廣告商有三種選擇為廣告預(yù)留頁(yè)面空間。1.常規(guī)HTML幀;2.使用新的內(nèi)嵌幀;3.使用單獨(dú)的窗口。
(二)數(shù)據(jù)結(jié)構(gòu)
通過(guò)分析[6],模式挖掘的輸入數(shù)據(jù)的一般格式為:訪問(wèn)者的IP、端口號(hào)、時(shí)間、請(qǐng)求的URL。
但這些是通過(guò)服務(wù)器日志獲取輸入數(shù)據(jù)的,現(xiàn)在需使用JavaBean來(lái)獲得數(shù)據(jù)。我們?cè)O(shè)計(jì)了數(shù)據(jù)結(jié)構(gòu)并建立了基于SQL Server 2000的數(shù)據(jù)庫(kù)物理模型,如圖3-2:
下面對(duì)數(shù)據(jù)庫(kù)物理模型做一下說(shuō)明:首先,用戶的每一次請(qǐng)求動(dòng)作(page_action)包括一個(gè)請(qǐng)求頁(yè)(page),以及可能有的廣告空間提供頁(yè)(ad_provider_page);其次,用戶的一次會(huì)話(session_action)包含一個(gè)或多個(gè)用戶的頁(yè)面請(qǐng)求(page_action);然后,一個(gè)客戶端主機(jī)(host_action)會(huì)有一次或多次會(huì)話(session_action);最后,為了能和商務(wù)邏輯結(jié)合,我們預(yù)留了客戶(customer),客戶(customer)可以在多臺(tái)主機(jī)(host_action)上建立會(huì)話(session_action)。
(三)主要算法
為得到上述數(shù)據(jù)結(jié)構(gòu)對(duì)應(yīng)的數(shù)據(jù),最難的就是如何把客戶端主機(jī)(host action)和會(huì)話(session_action)關(guān)聯(lián)起來(lái),及如何把客戶(customer)和會(huì)話(session_action)關(guān)聯(lián)起來(lái)。下面分析主要算法。
1.對(duì)于客戶的每一個(gè)頁(yè)面請(qǐng)求,先判斷是否屬于一個(gè)新會(huì)話。對(duì)不同的情況使用對(duì)應(yīng)的算法。
2.對(duì)于當(dāng)前Session已經(jīng)判定為新Session時(shí),算法如下:
(1)創(chuàng)建新的SessionAction;
(z)判斷是否可以從Session中獲得Customer的信息,如果可以則向下執(zhí)行,否則跳到e;
(3)將此Customer對(duì)應(yīng)的Cookie保存到客戶端:
(4)將建立的SessionAction和此Customer對(duì)象關(guān)聯(lián),然后跳到0;
(5)從Cookies中獲得CustomerCookie的個(gè)數(shù);
(6)判斷CustomerCookie的個(gè)數(shù)是否為l,如果是則向下執(zhí)行,否則跳到j(luò):
(7)通過(guò)這個(gè)CustomerCookie的信息,試著從數(shù)據(jù)庫(kù)中得到Customer
對(duì)象;
(8)判斷是否成功獲得Customer對(duì)象,如果成功向下執(zhí)行,否則跳到o;
(9)將建立的SessionAction和此Customer對(duì)象關(guān)聯(lián),然后跳到0:
(10)判斷是否可從Cookie中獲得HostAction信息,如果可以則向下執(zhí)行,否則跳到1;
(11)通過(guò)這個(gè)HostAction的Cookie的信息,試著從數(shù)據(jù)庫(kù)中得到HostAction對(duì)象;
(12)如果沒(méi)有HostAction~Cookie,或者HostAction沒(méi)有建立成功,則向下執(zhí)行,否則跳到n;
(13)創(chuàng)建HostAction對(duì)象,并保存到數(shù)據(jù)庫(kù)中,將此HostAction對(duì)應(yīng)的Cookie保存到客戶端;
(14)將建立的SessionAction和此HostAction關(guān)聯(lián);
(15)保存非空對(duì)象。
3.對(duì)于當(dāng)前Session已經(jīng)判定為非新Session時(shí),算法如下:
對(duì)于這種情況,SessionAction對(duì)象在判斷是否是新用戶會(huì)話時(shí),就應(yīng)該建立,并且在此算法開始前必須已經(jīng)建立。
(1)將PageAction~SessionAction相關(guān)聯(lián);
(2)保存PageAction:
(3)判斷Customer對(duì)象是否為空,如果是向下執(zhí)行,否則跳到o:
(4)從Session中獲得Customer的信息;
(5)判斷Customer對(duì)象是否為空,如果是向下執(zhí)行,否則跳到o;
(6)從Cookies中獲得CustomerCookie的個(gè)數(shù);
(7)判斷CustomerCookie的個(gè)數(shù)是否為1,如果是向下執(zhí)行,否則跳到k:
(8)通過(guò)這個(gè)CustomerCookie的信息,試著從數(shù)據(jù)庫(kù)中得到Customer對(duì)象;
(9)判斷是否成功獲得Customer對(duì)象,如果是向下執(zhí)行,否則跳到o;
(10)將建立的SessionAction和此Customer對(duì)象關(guān)聯(lián),然后跳到o;
(11)判斷是否有HostAction的Cookie,如果沒(méi)有則向下執(zhí)行,否則跳到o;
(12)從SessionAction中獲得HostAction;
(13)判斷HostAction是否為空,如果不為空則向下執(zhí)行,否則跳到0;
(14)將HostAction的信息保存到Cookie中;
(15)判斷Customer對(duì)象是否為空,如果不為空則向下執(zhí)行,否則跳到r;
(16)將此Customer對(duì)應(yīng)的Cookie保存到客戶端;
(17)將建立的SessionAction和此Customer對(duì)象關(guān)聯(lián);
(18)保存非空對(duì)象。
(四)建立軟件系統(tǒng)架構(gòu)
圖3-3是此軟件系統(tǒng)的架構(gòu)圖,它基于典型的軟件設(shè)計(jì)架構(gòu)——業(yè)務(wù)組件架構(gòu),有良好的擴(kuò)展性和維護(hù)性。
1.表示層:為用戶提供界面,在本系統(tǒng)中就是JSP頁(yè)面。通過(guò)JavaBean來(lái)調(diào)用Log Service。
2.代理層:Log Service只是一個(gè)接口,我們用Java抽象類來(lái)寫這個(gè)接口。
3.業(yè)務(wù)邏輯層:業(yè)務(wù)邏輯層主要由三個(gè)類實(shí)現(xiàn),它們是:LogServicelmpl、DaoService和CookieService。其中LogServiceImpl將調(diào)用DaoService和CookieService。LogServiceImpl繼承了LogService,因此可通過(guò)修改LogServiceImpl來(lái)滿足需求的改變,而無(wú)需修改表示層和代理層。DaoService提供數(shù)據(jù)庫(kù)的存取接口,它將LogServiceImpl需要的數(shù)據(jù)庫(kù)的存取處理集中到一個(gè)類中。CookieService將LogServiceImpl需要的Cookies的處理集中到一個(gè)類中。
4基于資源層:也可稱為持久化層,采用了成熟的Hibernate,負(fù)責(zé)業(yè)務(wù)對(duì)象(BO)和數(shù)據(jù)庫(kù)中記錄的轉(zhuǎn)換,并提供事務(wù)支持,鏈接池機(jī)制。
四、結(jié)束語(yǔ)
我們已經(jīng)將對(duì)應(yīng)的軟件打包成Jar文件,程序開發(fā)者可以輕松的使用和部署它。實(shí)驗(yàn)結(jié)果表明主動(dòng)數(shù)據(jù)收集技術(shù),為Web使用挖掘提供了比服務(wù)器日志更全面而準(zhǔn)確的數(shù)據(jù)。
作者簡(jiǎn)介:
張玉霞,女,漢,河北許昌人,碩士,中山職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系教師,主要研究方向:圖像處理,網(wǎng)絡(luò)信息技術(shù):陳浩然,男,漢,湖北咸寧人。碩士,中國(guó)工商銀行(廣州天河)軟件開發(fā)中心工程師,主要研究方向;網(wǎng)絡(luò)信息技術(shù)。