林芷航
(閩江學(xué)院 經(jīng)濟與管理學(xué)院,福建 福州 350108)
旅游服務(wù)推薦是當(dāng)前旅游業(yè)應(yīng)用廣泛的營銷策略,但隨著旅游數(shù)據(jù)的日漸增多,對于數(shù)據(jù)的處理與存儲變得越發(fā)困難[1]。并且搜索引擎的信息檢索越來越難以滿足用戶多樣化的個性化需求,也很難對信息負載問題進行高效處理。因此,尋找解決用戶個性化需求與信息超載間的矛盾問題的方法極為重要。推薦系統(tǒng)不僅能夠用于解決信息過載,還可通過推薦技術(shù)為用戶找到潛在的需求信息[2]。Hadoop云計算平臺是當(dāng)前最好的大數(shù)據(jù)分析工具,其MapReduce能通過分布計算迅速地處理龐大繁雜的數(shù)據(jù)[3]。FP-growth算法是一種運行效率高、步驟簡單的能夠加快數(shù)據(jù)挖掘過程的關(guān)聯(lián)分析算法[4]。該算法采用了一種頻繁模式樹(Frequent Pattern Tree,FP-tree)的數(shù)據(jù)結(jié)構(gòu),該結(jié)構(gòu)是加快整個挖掘過程的關(guān)鍵[5]。由于FP-growth算法要求具有FP-tree的遞歸生成條件,因而導(dǎo)致其內(nèi)存開銷較大。為此,研究提出對FP-growth算法的FP-tree結(jié)構(gòu)進行優(yōu)化,并將改進后的算法與云計算結(jié)合應(yīng)用于旅游服務(wù)推薦系統(tǒng)上,旨在實現(xiàn)更為精準高效的旅游服務(wù)推薦。
云計算是通過計算機網(wǎng)絡(luò)形成的計算能力超強的系統(tǒng),其核心理念是以Internet為核心,為用戶提供快捷、安全的云計算服務(wù)和數(shù)據(jù)存儲,使海量的計算資源和數(shù)據(jù)中心得以充分利用。Hadoop是極為優(yōu)秀的云計算平臺,其主要由MapReduce與HDFS組成。MapReduce能夠利用分布式計算快速處理龐大的數(shù)據(jù),而HDFS包含了hive與hbase等存儲與操作大量數(shù)據(jù)超強的子項目[6]。在Hadoop平臺上實現(xiàn)旅游服務(wù)推薦系統(tǒng),既能解決龐大的旅游數(shù)據(jù)的存儲問題,也能實現(xiàn)復(fù)雜的計算。
如圖1所示,為基于云計算的旅游服務(wù)推薦系統(tǒng)。此次研究的核心部分是云計算平臺推薦算法的設(shè)計,主要包括:數(shù)據(jù)采集、數(shù)據(jù)預(yù)處理與分析、并行推薦算法,以及服務(wù)推薦實現(xiàn)。
圖1 云計算下的旅游服務(wù)推薦系統(tǒng)框架
由于旅游數(shù)據(jù)結(jié)構(gòu)化與非結(jié)構(gòu)化不一,因此在獲取過程中需要進行合理分類。研究選擇的數(shù)據(jù)采集工具為LocoySpider,其還能對采集好的資源進行有效分類。在時間分布上,旅游季節(jié)性主要表現(xiàn)為游客接待量的不均衡性。因此研究以游客人數(shù)指標,對游客量的時間分布特征進行研究,對季節(jié)性強度指數(shù)與游客的特征進行展開分析。如式(1)為季節(jié)性強度指數(shù)的計算。
(1)
在式(1)中,8.33表示在全年絕對平均的前提下,計算出來的每月總收入占全年總收入的百分比。xi表示每月游客人數(shù)占全年總?cè)藬?shù)的比例。當(dāng)R越接近0,在旅游需求時間的分配上則越均衡。在整個旅游流網(wǎng)絡(luò)中,其規(guī)模指的是旅游網(wǎng)絡(luò)節(jié)點數(shù)量。有向網(wǎng)絡(luò)圖所有可能的關(guān)系數(shù)量見式(2)。
Z=k×(k-1) ,
(2)
在式(2)中,k代表旅游觀光節(jié)點數(shù)目。旅游網(wǎng)絡(luò)密度反映了各結(jié)點之間的關(guān)聯(lián)度,即實際聯(lián)系和理論聯(lián)系的總值,見式(3)。
(3)
在式(3)中,di(ni,nj)表示節(jié)點ni與nj間的關(guān)系量。D的取值為0~1,0表示節(jié)點間不存在聯(lián)系,1代表所有的旅游景點在理想的情況下緊密聯(lián)系。同時,在旅游網(wǎng)絡(luò)分析中,必須充分考慮到核心問題。中心性是對行動者具有權(quán)利,或是居于某中心地位的量化。在旅游流網(wǎng)中,以中心旅游節(jié)點向其余節(jié)點輻射、集聚的能力來體現(xiàn)中心性。傳統(tǒng)的FP-growth算法只能根據(jù)用戶對某一項的興趣進行挖掘,而不能得到該項的訪問數(shù)量。因而研究認為使用標準化的訪問頻率可以更好地反映出游客對旅游項目的興趣。見式(4)為用戶對項目的興趣值計算表達式[7]。
(4)
在式(3)中,fu,i表示用戶u對旅游服務(wù)項目i的訪問頻次。其中,I={i1,i2,…,in}表示旅游服務(wù)項目的集合。雖然興趣值被反映在[0-1]的區(qū)間內(nèi),然而不能反映隨著時間推移用戶興趣的改變。因此,研究引入了遺忘函數(shù),來反映用戶隨時間變化的興趣值,如式(5)[8]。
f(t)=exp(-λ·Δt),
(5)
在式(5)中,λ表示遺忘因子對遺忘的速度控制。根據(jù)經(jīng)驗,90天之后,將該數(shù)據(jù)的權(quán)重降低到1/2。再結(jié)合式(1)與式(2),得到的表達式如式(6)所示。
(6)
(7)
研究通過改進FP-growth算法構(gòu)建的IFP-tree是以游客最感興趣的旅游服務(wù)為基礎(chǔ),從中找出與之相關(guān)的最多的頻繁項,由此形成了一系列的推薦順序。最后由相似度排序獲得最終的推薦序列,嘗試以此獲得較為精準的用戶感興趣的旅游服務(wù)項目。FP-growth算法主要基于FP-tree結(jié)構(gòu)加快整個挖掘過程。針對傳統(tǒng)FP-tree的簡單結(jié)構(gòu),提出了一個項目的活動度來表達旅游項目的受喜愛程度。將旅游服務(wù)項目活躍度稱為每個項目的節(jié)點數(shù)與利息值的乘積,其計算如式(8)[10]所示。
(8)
圖2 旅游推薦服務(wù)的離線與在線部分模型設(shè)計
如圖2(a)所示,離線部分對于準備好的數(shù)據(jù)需要經(jīng)過預(yù)處理,轉(zhuǎn)換成FP-growth算法所能處理的信息。該算法的完成主要經(jīng)過如圖2(a)所示的4步操作。關(guān)聯(lián)規(guī)則挖掘需要關(guān)注支持度與置信度[12]。在該系統(tǒng)中,支持度的選擇需根據(jù)事務(wù)量決定。但若該參數(shù)值設(shè)置過高,會導(dǎo)致挖掘結(jié)果數(shù)量太少,反之,則會造成數(shù)量太多。該方法通過算法直接求出可信度,然后在前X項中選取具有高可信度的結(jié)果。如圖2(b)所示,在線部分包括了三層架構(gòu),該架構(gòu)主要體現(xiàn)了“高內(nèi)聚,低耦合”的思想[13]。在線部分會根據(jù)系統(tǒng)的使用情況,為其提供個性化的旅游服務(wù)推薦。整個旅游服務(wù)推薦的流程如圖3所示。
圖3 旅游推薦服務(wù)流程圖
在圖3中,該推薦系統(tǒng)采用了B-S結(jié)構(gòu),可以方便地訪問服務(wù)器資源。在用戶獲取旅游服務(wù)的過程中,首先登錄推薦系統(tǒng),然后由用戶在站點中進行瀏覽。并且,將會按照他們的興趣記錄、瀏覽記錄,以及用戶瀏覽景點記錄等所產(chǎn)生的常規(guī)規(guī)則進行匹配。
如果旅游服務(wù)推薦系統(tǒng)找到了對應(yīng)的搜索結(jié)果,那么服務(wù)器就會反饋給用戶,讓用戶能夠在瀏覽器中查看到。在推薦算法中,常用準確率、召回率作為評價指標來對算法的有效性進行驗證。準確率Precision與召回率Recall的計算表達如式(9)所示。
(9)
在式(9)中,∑u∈U|R(u)∩T(u)|為用戶所建議的旅行服務(wù)計劃實際發(fā)生的次數(shù)。∑u∈U|R(u)|表示推薦總項目;∑u∈U|T(u)|表示用戶實際有過行為項目。F1分值能夠兼顧精準度和召回率,可充分反映推薦算法性能的優(yōu)劣。F1分值的計算表達如式(10)所示。
(10)
此次研究通過融合云計算技術(shù)與改進的FP-growth關(guān)聯(lián)分析算法,構(gòu)建了旅游服務(wù)推薦模型。為了更好地體現(xiàn)龐大的旅游數(shù)據(jù),并從中挖掘有價值信息,研究選擇了具有代表性的旅游社區(qū)馬蜂窩來進行數(shù)據(jù)的采集。研究選用的數(shù)據(jù)采集工具為LocoySpide,該工具采用了Visual C#編寫,并將采集及整理好的旅游數(shù)據(jù)信息錄入數(shù)據(jù)庫中。先對經(jīng)過處理的信息進行時空分布格局分析,如圖4為某旅游區(qū)游客量隨月份、逗留時間、隨行人數(shù)的變化情況。
月份/月
由圖4(a)可知,在10月去旅游的游客最多,約占全年人數(shù)的22.7%。由圖4(b)可知,大多數(shù)游客會選擇3天的中期旅游。由圖4(c)可知,游客的隨行人數(shù)主要為2~4人。由結(jié)果可知,采集數(shù)據(jù)的游客具備散客特征,并且該旅游區(qū)的旅行需求的時間分布不均衡。因此,此次研究的旅游服務(wù)推薦系統(tǒng)是以散客為測試對象。研究從推薦順序中,抽取出一定數(shù)量的旅游服務(wù)項目向用戶進行推薦。通過改變推薦數(shù)量,得到推薦準確率與召回率的統(tǒng)計結(jié)果如圖5所示。
推薦數(shù)量
由圖5可知,召回率與準確率均隨著推薦數(shù)量的增加,呈現(xiàn)出先上升后下降的趨勢。準確率的最高值在推薦數(shù)量達到7的時候,其值為0.843。而召回率同樣在推薦的旅游服務(wù)項目數(shù)量達到7時取得峰值,其值為0.647。由此可見,當(dāng)推薦的旅游服務(wù)數(shù)量為7時,可取得最高的準確率與召回率。將最佳推薦數(shù)量確定為7后,將研究算法與傳統(tǒng)的FP-growth算法、隨機推薦,以及矩陣分解算法進行性能比較。如圖6為三種算法的F1分值結(jié)果。
用戶數(shù)量/人
由圖6可知,隨著用戶數(shù)量的增加,各算法的F1分值上升趨勢較為平穩(wěn)。研究算法的性能相對于其他算法提升了約40%,其分值約為0.92,相較于其他三種算法高得多。由此可知,在考慮用戶興趣特征的旅游服務(wù)項目的基礎(chǔ)上,加入遺忘函數(shù)將用戶興趣轉(zhuǎn)移到時間興趣上,能夠提高旅游服務(wù)的推薦精度。針對無用戶額外信息的推薦系統(tǒng)的冷啟動問題,研究以設(shè)計的IFP-tree上活躍度最高的旅游服務(wù)項目作為推薦的候選項。將采集到的1 000個用戶瀏覽記錄,來對研究算法的冷啟動能力進行驗證,如圖7(a)所示。研究在2 000多項旅游服務(wù)中,選取45項具有代表性的非感興趣的項目。通過對推薦用戶的數(shù)量進行調(diào)整,求得算法的無興趣剩余值如圖7(b)所示。
性能指標
由圖7(a)可知,研究算法在面對新用戶時,其推薦的召回率為0.832,準確率為0.867的分值為0.916。這表明研究算法的推薦性能效果較好,盡管由于缺少用戶信息,其對旅游服務(wù)項目推薦的效果比對老用戶的推薦效果略差,但該算法仍然較其他推薦算法的性能好。由圖7(b)可知,3種算法的變化趨勢隨用戶數(shù)量的增加基本一致。研究算法對于用戶非興趣旅游服務(wù)項目與過時數(shù)據(jù)的濾除效果最好。而傳統(tǒng)的FP-growth算法濾除用戶非興趣旅游服務(wù)項目的效果最差,這是因為在項目到達支持度閾值之后,即會一直被保留在FP-tree中。矩陣算法在當(dāng)兩個用戶的興趣相同時,推薦效果一般。由此可知,研究基于云計算技術(shù)與改進的FP-growth關(guān)聯(lián)分析算法的旅游服務(wù)推薦會較為精準地為用戶過濾其不感興趣的項目,從而實現(xiàn)較強的個性化推薦功能。
為了解決用戶在旅游服務(wù)方面的個性化需求,以及信息超載間的矛盾問題。研究基于Hadoop云計算平臺超強的計算與存儲能力,通過融合改進的FP-growth關(guān)聯(lián)分析算法,構(gòu)建了旅游服務(wù)推薦模型。仿真實驗結(jié)果表明,采集數(shù)據(jù)的游客具備散客特征,并且該旅游區(qū)的旅游需求時間分配不均。隨著用戶數(shù)量的增加,研究算法的F1分值相對于其他推薦算法提升了約40%,其分值約為0.92。表明研究算法能夠使旅游服務(wù)項目推薦的精確度更高。研究算法對于用戶非興趣旅游服務(wù)項目與過時數(shù)據(jù)的濾除效果最好,能夠精準地為用戶過濾其不感興趣的項目,從而實現(xiàn)較強的個性化推薦功能。在面對新用戶時,研究算法的召回率為0.832,準確率為0.867,F1的分值為0.916。這表明研究算法能有效改善系統(tǒng)的冷啟動問題。此次研究雖然取得了較好的成果,但缺乏實踐操作。在今后的研究中,也將繼續(xù)探索更多的推薦算法完善推薦系統(tǒng),進一步提高推薦的精確度。