林芷航
(閩江學院 經濟與管理學院,福建 福州 350108)
旅游服務推薦是當前旅游業應用廣泛的營銷策略,但隨著旅游數據的日漸增多,對于數據的處理與存儲變得越發困難[1]。并且搜索引擎的信息檢索越來越難以滿足用戶多樣化的個性化需求,也很難對信息負載問題進行高效處理。因此,尋找解決用戶個性化需求與信息超載間的矛盾問題的方法極為重要。推薦系統不僅能夠用于解決信息過載,還可通過推薦技術為用戶找到潛在的需求信息[2]。Hadoop云計算平臺是當前最好的大數據分析工具,其MapReduce能通過分布計算迅速地處理龐大繁雜的數據[3]。FP-growth算法是一種運行效率高、步驟簡單的能夠加快數據挖掘過程的關聯分析算法[4]。該算法采用了一種頻繁模式樹(Frequent Pattern Tree,FP-tree)的數據結構,該結構是加快整個挖掘過程的關鍵[5]。由于FP-growth算法要求具有FP-tree的遞歸生成條件,因而導致其內存開銷較大。為此,研究提出對FP-growth算法的FP-tree結構進行優化,并將改進后的算法與云計算結合應用于旅游服務推薦系統上,旨在實現更為精準高效的旅游服務推薦。
云計算是通過計算機網絡形成的計算能力超強的系統,其核心理念是以Internet為核心,為用戶提供快捷、安全的云計算服務和數據存儲,使海量的計算資源和數據中心得以充分利用。Hadoop是極為優秀的云計算平臺,其主要由MapReduce與HDFS組成。MapReduce能夠利用分布式計算快速處理龐大的數據,而HDFS包含了hive與hbase等存儲與操作大量數據超強的子項目[6]。在Hadoop平臺上實現旅游服務推薦系統,既能解決龐大的旅游數據的存儲問題,也能實現復雜的計算。
如圖1所示,為基于云計算的旅游服務推薦系統。此次研究的核心部分是云計算平臺推薦算法的設計,主要包括:數據采集、數據預處理與分析、并行推薦算法,以及服務推薦實現。

圖1 云計算下的旅游服務推薦系統框架
由于旅游數據結構化與非結構化不一,因此在獲取過程中需要進行合理分類。研究選擇的數據采集工具為LocoySpider,其還能對采集好的資源進行有效分類。在時間分布上,旅游季節性主要表現為游客接待量的不均衡性。因此研究以游客人數指標,對游客量的時間分布特征進行研究,對季節性強度指數與游客的特征進行展開分析。如式(1)為季節性強度指數的計算。
(1)
在式(1)中,8.33表示在全年絕對平均的前提下,計算出來的每月總收入占全年總收入的百分比。xi表示每月游客人數占全年總人數的比例。當R越接近0,在旅游需求時間的分配上則越均衡。在整個旅游流網絡中,其規模指的是旅游網絡節點數量。有向網絡圖所有可能的關系數量見式(2)。
Z=k×(k-1) ,
(2)
在式(2)中,k代表旅游觀光節點數目。旅游網絡密度反映了各結點之間的關聯度,即實際聯系和理論聯系的總值,見式(3)。
(3)
在式(3)中,di(ni,nj)表示節點ni與nj間的關系量。D的取值為0~1,0表示節點間不存在聯系,1代表所有的旅游景點在理想的情況下緊密聯系。同時,在旅游網絡分析中,必須充分考慮到核心問題。中心性是對行動者具有權利,或是居于某中心地位的量化。在旅游流網中,以中心旅游節點向其余節點輻射、集聚的能力來體現中心性。傳統的FP-growth算法只能根據用戶對某一項的興趣進行挖掘,而不能得到該項的訪問數量。因而研究認為使用標準化的訪問頻率可以更好地反映出游客對旅游項目的興趣。見式(4)為用戶對項目的興趣值計算表達式[7]。
(4)
在式(3)中,fu,i表示用戶u對旅游服務項目i的訪問頻次。其中,I={i1,i2,…,in}表示旅游服務項目的集合。雖然興趣值被反映在[0-1]的區間內,然而不能反映隨著時間推移用戶興趣的改變。因此,研究引入了遺忘函數,來反映用戶隨時間變化的興趣值,如式(5)[8]。
f(t)=exp(-λ·Δt),
(5)
在式(5)中,λ表示遺忘因子對遺忘的速度控制。根據經驗,90天之后,將該數據的權重降低到1/2。再結合式(1)與式(2),得到的表達式如式(6)所示。
(6)

