李亞鵬,李敬花,張子祥,周青驊
1.哈爾濱工程大學(xué) 機(jī)電工程學(xué)院,黑龍江 哈爾濱 150001
2.哈爾濱工程大學(xué) 船舶工程學(xué)院,黑龍江 哈爾濱 150001
隨著海上生活服務(wù)平臺(tái)、旅游平臺(tái)、大型郵輪等具有高密集度人群的船海類產(chǎn)品不斷發(fā)展,船上服務(wù)行業(yè)的重要性日趨突出,越來越多的遠(yuǎn)洋客船開始利用智能化、網(wǎng)絡(luò)化的手段開發(fā)網(wǎng)絡(luò)化服務(wù)系統(tǒng),為船上乘員提供服務(wù)。同時(shí),乘員在船上生活中的個(gè)性化服務(wù)需求日益增加,如何結(jié)合乘員自身特征為其提供個(gè)性化的服務(wù)成為船上網(wǎng)絡(luò)化服務(wù)系統(tǒng)亟需解決的問題。推薦系統(tǒng)的概念提出后,在電子商務(wù)、菜品、音樂推薦等方面得到了廣泛的應(yīng)用,但結(jié)合船上服務(wù)的特殊環(huán)境,存在以下問題:
1)對(duì)首次登船乘員產(chǎn)生的服務(wù)推薦困難問題。由于遠(yuǎn)洋客船服務(wù)環(huán)境的特殊性,多數(shù)遠(yuǎn)洋客船在近幾年逐漸應(yīng)用網(wǎng)絡(luò)化服務(wù)軟件為乘員提供服務(wù)。多數(shù)乘員均為首次登船,且對(duì)于船上網(wǎng)絡(luò)化服務(wù)軟件的使用同樣尚屬首次。網(wǎng)絡(luò)化服務(wù)軟件無(wú)法獲取這些乘員的服務(wù)偏好,無(wú)法為乘員提供個(gè)性化服務(wù)。
2)服務(wù)資源使用率問題。船上各類服務(wù)項(xiàng)目存在流行度差異,部分熱門服務(wù)可能因?yàn)榇铣藛T過多存在排隊(duì)時(shí)間長(zhǎng)、人員擁堵等現(xiàn)象。如果按照傳統(tǒng)的推薦方式向乘員推薦船上服務(wù)項(xiàng)目,許多冷門的服務(wù)項(xiàng)目可能會(huì)因?yàn)榱餍卸容^低而不被人關(guān)注。面向擁有小眾愛好的乘員,無(wú)法真正為其進(jìn)行個(gè)性化推薦。
船上乘員首次登船產(chǎn)生的服務(wù)推薦困難問題是典型的新用戶冷啟動(dòng)問題。針對(duì)冷啟動(dòng)問題國(guó)內(nèi)外已經(jīng)進(jìn)行了大量研究,并且在我們?nèi)粘J褂玫挠啿图百?gòu)物等平臺(tái)上已經(jīng)應(yīng)用,部分依然存在過擬合的問題,不能很好地滿足用戶的需求。關(guān)于冷啟動(dòng)模式研究還在不斷發(fā)展,其中包括基于項(xiàng)目流行度、項(xiàng)目評(píng)分、用戶參與、輔助數(shù)據(jù)、多媒體信息推薦、跨領(lǐng)域推薦等傳統(tǒng)方式[1-2];也包含有融合用戶偏好屬性、熱門物品懲罰因子、項(xiàng)目流行度的改進(jìn)冷啟動(dòng)推薦模型[3-4],通過融合推薦項(xiàng)目屬性信息、反向信息[5]或統(tǒng)計(jì)學(xué)信息[6]來進(jìn)一步提高推薦準(zhǔn)確程度。隨著冷啟動(dòng)問題的深入研究,研究人員通過對(duì)基本的策略方法整合改進(jìn),建立了針對(duì)用戶獲得推薦信息前后場(chǎng)景動(dòng)態(tài)變化的模型[7],包括考慮動(dòng)態(tài)情景和動(dòng)態(tài)時(shí)間的推薦策略方法[8];另一方面也有通過融合條件構(gòu)建主體進(jìn)行主體建模的方法[9-10],對(duì)不同以及新進(jìn)用戶進(jìn)行高效推薦,更好地解決冷啟動(dòng)問題。為使船上乘員能夠更好地享受船上服務(wù),充分利用船上各類服務(wù)項(xiàng)目資源,提高船上網(wǎng)絡(luò)化服務(wù)系統(tǒng)推薦質(zhì)量[11],本文將結(jié)合某國(guó)產(chǎn)大型客船船上服務(wù)智慧社區(qū)系統(tǒng)研發(fā)項(xiàng)目,針對(duì)面向乘員的船上服務(wù)冷啟動(dòng)個(gè)性化推薦系統(tǒng)部分進(jìn)行研究。通過將人口統(tǒng)計(jì)學(xué)方法和乘員初始標(biāo)簽與傳統(tǒng)協(xié)同過濾推薦算法相結(jié)合的方式,進(jìn)行乘員群體的預(yù)處理,同時(shí)根據(jù)項(xiàng)目的流行度和客容量對(duì)推薦內(nèi)容進(jìn)行實(shí)時(shí)調(diào)整,以達(dá)到對(duì)乘員的個(gè)性化推薦效果。
對(duì)于冷啟動(dòng)推薦系統(tǒng),除了通過利用注冊(cè)用戶提交的基本信息,還可以結(jié)合用戶對(duì)初始采集時(shí)特定項(xiàng)目的評(píng)分和瀏覽記錄來引導(dǎo)乘員進(jìn)行興趣顯示,設(shè)置初始化界面。目前,多數(shù)用戶為獲得軟件或網(wǎng)站提供的個(gè)性化推薦信息,不介意提供個(gè)人的性別、年齡、職業(yè)、教育背景和興趣愛好等相對(duì)不敏感的信息;更多的軟件通過QQ、微信等社交軟件進(jìn)行登陸,這種方式能夠獲得更加完善的用戶信息?;谌丝诮y(tǒng)計(jì)學(xué)的推薦算法是將用戶的性別、年齡、職業(yè)、地區(qū)等信息構(gòu)建用戶特征模型,并根據(jù)特征模型來計(jì)算用戶之間的相似性,從而找到相似用戶,獲得推薦信息,其基本流程圖1 所示。
圖1 基于人口統(tǒng)計(jì)學(xué)算法基本
基于人口統(tǒng)計(jì)學(xué)的推薦算法不需要?dú)v史數(shù)據(jù),沒有用戶冷啟動(dòng)問題,也不依賴于物品屬性。但由于算法采樣信息比較局限,獲取信息精確度不夠,不能夠保證提供準(zhǔn)確且根據(jù)用戶習(xí)慣調(diào)整的推薦模型。因此本文設(shè)計(jì)的推薦系統(tǒng)在初始時(shí)刻考慮用戶地區(qū)、年齡、職業(yè)等信息進(jìn)行層次聚類以確定相似群體作為用戶首次使用的推薦依據(jù)[12],并且通過初始興趣愛好標(biāo)簽采集作為推薦打分的一部分,而后用戶的個(gè)性化需求還需要與其他推薦算法結(jié)合使用,從而得到更加準(zhǔn)確的推薦結(jié)果。
協(xié)同過濾算法通??梢苑譃榛谟脩舻膮f(xié)同過濾算法(user-based collaborative filtering,UBCF)(如圖2)和基于物品的協(xié)同過濾算法(item-based collaborative filtering,IBCF)[13]2 種類型。結(jié)合船上服務(wù)特點(diǎn),本文將采用基于用戶的協(xié)同過濾算法,以用戶偏好的信息作為輸入數(shù)據(jù)集,通過選擇相似度計(jì)算方式對(duì)相似度進(jìn)行量化計(jì)算得到最近鄰用戶集,以此為用戶推薦個(gè)性化的服務(wù)項(xiàng)目。
圖2 基于用戶的協(xié)同過濾算法
相似度計(jì)算需要找到目標(biāo)用戶的最近鄰用戶集,最終為目標(biāo)用戶生成一組推薦。通常包括以下3 個(gè)步驟。
1)用戶數(shù)據(jù)表示。使用m×n階矩陣來表示用戶的評(píng)分信息,如表1 所示。評(píng)分分為5 個(gè)等級(jí),其中一般是以1~5 的整數(shù)取值,用以表示用戶對(duì)偏好的喜愛程度。
2)相似性計(jì)算。計(jì)算用戶間相似性的目的是為目標(biāo)用戶找到最鄰近的用戶集,相似度一般用sim(s,t)來表示,在進(jìn)行相似度計(jì)算時(shí)有歐式距離、余弦相似度和Pearson 相關(guān)系數(shù)等方法[14]。
歐式距離法。歐氏距離法通過計(jì)算2 點(diǎn)間的絕對(duì)距離來衡量相似性,用一行n列的行向量Au來表示用戶u對(duì)所有項(xiàng)目的評(píng)分,其計(jì)算公式如下
式中:Au和Av表示用戶u、v的特征向量;sim(u,v)值越大,說明用戶間相似性越高。
余弦相似度法。通過2 個(gè)用戶向量的夾角余弦值大小來量化用戶之間的相似度,通過計(jì)算可得其余弦角越大相似度越高。余弦相似性的計(jì)算公式為
Pearson 相關(guān)系數(shù)法。設(shè)用戶u、v進(jìn)行過相同評(píng)分的集合為I,則用戶u、v之間的 sim(u,v)可通過Pearson 系數(shù)進(jìn)行計(jì)算。其計(jì)算公式為
式中:Ru,i、Rv,i分別表示用戶u、v對(duì)偏好項(xiàng)目i的評(píng)分,和分別表示用戶u、v對(duì)所有項(xiàng)目的平均評(píng)分。
3)生成推薦序列。選擇一種相似度計(jì)算方式計(jì)算用戶之間的相似度得到最近鄰用戶集,用Pu,i表示用戶u對(duì)偏好項(xiàng)目i的預(yù)測(cè)評(píng)分,可通過用戶u對(duì)最近鄰集合U中用戶的評(píng)分加權(quán)相似度的值得到。其計(jì)算公式為
根據(jù)項(xiàng)目需求情況采用單個(gè)項(xiàng)目的相似度或者平均相似度作為依據(jù)標(biāo)準(zhǔn),選擇評(píng)分最高的個(gè)偏好項(xiàng)目推薦給目標(biāo)用戶。
為緩解乘員首次登船時(shí)產(chǎn)生的冷啟動(dòng)問題,對(duì)基于人口統(tǒng)計(jì)學(xué)的推薦算法進(jìn)行改進(jìn)。在考慮用戶屬性對(duì)相似度的影響時(shí),會(huì)存在如用戶a和用戶b在用戶性別、年齡等基礎(chǔ)屬性上差異較大,但興趣愛好類似的情況。由此考慮在推薦船上服務(wù)項(xiàng)目時(shí),興趣愛好這一屬性的權(quán)值應(yīng)大于乘員基本屬性。因此,在乘員首次登船使用船上網(wǎng)絡(luò)化服務(wù)軟件或系統(tǒng)時(shí),提供愛好標(biāo)簽供乘員進(jìn)行選擇,記錄乘員的興趣愛好標(biāo)簽信息。
乘員在登船時(shí),通過乘員注冊(cè)信息可以獲取到的用戶基本屬性包括年齡、性別、職業(yè),如表2所示。原始的乘員人口統(tǒng)計(jì)學(xué)信息需要處理后使用。
表2 乘員人口統(tǒng)計(jì)學(xué)信息
乘員年齡。首先根據(jù)年齡段對(duì)乘員年齡信息進(jìn)行處理,將乘員年齡劃分為7 組數(shù)據(jù)(用數(shù)值1—7 表示):年齡小于18 歲、年齡18~25 歲、年齡26~33 歲、年齡34~41 歲、年齡42~49 歲、年齡50~57歲以及年齡58 歲及以上。
乘員性別。性別男(M)、女(F)分別用1、0表示。
乘員職業(yè)。原有乘員表中有X個(gè)分類,根據(jù)《中華人民共和國(guó)職業(yè)分類大典》,將所有乘員職業(yè)分為7 類,使用數(shù)字1—7 表示。
用戶屬性差異度值越大,說明用戶間相似性越高。
乘員在首次使用船上網(wǎng)絡(luò)化服務(wù)軟件或系統(tǒng)時(shí),選擇個(gè)人的愛好屬性標(biāo)簽,即通過字段來描述這一屬性。通過用戶標(biāo)簽與已有用戶選擇標(biāo)簽的情況進(jìn)行對(duì)比分析得到之間的相似度情況,并將得到的相似度情況作為首次使用的推薦情況,計(jì)算公式為
式中:n為可供選擇的所有標(biāo)簽數(shù),k為目標(biāo)用戶s與已有用戶t之間共有標(biāo)簽的數(shù)量。
在進(jìn)行用戶間相似度計(jì)算時(shí),引入權(quán)重系數(shù)W,用來調(diào)節(jié)不同屬性在進(jìn)行相似度計(jì)算時(shí)各自所占的權(quán)重[15]。為保證算法在目標(biāo)用戶產(chǎn)生評(píng)分信息后仍然能夠持續(xù)地進(jìn)行推薦,將上述根據(jù)用戶屬性的相似度計(jì)算方法與Pearson 相關(guān)系數(shù)法結(jié)合,形成的用戶s和t之間的相似度計(jì)算方法為
式中w1+w2+w3=1。
目標(biāo)用戶項(xiàng)目評(píng)分預(yù)測(cè):在完成目標(biāo)用戶與現(xiàn)有用戶相似度計(jì)算后,按照相似度從高到低選取K個(gè)用戶作為目標(biāo)用戶的近鄰用戶集,記為Ni=(N1,N2,···,NK),同時(shí),合并所有近鄰用戶Ni的評(píng)分項(xiàng)目集合為C。
對(duì)所有船上項(xiàng)目x屬于集合C,計(jì)算目標(biāo)用戶的預(yù)測(cè)評(píng)分,計(jì)算公式為
式中:Pi,x為目標(biāo)用戶i對(duì)項(xiàng)目x的預(yù)測(cè)評(píng)分,Rx為用戶i的近鄰集,Rj,x為用戶j對(duì)項(xiàng)目x的評(píng)分,sim(i,j)為用戶i與用戶j之間的相似性。
將目標(biāo)用戶對(duì)其近鄰項(xiàng)目集合C中所有項(xiàng)目的預(yù)測(cè)評(píng)分按照按降序進(jìn)行排序,選取前N個(gè)項(xiàng)目作為目標(biāo)用戶的推薦序列。
前述研究中,基于船上新乘員的人口統(tǒng)計(jì)學(xué)數(shù)據(jù)以及喜好標(biāo)簽信息,初始化其與其他乘客的相似度列表,得到最近鄰用戶集,以此來預(yù)測(cè)新乘客的偏好信息。但是,在整個(gè)過程中,船上不同偏好項(xiàng)目的權(quán)重始終保持為一種狀態(tài)是不合理的。因?yàn)閺纳鐣?huì)學(xué)角度來看,所有事物都遵循著“馬太效應(yīng)”。比如在電商網(wǎng)站中,流行的商品容易被更多人購(gòu)買,同時(shí)冷門的商品則會(huì)變得愈加不被人們發(fā)現(xiàn)與了解,顯然這并不符合個(gè)性化推薦的初衷。船上各類服務(wù)項(xiàng)目預(yù)設(shè)有每日客容量屬性,但由于存在流行度差異,部分熱門服務(wù)可能因?yàn)榇铣藛T過多前往而導(dǎo)致出現(xiàn)排隊(duì)時(shí)間長(zhǎng)、人員擁堵等現(xiàn)象。以此在進(jìn)行推薦模型建立的過程中也需要避免產(chǎn)生過擬合的情況,即為所有用戶都推薦最熱門的項(xiàng)目的同時(shí)需要考慮船上服務(wù)項(xiàng)目容量屬性,并進(jìn)行均衡??紤]到一些用戶的個(gè)性化需求的特點(diǎn),冷門項(xiàng)目的推薦則更能體現(xiàn)系統(tǒng)針對(duì)用戶的細(xì)微特點(diǎn)偏好提供的優(yōu)質(zhì)服務(wù)特性,同時(shí)避免了過量用戶非個(gè)性化興趣的數(shù)據(jù)所占權(quán)重過大情況。
在船上各類服務(wù)項(xiàng)目使用過程中,船上網(wǎng)絡(luò)化服務(wù)系統(tǒng)能夠采集到所有項(xiàng)目每日使用情況,結(jié)合項(xiàng)目預(yù)設(shè)每日客容量,在目標(biāo)用戶項(xiàng)目評(píng)分預(yù)測(cè)公式中引入考慮項(xiàng)目流行度和客容量的權(quán)重因子。船上項(xiàng)目x預(yù)設(shè)每日客容量為m,實(shí)際每日接待乘員數(shù)量為n,權(quán)重因子計(jì)算僅統(tǒng)計(jì)最近30 d乘員使用數(shù)據(jù)。將每個(gè)項(xiàng)目的平均使用率作為項(xiàng)目流行度,則Qx=n/m為每日項(xiàng)目使用率,Qˉx為近30 d 內(nèi)該項(xiàng)目的每日平均使用率,即該項(xiàng)目在近30 d 內(nèi)的流行度。用Qmin表示最不流行項(xiàng)目的流行度,Qmax表示最流行項(xiàng)目的流行度,則項(xiàng)目流行度和客容量的權(quán)重因子為
因此,將考慮項(xiàng)目流行度和客容量的權(quán)重因子添加到目標(biāo)用戶評(píng)分預(yù)測(cè)公式中進(jìn)行修正,得到新的評(píng)分預(yù)測(cè)公式:
通過加入項(xiàng)目流行度作為約束條件對(duì)模型進(jìn)行改進(jìn)得到新的最近鄰項(xiàng)目集合,將目標(biāo)用戶對(duì)其近鄰項(xiàng)目集合C中所有項(xiàng)目的預(yù)測(cè)評(píng)分按照降序進(jìn)行排序,取前N個(gè)項(xiàng)目作為目標(biāo)用戶的推薦序列。
本文所介紹船上推薦服務(wù)系統(tǒng)通過與某國(guó)產(chǎn)大型客船船上服務(wù)智慧社區(qū)系統(tǒng)研發(fā)項(xiàng)目相結(jié)合,并與船上訂餐系統(tǒng)和船上導(dǎo)航系統(tǒng)實(shí)現(xiàn)集成兼容,作為系統(tǒng)子環(huán)節(jié)進(jìn)行乘客服務(wù),面向大型郵輪、客船人員密集、對(duì)服務(wù)質(zhì)量要求高的特點(diǎn),進(jìn)行針對(duì)性的冷啟動(dòng)服務(wù),以提供更好的用戶體驗(yàn)。系統(tǒng)主要功能界面如圖3 所示。
圖3 高技術(shù)客船網(wǎng)絡(luò)化服務(wù)平臺(tái)主功能界面
本文驗(yàn)證設(shè)備及環(huán)境參數(shù)如下:操作系統(tǒng)為windows10-64 bits,環(huán)境配置為Anaconda3、Python3.8.8,處理器為intel i7-8550U,內(nèi)存為 8 GB。
在對(duì)所設(shè)計(jì)推薦算法的具體驗(yàn)證中結(jié)合船舶智能化推薦服務(wù)中需求,本文將以菜品推薦為例進(jìn)行面向冷啟動(dòng)乘員的船上服務(wù)個(gè)性化推薦方法驗(yàn)證分析,其中測(cè)試數(shù)據(jù)集選擇來自大眾點(diǎn)評(píng),數(shù)據(jù)信息說明如表3 所示,用戶評(píng)分?jǐn)?shù)據(jù)格式如表4 所示。
表3 數(shù)據(jù)信息說明
表4 用戶評(píng)分?jǐn)?shù)據(jù)格式
測(cè)試數(shù)據(jù)集由restaurants、ratings 和links 這3 個(gè)部分?jǐn)?shù)據(jù)構(gòu)成,其中rating 部分包含口味評(píng)分rating_flavor、環(huán)境評(píng)分rating_env 和服務(wù)評(píng)分rating_service。本文只選擇利用口味評(píng)分作為打分依據(jù),通過對(duì)數(shù)據(jù)(其中包括缺失數(shù)據(jù)及異常數(shù)據(jù)清理)預(yù)處理,針對(duì)餐廳評(píng)分?jǐn)?shù)據(jù)進(jìn)行匹配推薦,將推薦結(jié)果通過映射關(guān)系為特色菜品評(píng)分,從而滿足本文實(shí)驗(yàn)驗(yàn)證分析需要。
1)進(jìn)行人口統(tǒng)計(jì)學(xué)分類處理。如表2 所示,通過在系統(tǒng)初始冷啟動(dòng)階段對(duì)乘員人口統(tǒng)計(jì)學(xué)信息的收集,對(duì)其中包括年齡、性別、職業(yè)、地區(qū)及與菜品口味的關(guān)聯(lián)情況進(jìn)行聚類分析。此處針對(duì)菜品推薦,選擇將國(guó)內(nèi)地區(qū)作為主要因素進(jìn)行差異性層次系統(tǒng)服務(wù)進(jìn)行層次聚類分析,劃分不同口味。淡味區(qū):江蘇、浙江、上海、福建、廣東、香港、澳門;微辣區(qū):山東、江西、北京、廣西、陜西、寧夏、甘肅、青海、新疆;重辣區(qū):湖北、湖南、貴州,重慶、四川;多味區(qū):河南、安徽、河北、天津、黑龍江、吉林、遼寧、內(nèi)蒙古、西藏、云南、海南、臺(tái)灣。根據(jù)K-means 聚類結(jié)果,將每個(gè)類組作為考慮項(xiàng)目流行度和客容量的協(xié)同過濾推薦系統(tǒng)的輸入數(shù)據(jù)進(jìn)行處理,以提高系統(tǒng)在冷啟動(dòng)時(shí)的推薦精度。輸入數(shù)據(jù)經(jīng)過處理表現(xiàn)形式通常為1 個(gè)如表1 格式的i×j的用戶評(píng)價(jià)矩陣,其中i是乘員數(shù),j是菜品數(shù),Matrix[i,j]表示第i個(gè)乘員對(duì)第f個(gè)菜品的評(píng)價(jià)。
2)進(jìn)行基于協(xié)同過濾算法的推薦。程序具體實(shí)現(xiàn)步驟如圖4 所示。
圖4 協(xié)同過濾步驟
在結(jié)合數(shù)據(jù)集進(jìn)行算法驗(yàn)證過程中通過設(shè)置用戶1 為目標(biāo)推薦用戶進(jìn)行推薦,其中關(guān)于目標(biāo)用戶1 的相關(guān)數(shù)據(jù)如表5 所示。通過上述所設(shè)計(jì)模型得到推薦結(jié)果如表6 所示,其中設(shè)置相鄰用戶n為6,設(shè)置推薦個(gè)數(shù)k為4。
表5 目標(biāo)推薦用戶1 相關(guān)數(shù)據(jù)
表6 推薦結(jié)果
本文通過對(duì)船上服務(wù)冷啟動(dòng)進(jìn)行分析,建立服務(wù)推薦模型,在傳統(tǒng)協(xié)同過濾推薦算法基礎(chǔ)上,結(jié)合人口統(tǒng)計(jì)學(xué)方法和乘員初始標(biāo)簽選擇,實(shí)現(xiàn)對(duì)新乘員進(jìn)行個(gè)性化推薦,進(jìn)而提升乘員的服務(wù)體驗(yàn)。通過在實(shí)際海上客運(yùn)服務(wù)系統(tǒng)中進(jìn)行實(shí)例驗(yàn)證,證明可用于船舶服務(wù)智能化推薦。
本文研究方法可使船上乘員能夠更好地享受船上服務(wù),充分利用船上各類服務(wù)項(xiàng)目資源,提高船上網(wǎng)絡(luò)化服務(wù)系統(tǒng)推薦質(zhì)量。本文方法仍需做進(jìn)一步改進(jìn)研究,存在諸如針對(duì)每種服務(wù)仍然要進(jìn)行不同的人口統(tǒng)計(jì)學(xué)分析,進(jìn)行菜品推薦時(shí)地區(qū)因素所占權(quán)重較高,但在進(jìn)行電影推薦時(shí)年齡及性別因素所占權(quán)重就要大于地區(qū),這些問題都有待進(jìn)一步優(yōu)化服務(wù)場(chǎng)景,以進(jìn)行更加準(zhǔn)確的相似度計(jì)算。此外,對(duì)不同船上服務(wù)項(xiàng)目推薦實(shí)現(xiàn)需要與船上服務(wù)項(xiàng)目客容量、交通等設(shè)施的動(dòng)態(tài)變化相融合,通過對(duì)用戶屬性權(quán)重進(jìn)行動(dòng)態(tài)調(diào)整以達(dá)到更好的推薦效果。