陳勇CHEN Yong
(陜西理工大學(xué)數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院,漢中 723000)
隨著互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展和信息資源的日益豐富,信息量的增長(zhǎng)速度遠(yuǎn)遠(yuǎn)超過了我們所能處理的速度。如何在如此龐大的信息量中找出我們感興趣的信息是非常困難的。推薦系統(tǒng)的研究和發(fā)展已經(jīng)成為電子商務(wù)行業(yè)中不可缺少的方法。它能夠通過對(duì)用戶的歷史行為數(shù)據(jù)進(jìn)行分析找到用戶比較感興趣的商品或項(xiàng)目,達(dá)到對(duì)用戶實(shí)現(xiàn)個(gè)性化的推薦的目的。其中,使用協(xié)同過濾算法是推薦系統(tǒng)中應(yīng)用最成功、應(yīng)用最廣泛的技術(shù)之一。它的主要特點(diǎn)是不依賴于產(chǎn)品的內(nèi)容,而是完全取決于一類用戶所表達(dá)的喜好。通常協(xié)同過濾算法可以分為基于內(nèi)存的協(xié)同過濾算法和基于模型的協(xié)同過濾算法兩大類?;趦?nèi)存的協(xié)同過濾算法是使用整個(gè)用戶商品數(shù)據(jù)庫(kù)來(lái)計(jì)算用戶和商品之間的相關(guān)性,并為用戶推薦類似的商品,如Slope one算法、矩陣分解等。基于模型的協(xié)同過濾算法通過研究用戶的歷史數(shù)據(jù)對(duì)描述性模型進(jìn)行優(yōu)化,然后將其應(yīng)用于預(yù)測(cè)評(píng)分,如神經(jīng)網(wǎng)絡(luò)分類、貝葉斯網(wǎng)絡(luò)等。
目前旅游行業(yè)信息化程度越來(lái)越高,各個(gè)旅游景點(diǎn)的相關(guān)信息在各類系統(tǒng)中存儲(chǔ)的數(shù)據(jù)量越來(lái)越大,用戶查找自己感興趣的旅游景區(qū)信息越來(lái)越困難。目前在旅游行業(yè)使用推薦系統(tǒng)進(jìn)行各種信息的推薦方法還沒有廣泛使用,旅游景區(qū)網(wǎng)站或主流的旅游網(wǎng)只提供旅游景點(diǎn)信息發(fā)布、查詢以及實(shí)現(xiàn)了在線旅游景點(diǎn)門票的購(gòu)買服務(wù)等,而對(duì)旅游景區(qū)景點(diǎn)、促銷等服務(wù)的推薦工作還沒有廣泛的應(yīng)用,為此本文將推薦算法應(yīng)用于旅游景區(qū)的推薦服務(wù)中。通過計(jì)算目標(biāo)用戶和別的用戶的相似度,選擇相似度大于設(shè)定閾值的用戶為目標(biāo)用戶的鄰居,以縮小鄰居的搜索范圍,然后利用鄰居對(duì)目標(biāo)項(xiàng)的得分來(lái)預(yù)測(cè)目標(biāo)用戶的目標(biāo)項(xiàng)。最后,在預(yù)測(cè)出目標(biāo)用戶對(duì)所有未評(píng)級(jí)景區(qū)的得分后,可以采用Top-K方法將得分值最高的K個(gè)景區(qū)推薦給目標(biāo)用戶。該算法能較準(zhǔn)確地預(yù)測(cè)出用戶對(duì)旅游景點(diǎn)的評(píng)分。
協(xié)同過濾算法是推薦算法中比較經(jīng)典常用的一種,它主要包括基于內(nèi)存的協(xié)同過濾和基于模型的協(xié)同過濾兩種算法。前者主要根據(jù)用戶的歷史數(shù)據(jù)進(jìn)行相關(guān)的推薦,它使用領(lǐng)域的方法又可以分為基于用戶的協(xié)同過濾算法和基于項(xiàng)目的協(xié)同過濾算法。
基于內(nèi)存的協(xié)同過濾算法一般采用最近鄰方法,該算法首先利用用戶的歷史偏好信息來(lái)計(jì)算出用戶之間的距離,其次利用目標(biāo)用戶的鄰居用戶對(duì)產(chǎn)品的評(píng)價(jià)的加權(quán)值來(lái)預(yù)測(cè)目標(biāo)用戶對(duì)特定產(chǎn)品的偏好。推薦系統(tǒng)根據(jù)偏好程度推薦目標(biāo)用戶。該方法包括基于用戶的協(xié)同過濾算法和基于項(xiàng)目的協(xié)同過濾算法?;谟脩舻姆椒ǜ鶕?jù)用戶之間的評(píng)分行為的相似性來(lái)預(yù)測(cè)用戶的評(píng)分。這兩種方法的原理是不同的,因此在不同的應(yīng)用場(chǎng)景下,它們的表現(xiàn)也不同。
1.1.1 基于用戶的協(xié)同過濾算法
基于用戶的協(xié)同過濾(User-based CF)主要思想是以往具有相似評(píng)分的用戶應(yīng)該具有相似的興趣,這樣就可以根據(jù)相似用戶評(píng)分?jǐn)?shù)據(jù)估算目標(biāo)用戶對(duì)某一項(xiàng)目的未評(píng)分?jǐn)?shù)據(jù)值,原理示例如圖1所示。在圖1中,箭頭指向用戶指向該項(xiàng)目表示用戶喜歡引用該項(xiàng)目,并且該項(xiàng)目指向用戶代表以向目標(biāo)用戶推薦該項(xiàng)目。對(duì)于這三個(gè)用戶,用戶A和用戶C喜歡A項(xiàng)和C項(xiàng)在一起,而用戶B的偏好與其他兩個(gè)用戶相交不大,因此我們可以得到用戶A和用戶C的興趣偏好相似,因此根據(jù)推薦原則,用戶C喜歡但用戶A沒有評(píng)分的D項(xiàng)可以推薦給用戶A。
1.1.2 基于項(xiàng)目的協(xié)同過濾算法
而基于項(xiàng)目的協(xié)同過濾算法(Item-basing CF)根據(jù)項(xiàng)目考慮問題,但算法本身并不是根據(jù)項(xiàng)目本身的特性來(lái)判斷項(xiàng)目之間的相似性,而是通過用戶行為來(lái)判斷項(xiàng)目之間的相似性。如圖2所示,用戶A和用戶C首選的項(xiàng)目中的公共項(xiàng)目是項(xiàng)目A和項(xiàng)目D。根據(jù)算法本身的原理,可以得到A項(xiàng)與D項(xiàng)相似,因此與A項(xiàng)相似的D項(xiàng)可以在用戶B喜歡A項(xiàng)時(shí)相對(duì)推薦。
基于模型的協(xié)同過濾算法和基于內(nèi)存的協(xié)同過濾算法有著本質(zhì)區(qū)別。前者傾向于在尋找關(guān)聯(lián)的協(xié)作鄰居用戶之前建立模型(建立用戶瀏覽、點(diǎn)擊、購(gòu)買等信息的綜合用戶偏好模型),將模型與協(xié)作鄰居用戶進(jìn)行比較,預(yù)測(cè)用戶的偏好,將項(xiàng)目集合劃分為多個(gè)模塊,根據(jù)用戶的模型,對(duì)協(xié)作鄰居用戶的模塊單元進(jìn)行分類,篩選出與用戶模型最匹配的模塊集,并向用戶推薦內(nèi)容。它使用機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘技術(shù)從訓(xùn)練數(shù)據(jù)中確定模型,并使用模型來(lái)預(yù)測(cè)未知的商品得分。常見的模型有聚類模型、貝葉斯模型、矩陣分解等。
聚類算法模型是通過選取合適的距離計(jì)算方法對(duì)數(shù)據(jù)進(jìn)行聚類,同簇中的數(shù)據(jù)具有較高的相似度,數(shù)據(jù)間距離?。徊煌刂械臄?shù)據(jù)相似度較低,數(shù)據(jù)間距離大?,F(xiàn)已被廣泛應(yīng)用于多個(gè)研究領(lǐng)域。在使用聚類算法的推薦系統(tǒng)中,系統(tǒng)會(huì)將相似興趣的用戶或相似特征的物品聚集到同一類簇之中,相似度計(jì)算在目標(biāo)對(duì)象最終所屬的類簇中進(jìn)行,同樣基于相似度由高到低的規(guī)則在所屬類簇中選取鄰近集合,形成最終的推薦。除了使用聚類模型外,通常還可以使用貝葉斯模型、矩陣分解、回歸模型等來(lái)快速預(yù)測(cè)用戶在某個(gè)項(xiàng)目上對(duì)應(yīng)的評(píng)分。
在基于協(xié)同過濾的旅游推薦系統(tǒng)中,主要通過計(jì)算各個(gè)項(xiàng)目之間的相似度,根據(jù)用戶之間的相似度對(duì)項(xiàng)目進(jìn)行預(yù)測(cè)。主要利用“用戶-項(xiàng)目評(píng)分矩陣”進(jìn)行推薦。旅游推薦系統(tǒng)主要針對(duì)用戶信息和景區(qū)信息進(jìn)行計(jì)算?;谟脩粜畔⒅饕獜臍v史用戶數(shù)據(jù)中尋找與其愛好相似、興趣相投的用戶,找到相似用戶集之后,通過分析這些歷史用戶的歷史行為來(lái)挖掘他們的其他喜好和行為信息,并根據(jù)這些信息來(lái)完成對(duì)目標(biāo)用戶的喜好和行為預(yù)測(cè)給出推薦。
該系統(tǒng)充分利用景區(qū)旅游資源,為游客提供特色旅游服務(wù),是實(shí)現(xiàn)個(gè)性化信息服務(wù)的有效手段。系統(tǒng)采用協(xié)同過濾算法為核心部分,根據(jù)用戶的需求信息和產(chǎn)生的歷史記錄,向游客推薦符合用戶需求的旅游資源信息。采用基于數(shù)據(jù)庫(kù)的方式實(shí)現(xiàn)以網(wǎng)絡(luò)技術(shù)為核心的B/S模式,設(shè)計(jì)了業(yè)務(wù)應(yīng)用層、模型層和數(shù)據(jù)采集層三個(gè)結(jié)構(gòu)層次。系統(tǒng)結(jié)構(gòu)層次如表1所示。其中業(yè)務(wù)應(yīng)用層主要展示系統(tǒng)的推薦結(jié)果;模型層要是將使用協(xié)同過濾算法應(yīng)用到推薦系統(tǒng)中對(duì)用戶的信息數(shù)據(jù)進(jìn)行計(jì)算,實(shí)現(xiàn)對(duì)游客進(jìn)行旅游信息主動(dòng)推薦功能。該層通過在數(shù)據(jù)庫(kù)中提取推薦算法和景區(qū)分類所需要的相關(guān)數(shù)據(jù),執(zhí)行相應(yīng)的推薦算法產(chǎn)生出推薦結(jié)果。數(shù)據(jù)采集層通過網(wǎng)絡(luò)爬蟲軟件采集旅游景區(qū)網(wǎng)站和主流旅游網(wǎng)站上的大量旅游信息數(shù)據(jù)。或者通過與旅游相關(guān)的APP進(jìn)行連接,實(shí)現(xiàn)旅游信息的及時(shí)獲取。
表1 系統(tǒng)結(jié)構(gòu)層次表
該旅行推薦系統(tǒng)使用Struts來(lái)實(shí)現(xiàn)視圖層和控制器層之間的交互,而Hibernate用于數(shù)據(jù)持久化。前臺(tái)頁(yè)面使用JSP技術(shù)來(lái)制作,后臺(tái)系統(tǒng)使用JAVA語(yǔ)言來(lái)實(shí)現(xiàn),推薦算法部分用python腳本來(lái)實(shí)現(xiàn),服務(wù)器采用tomcat,MySQL為數(shù)據(jù)庫(kù)。系統(tǒng)由管理員端和客戶端兩部分構(gòu)成。其中客戶端由游客登錄模塊、景區(qū)評(píng)價(jià)模塊、熱門景區(qū)推薦模塊、推薦模塊等模塊構(gòu)成。當(dāng)用戶登錄系統(tǒng)時(shí),就會(huì)看到熱門推薦模塊。本模塊的結(jié)果是從游客評(píng)分較高的景點(diǎn)中選出的。由于所有用戶登錄系統(tǒng)后看到相同的推薦結(jié)果,因此不具備個(gè)性化推薦功能。個(gè)性化推薦是通過計(jì)算用戶和景區(qū)信息的相似度,結(jié)合協(xié)同過濾算法得到的用戶專屬推薦列表。每個(gè)用戶的推薦結(jié)果都不一樣。管理員端由用戶信息管理模塊和景點(diǎn)信息管理模塊組成。主要負(fù)責(zé)對(duì)用戶信息和景點(diǎn)信息進(jìn)行各種管理。系統(tǒng)的功能模塊圖如圖3所示。
系統(tǒng)中推薦系統(tǒng)算法采用基于用戶(User-based)的協(xié)同過濾算法。其主要思想是首先在用戶集合中尋找與目標(biāo)用戶的愛好相似相近的相鄰用戶,接著使用目標(biāo)用戶的相鄰用戶對(duì)目標(biāo)項(xiàng)目的評(píng)分來(lái)預(yù)測(cè)目標(biāo)用戶對(duì)目標(biāo)項(xiàng)目的評(píng)分。其算法流程圖如圖4所示。
算法的核心部分執(zhí)行的具體步驟如下:
①查找相鄰用戶N:首先計(jì)算目標(biāo)用戶與其他用戶的相似度,相似度計(jì)算方法有很多種,常用的有皮爾遜(Pearson)相關(guān)系數(shù),杰卡德(Jaccard)相似度以及余弦相似度幾種傳統(tǒng)的方法。算法中采用皮爾遜相關(guān)系數(shù)(Pearson)用來(lái)衡量旅游景點(diǎn)、用戶之間的線性相關(guān)程度,取值范圍在1和-1之間。皮爾遜相關(guān)系數(shù)的計(jì)算如公式(1)所示。
其中,Xi表示用戶X對(duì)景區(qū)i的評(píng)分,Yi表示用戶Y對(duì)項(xiàng)目i的評(píng)分表示用戶X所有評(píng)分的平均值表示用戶Y所有評(píng)分的平均值。
其次從中選擇相似度大于預(yù)定閾值的用戶作為目標(biāo)用戶的相鄰用戶。
②得分預(yù)測(cè):用戶u對(duì)景區(qū)s的預(yù)測(cè)公式如下:
其中U為目標(biāo)用戶u在景區(qū)s上有得分且相似度超過一定閾值的相鄰用戶集合,v為其中一個(gè)鄰近用戶,rv,s為用戶v對(duì)景區(qū)s的評(píng)分,rv為用戶v的平均評(píng)分。
③推薦階段:在預(yù)測(cè)目標(biāo)用戶對(duì)所有未評(píng)級(jí)景區(qū)的得分后,可采用Top-K方法將得分值最高的K個(gè)景區(qū)推薦給相應(yīng)的用戶。
目前旅游行業(yè)信息化程度越來(lái)越高,各個(gè)旅游景點(diǎn)的相關(guān)信息在各類系統(tǒng)中存儲(chǔ)的數(shù)據(jù)量越來(lái)越大,本文將推薦算法應(yīng)用于旅游景區(qū)的推薦系統(tǒng)中,提出了一種基于協(xié)同過濾算法的旅游信息推薦系統(tǒng)。該系統(tǒng)給用戶提供更加個(gè)性化和人性化的旅游線路推薦,同時(shí),也為旅游景區(qū)加強(qiáng)景區(qū)服務(wù)質(zhì)量,提升旅游景區(qū)的品質(zhì)起到了促進(jìn)作用。