(7)

研究通過改進FP-growth算法構建的IFP-tree是以游客最感興趣的旅游服務為基礎,從中找出與之相關的最多的頻繁項,由此形成了一系列的推薦順序。最后由相似度排序獲得最終的推薦序列,嘗試以此獲得較為精準的用戶感興趣的旅游服務項目。FP-growth算法主要基于FP-tree結構加快整個挖掘過程。針對傳統FP-tree的簡單結構,提出了一個項目的活動度來表達旅游項目的受喜愛程度。將旅游服務項目活躍度稱為每個項目的節點數與利息值的乘積,其計算如式(8)[10]所示。
(8)

圖2 旅游推薦服務的離線與在線部分模型設計
如圖2(a)所示,離線部分對于準備好的數據需要經過預處理,轉換成FP-growth算法所能處理的信息。該算法的完成主要經過如圖2(a)所示的4步操作。關聯規則挖掘需要關注支持度與置信度[12]。在該系統中,支持度的選擇需根據事務量決定。但若該參數值設置過高,會導致挖掘結果數量太少,反之,則會造成數量太多。該方法通過算法直接求出可信度,然后在前X項中選取具有高可信度的結果。如圖2(b)所示,在線部分包括了三層架構,該架構主要體現了“高內聚,低耦合”的思想[13]。在線部分會根據系統的使用情況,為其提供個性化的旅游服務推薦。整個旅游服務推薦的流程如圖3所示。

圖3 旅游推薦服務流程圖
在圖3中,該推薦系統采用了B-S結構,可以方便地訪問服務器資源。在用戶獲取旅游服務的過程中,首先登錄推薦系統,然后由用戶在站點中進行瀏覽。并且,將會按照他們的興趣記錄、瀏覽記錄,以及用戶瀏覽景點記錄等所產生的常規規則進行匹配。
如果旅游服務推薦系統找到了對應的搜索結果,那么服務器就會反饋給用戶,讓用戶能夠在瀏覽器中查看到。在推薦算法中,常用準確率、召回率作為評價指標來對算法的有效性進行驗證。準確率Precision與召回率Recall的計算表達如式(9)所示。
(9)
在式(9)中,∑u∈U|R(u)∩T(u)|為用戶所建議的旅行服務計劃實際發生的次數。∑u∈U|R(u)|表示推薦總項目;∑u∈U|T(u)|表示用戶實際有過行為項目。F1分值能夠兼顧精準度和召回率,可充分反映推薦算法性能的優劣。F1分值的計算表達如式(10)所示。
(10)
此次研究通過融合云計算技術與改進的FP-growth關聯分析算法,構建了旅游服務推薦模型。為了更好地體現龐大的旅游數據,并從中挖掘有價值信息,研究選擇了具有代表性的旅游社區馬蜂窩來進行數據的采集。研究選用的數據采集工具為LocoySpide,該工具采用了Visual C#編寫,并將采集及整理好的旅游數據信息錄入數據庫中。先對經過處理的信息進行時空分布格局分析,如圖4為某旅游區游客量隨月份、逗留時間、隨行人數的變化情況。

月份/月
由圖4(a)可知,在10月去旅游的游客最多,約占全年人數的22.7%。由圖4(b)可知,大多數游客會選擇3天的中期旅游。由圖4(c)可知,游客的隨行人數主要為2~4人。由結果可知,采集數據的游客具備散客特征,并且該旅游區的旅行需求的時間分布不均衡。因此,此次研究的旅游服務推薦系統是以散客為測試對象。研究從推薦順序中,抽取出一定數量的旅游服務項目向用戶進行推薦。通過改變推薦數量,得到推薦準確率與召回率的統計結果如圖5所示。

推薦數量
由圖5可知,召回率與準確率均隨著推薦數量的增加,呈現出先上升后下降的趨勢。準確率的最高值在推薦數量達到7的時候,其值為0.843。而召回率同樣在推薦的旅游服務項目數量達到7時取得峰值,其值為0.647。由此可見,當推薦的旅游服務數量為7時,可取得最高的準確率與召回率。將最佳推薦數量確定為7后,將研究算法與傳統的FP-growth算法、隨機推薦,以及矩陣分解算法進行性能比較。如圖6為三種算法的F1分值結果。

用戶數量/人
由圖6可知,隨著用戶數量的增加,各算法的F1分值上升趨勢較為平穩。研究算法的性能相對于其他算法提升了約40%,其分值約為0.92,相較于其他三種算法高得多。由此可知,在考慮用戶興趣特征的旅游服務項目的基礎上,加入遺忘函數將用戶興趣轉移到時間興趣上,能夠提高旅游服務的推薦精度。針對無用戶額外信息的推薦系統的冷啟動問題,研究以設計的IFP-tree上活躍度最高的旅游服務項目作為推薦的候選項。將采集到的1 000個用戶瀏覽記錄,來對研究算法的冷啟動能力進行驗證,如圖7(a)所示。研究在2 000多項旅游服務中,選取45項具有代表性的非感興趣的項目。通過對推薦用戶的數量進行調整,求得算法的無興趣剩余值如圖7(b)所示。

性能指標
由圖7(a)可知,研究算法在面對新用戶時,其推薦的召回率為0.832,準確率為0.867的分值為0.916。這表明研究算法的推薦性能效果較好,盡管由于缺少用戶信息,其對旅游服務項目推薦的效果比對老用戶的推薦效果略差,但該算法仍然較其他推薦算法的性能好。由圖7(b)可知,3種算法的變化趨勢隨用戶數量的增加基本一致。研究算法對于用戶非興趣旅游服務項目與過時數據的濾除效果最好。而傳統的FP-growth算法濾除用戶非興趣旅游服務項目的效果最差,這是因為在項目到達支持度閾值之后,即會一直被保留在FP-tree中。矩陣算法在當兩個用戶的興趣相同時,推薦效果一般。由此可知,研究基于云計算技術與改進的FP-growth關聯分析算法的旅游服務推薦會較為精準地為用戶過濾其不感興趣的項目,從而實現較強的個性化推薦功能。
為了解決用戶在旅游服務方面的個性化需求,以及信息超載間的矛盾問題。研究基于Hadoop云計算平臺超強的計算與存儲能力,通過融合改進的FP-growth關聯分析算法,構建了旅游服務推薦模型。仿真實驗結果表明,采集數據的游客具備散客特征,并且該旅游區的旅游需求時間分配不均。隨著用戶數量的增加,研究算法的F1分值相對于其他推薦算法提升了約40%,其分值約為0.92。表明研究算法能夠使旅游服務項目推薦的精確度更高。研究算法對于用戶非興趣旅游服務項目與過時數據的濾除效果最好,能夠精準地為用戶過濾其不感興趣的項目,從而實現較強的個性化推薦功能。在面對新用戶時,研究算法的召回率為0.832,準確率為0.867,F1的分值為0.916。這表明研究算法能有效改善系統的冷啟動問題。此次研究雖然取得了較好的成果,但缺乏實踐操作。在今后的研究中,也將繼續探索更多的推薦算法完善推薦系統,進一步提高推薦的精確度。