唐東平,方民俊,吳邵宇
(華南理工大學(xué),廣東 廣州 510640)
“民以食為天”,隨著互聯(lián)網(wǎng)技術(shù)的推廣,餐飲行業(yè)成功地實(shí)現(xiàn)了從線上到線上的轉(zhuǎn)型,“互聯(lián)網(wǎng)+餐飲”作為現(xiàn)階段餐飲領(lǐng)域的熱門應(yīng)用在各種各樣的場景,人們不僅可以利用此方式團(tuán)購美食和訂購?fù)赓u,而且可以從中找到適合自己的餐飲以及通過美食形成交友圈[1]。
餐飲O2O雖然提高了人們的生活效率,但人們經(jīng)常無法正確選擇符合其自身的食物。第一,面對種類繁多的食物,加上缺乏一定的營養(yǎng)健康理論基礎(chǔ),人們很難準(zhǔn)確地判斷出有利于其健康的食物[2];第二,人們比較容易受到外界條件的干擾從而做出飲食的選擇,例如受到其他消費(fèi)者的評分、天氣、地理位置等因素的影響[3]。綜上原因,為用戶推薦出適合的餐飲很有必要,既能改善用戶的餐飲O2O體驗,又能推動餐飲O2O的發(fā)展,使其更加智能化、人性化。
在此背景下,該文從用戶的心理認(rèn)知出發(fā),當(dāng)系統(tǒng)把餐飲推薦給時用戶時,用戶的心理認(rèn)知直接決定了該推薦信息是否有效、是否確切地實(shí)現(xiàn)個性化推薦。個性化推薦質(zhì)量的提高,能有效地提高用戶的使用頻率,增加用戶對推薦系統(tǒng)的信任程度。個性化推薦可定義為,A用戶在網(wǎng)站留下如購買、評價等行為數(shù)據(jù),假如B用戶與A用戶具有相似的歷史行為數(shù)據(jù),則B用戶為相似用戶,并且可以將A用戶具備而B用戶不具備的愛好推薦給B用戶。運(yùn)用此原理,當(dāng)目標(biāo)用戶打開餐飲網(wǎng)站或軟件時,可以迅速推薦可能適合他們的食物[3]。
基于協(xié)同過濾的推薦方法是個性化推薦方法的一種思路,由于互聯(lián)網(wǎng)的餐飲推薦是動態(tài)的,因此該文加入上下文感知因素,研究基于上下文感知的協(xié)同過濾推薦算法。根據(jù)Dey對上下文感知的定義,用戶和環(huán)境等上下文夠為用戶反饋出符合當(dāng)前上下文的信息[4]。該文采用上下文后過濾模式在忽略上下文信息的前提下,先運(yùn)用傳統(tǒng)方法進(jìn)行推薦,再匹配符合用戶當(dāng)前上下文的數(shù)據(jù)從而實(shí)現(xiàn)推薦。
該文區(qū)分項目資源的選擇偏好和評分偏好,認(rèn)為上下文信息與評分偏好之間的關(guān)系是松耦合的關(guān)系,即用戶對項目的喜歡程度很大程度上影響著其對項目評分的高低,然而環(huán)境、地點(diǎn)等上下文信息的記錄反映出了用戶會在何種信息對該項目發(fā)出請求。換言之,在上下文信息的綜合影響下,用戶項目選擇的感知不清晰,而上下文對項目選擇的影響通常是根據(jù)概率的,即對于某種類型或具有某種屬性的項目在不同的上下文條件下有相應(yīng)的概率被觸發(fā)。
基于上下文的推薦算法,一般需要結(jié)合基于用戶或物品的協(xié)同過濾推薦算法進(jìn)行改進(jìn)[5]。根據(jù)傳統(tǒng)的協(xié)同過濾算法,通常是依用戶或物品之間的歐氏距離定義鄰居集,進(jìn)而在鄰居數(shù)據(jù)中實(shí)現(xiàn)推薦過程。在傳統(tǒng)的協(xié)同過濾算法思想的基礎(chǔ)上,該文改進(jìn)的基于上下文感知的協(xié)同過濾算法的主要流程如圖1所示。
圖1 基于上下文的協(xié)同過濾算法流程
一般地,基于內(nèi)容的推薦算法僅是簡單地直接根據(jù)用戶對項目的評分推算目標(biāo)用戶感興趣的項目或目標(biāo)用戶的近鄰用戶并向目標(biāo)用戶推薦項目,這種通過評分信息把項目推薦給目標(biāo)用戶的方式可能會因為疏忽了用戶偏好的具體細(xì)節(jié)而影響推薦的效果[6]。這類研究通常是基于分類的思想來挖掘用戶對資源類別的粗粒度興趣偏好,因此難以有效地反映用戶對項目資源多個屬性特征的偏好情況。若進(jìn)一步劃分和挖掘用戶的粗粒度興趣偏好,則能夠更加準(zhǔn)確地理解用戶對項目資源的需求。朱磊等人研究了基于評分偏好和項目屬性的協(xié)同過濾算法,物品的相似度公式改進(jìn)后融合時間參數(shù),結(jié)果表明,改進(jìn)算法的準(zhǔn)確率和召回率在MovieLens-100K數(shù)據(jù)集上提高了9%~27%,在MovieLens-Latest-Small數(shù)據(jù)集上提高了16%~28%[7]。該文認(rèn)為,用戶在不同項目資源間進(jìn)行選擇時主要從自身較重視的幾個項目屬性配置情況進(jìn)行評估,對應(yīng)地在項目使用結(jié)束后的評分也主要反映了用戶對項目屬性的評價。
該文提出將傳統(tǒng)的用戶-項目評分矩陣與項目屬性結(jié)合以推算用戶對項目屬性的偏好信息,并基于用戶對項目屬性的偏好信息計算用戶評分偏好的相似度,結(jié)合靜態(tài)上下文信息確定協(xié)同過濾推薦近鄰搜索。
在基于項目屬性的推薦系統(tǒng)中要以用戶-項目屬性值評分矩陣為基礎(chǔ),在不加大用戶反饋的工作量和能夠共享傳統(tǒng)推薦系統(tǒng)中用戶信息數(shù)據(jù)的前提下,需要根據(jù)用戶對項目資源的評分計算用戶對項目屬性值的評分信息進(jìn)而得到用戶-項目屬性值評分矩陣。用戶-項目屬性值評分矩陣與用戶-項目評分矩陣具有相同的結(jié)構(gòu),因此借助傳統(tǒng)推薦系統(tǒng)中近鄰查找算法或用戶偏好模型建立方法以及目標(biāo)用戶對項目偏好的預(yù)測方法預(yù)測用戶對項目資源的偏好程度,進(jìn)而完成推薦過程。
在基于項目屬性的推薦系統(tǒng)中,評分矩陣中的元素主要是用戶對項目資源的顯性評分,某用戶對全體項目的評分構(gòu)成單一的評分矢量,擴(kuò)展到全體用戶時則構(gòu)成用戶-項目評分矩陣。系統(tǒng)中包含n個用戶和m個項目資源可表示的評分矩陣結(jié)構(gòu)如表1所示。其中rij表示第i個用戶對第j個項目資源的評分?jǐn)?shù)值,可以用1或0分別表示喜歡和不喜歡,也可以選擇具體的數(shù)值范圍如1~5分、1~7分、1~10分當(dāng)中某值表示用戶對項目資源的喜好程度。矩陣的空缺元素表示用戶沒有對該項目評分,協(xié)同過濾推薦基于評分計算的相似用戶或項目,預(yù)測這些空缺元素的評分值,而基于項目屬性的推薦過程需要在用戶-項目評分矩陣的基礎(chǔ)上,結(jié)合項目的屬性信息轉(zhuǎn)化為用戶-項目屬性值評分矩陣。
表1 用戶-項目評分矩陣
項目資源的特征一般可以用一定數(shù)量的屬性來描述,每個屬性可以取若干個屬性值,從而利用項目屬性的取值情況對項目進(jìn)行區(qū)分和描述,即項目資源I可以表示為元素屬性值集的矢量:
(1)
其中,CiPj表示項目I的pj屬性的取值集。根據(jù)各個項目資源所具備的屬性值的情況可以得到項目集的屬性描述矩陣,如表2所示。
表2 項目-屬性矩陣
CiPj可能表示單一屬性值或含有多個屬性值的集合。比如菜式清蒸皖魚的食材屬性,取值可能為{皖魚,蔥,姜}。查找近鄰用戶和產(chǎn)生推薦結(jié)果是基于用戶或項目資源之間的相似性計算,其中相似度計算方法的余弦相似度要求相關(guān)矢量包含的每個元素只能取單值,且取值必須量化,因此需要將項目-屬性矩陣中的矢量轉(zhuǎn)為只含有單個數(shù)值元素的矢量。
表3 項目-屬性值矩陣
對于離散型數(shù)值的項目屬性,每個可能的屬性取值轉(zhuǎn)化為項目屬性描述矢量中的一個元素,以1和0分別表示某個項目是否具備相應(yīng)的屬性。對于連續(xù)型數(shù)值的項目屬性,首先將可能的屬性取值范圍進(jìn)行離散化處理,然后按照屬性具體的取值給相應(yīng)矢量中的元素進(jìn)行賦值,同樣地以1和0分別表示項目是否具備該屬性。處理后項目資源的每個屬性p的取值可以表示為屬性p所有可能離散取值的二進(jìn)制矢量,項目-屬性值矩陣如表3所示。
用戶在使用項目結(jié)束后的評分反映了用戶對項目屬性的評價,整體上用r來描述用戶對某項目資源的評分,而用sp1,sp2,…,spo分別描述用戶對項目中各屬性的評分,最后以函數(shù)f表示用戶對項目屬性的評分與用戶對項目的整體評分之間的轉(zhuǎn)換函數(shù):
r=f(Sp1,Sp2,…,Spo)
(2)
在用戶對項目資源的評分以及每個項目的屬性取值數(shù)量足夠多的前提下,則可以把函數(shù)f具體化,并運(yùn)用該函數(shù)推算出用戶-項目屬性值評分矩陣。如果用U表示用戶集,I表示項目資源集,P表示項目屬性集,M和M'分別表示用戶-項目評分矩陣和用戶-項目屬性值評分矩陣,則有:
M:U×I→M':U×P
矩陣的元素則為推算出的用戶對項目屬性值的評分,如表4所示。
表4 用戶-項目屬性值評分矩陣
項目屬性值對系統(tǒng)分類結(jié)果影響的權(quán)重,反映了用戶對項目屬性的偏好程度。由此計算項目屬性值對決定用戶是否喜好某個項目資源所貢獻(xiàn)的權(quán)重,以表示用戶對于項目屬性的偏好程度。
選取文本分類研究中計算文本特征項權(quán)重的TF-IDF算法來計算屬性值的權(quán)重,在用戶對項目資源的偏好分析中,如果在用戶喜好的項目資源中某屬性值出現(xiàn)的次數(shù)多,而該屬性值出現(xiàn)在所有項目中的頻率低,說明用戶越偏好具有該屬性值的項目,因此該屬性值對決定用戶喜好這個項目資源所貢獻(xiàn)的權(quán)重越大[8]。
為了避免某個評分偏好對應(yīng)的項目資源過少的問題,并考慮到推薦系統(tǒng)使用過程中消費(fèi)者對商品只有選擇和不選擇這兩種情況,可以根據(jù)用戶對項目評分的高低將已評分的項目資源分為喜歡和不喜歡這兩種偏好分類。假設(shè)用戶u評分集共有N個項目資源,具有屬性值pij的項目有npij個,喜歡的Na個項目具有屬性值pij的有apij個,不喜歡的Nb個項目具有屬性值pij的有bpij個,用戶對屬性值pij的初始偏好權(quán)重可以表示為vu,pij:
(3)
先求出用戶對各個項目屬性值的初始偏好權(quán)重,構(gòu)成用戶對項目資源各屬性值的偏好權(quán)重矢量,再對每個用戶的偏好矢量進(jìn)行歸一化處理后評分上限top相乘得到用戶對各個屬性值的偏好評分矢量。用戶u對pij的偏好評分可以表示為su,pij:
(4)
一般地,協(xié)同過濾推薦算法通常以兩個用戶對同一項目資源集給出的評分?jǐn)?shù)值為基礎(chǔ),直接利用余弦相似性或Pearson相關(guān)相似性測量用戶的相似度[9]。在餐飲O2O推薦的用戶-商品評分矩陣中,具有明顯的稀疏性,共同評分的菜式占目標(biāo)用戶評分集所有菜式的比例較小,且根據(jù)商品評分計算相似度忽略掉了用戶偏好的具體細(xì)節(jié)。本研究將采用余弦相似性測量用戶對于項目屬性值偏好的相似度。用戶a和b對項目屬性值評分的相似度simrating(a,b)可以表示如下:
(5)
另外,該文采用靜態(tài)上下文信息搜索的依據(jù),同時考慮到用戶評分記錄較少時會存在用戶冷啟動問題[10]。如果兩件事物之間存在很多相同的屬性,即它們共享的信息越多,說明它們之間的相似度就越大;反之當(dāng)兩件事物之間沒有共同的屬性時,則認(rèn)為它們是不相似的。為此,該文釆用基于屬性的語義相似性計算方法來衡量兩個用戶在基本信息上的相似度[11]。用戶a和b在用戶本體基本信息的語義相似性可以表示如下:
(6)
該文從用戶對項目屬性的評分偏好和用戶本體基本信息兩個方面綜合計算用戶偏好相似度。因此,基于上述兩部分的相似度計算,本節(jié)采用線性加權(quán)的函數(shù)來計算綜合相似度。用戶a和b的綜合相似度simcombine(a,b)可以表示如下:
simcombine(a,b)=γsimrating(a,b)+
(1-γ)simprofile(a,b)
(7)
其中,γ是可調(diào)系數(shù),可用Sigmoid函數(shù)表示,其取值范圍為[0,1]。當(dāng)γ取值接近1時,表示主要通過用戶對項目屬性的評分偏好相似度來表示用戶之間的相似度,當(dāng)γ取值接近0時,表示主要通過用戶本體基本信息的相似度來表示用戶之間的相似度。
本研究融合了動態(tài)的情景因素,結(jié)合加權(quán)的貝葉斯方法進(jìn)行基于上下文感知的項目屬性動態(tài)偏好分析。根據(jù)相似組情景信息的歷史記錄,采用基于KL散度為情景信息加權(quán)的貝葉斯方法預(yù)測用戶對于商品屬性值的動態(tài)偏好,因而解決信息記錄缺乏時難以構(gòu)建概率模型以及推薦系統(tǒng)的用戶冷啟動問題。
不同的上下文中各類型或具有某種屬性特征的商品依概率來響應(yīng)用戶的選擇偏好。本研究采用貝葉斯方法來預(yù)測用戶在特定場所、活動等上下文信息對于商品屬性值的動態(tài)偏好程度[12]。基于上下文感知的貝葉斯模型的構(gòu)建需要一定數(shù)量訓(xùn)練集的支撐,但目標(biāo)用戶可能存在上下文信息記錄缺乏而影響概率模型準(zhǔn)確性的用戶冷啟動問題。該文對目標(biāo)用戶進(jìn)行貝葉斯偏好模型構(gòu)建時,認(rèn)為偏好相似用戶在相同或近似上下文中對于商品的選擇偏好也具有相似性,根據(jù)用戶對項目屬性評分偏好以及靜態(tài)上下文計算的綜合相似度simcombine(a,b)進(jìn)行排序,取排名較前且擁有足夠數(shù)量歷史行為記錄的鄰居用戶作為相似組,并以所有相似用戶的歷史行為記錄作為構(gòu)建概率模型的訓(xùn)練數(shù)據(jù)集。用ci來表示動態(tài)的關(guān)鍵上下文因素取值,則在用上下文因素的取值集為C=(c1,c2,…,cn)的情況下,用戶u選擇具有pij屬性的項目資源的概率可以表示如下:
(8)
其中,P(pij)=Npij/N表示訓(xùn)練數(shù)據(jù)集的記錄中具有屬性值pij的概率,N為訓(xùn)練數(shù)據(jù)集中用戶選擇的項目資源總個數(shù),Npij為用戶選擇具有屬性值為pij的項目資源個數(shù)。式(8)通過計算每個屬性值pij在訓(xùn)練數(shù)據(jù)中的特定上下文下的概率來預(yù)測用戶對屬性值的動態(tài)偏好。由于上下文具有多維特征,滿足特定上下文的歷史記錄樣本量不足,因此使用貝葉斯公式進(jìn)行轉(zhuǎn)換。另外,由于計算P(c1,c2,…,cn|pij)需要一個較大的訓(xùn)練數(shù)據(jù)集,且上下文因素間的相互關(guān)系需要大量人為工作量,因此采用樸素貝葉斯方法假設(shè)在給定目標(biāo)值時屬性值之間互相條件獨(dú)立,即在給定pij的情況下,觀測到聯(lián)合上下文的概率等于每個單獨(dú)上下文因素取值的概率乘積:
(9)
考慮到由于部分項目記錄較少而引起P(ck|pij)為0的問題,定義在具有屬性值pij的項目記錄數(shù)Npij<10的情況下,若P(ck|pij)為0,則設(shè)為P(ck)。將式(9)代入式(8),即可計算得基于上下文感知的貝葉斯模型:
(10)
該模型在具有各個屬性值的項目記錄的條件概率下作比較,對于?pij,P(c1,c2,…,cn)為恒定的,可設(shè)為與屬性值pij無關(guān)的參數(shù)θ,剩余部分具備條件概率比較特征[13]。由于貝葉斯偏好模型中上下文因素的取值規(guī)定為離散值,則上下文因素要考慮到對用戶的動態(tài)偏好影響較大且其條件盡可能互相獨(dú)立。
在基于上下文感知的貝葉斯模型中,上下文因素取值ck對于各個屬性值的動態(tài)偏好重要程度視為一致,權(quán)重均為1。實(shí)際上不同ck對于各個屬性的選擇偏好的影響效果存在差異,比如城市和健康狀況上下文信息的某些實(shí)例對口味選擇的影響可能比較大,但外賣或堂食時選擇的口味可能與日常類似。因此,需要根據(jù)具體ck對具體屬性的影響程度來確定式(10)中上下文信息的權(quán)重。
此處引入KL散度用來衡量兩個概率分布之間差異的指標(biāo)。為了具體化不同上下文對于每個屬性的重要程度,在計算用戶在無上下文與具體上下文中對于單個屬性的選擇概率分布時,采用KL散度上下文加權(quán)方法[14],對于項目屬性Pi來說,計算ck值影響程度的KL散度可以描述為:
(11)
其中,Rpij表示用戶選擇具有屬性值為pij的項目占屬性Pi項目統(tǒng)計數(shù)的比率,Rck,pij表示在上下文因素值ck前提下的比率,fi表示項目屬性Pi取值范圍的屬性值個數(shù)。當(dāng)KL散度為0時,說明在某上下文下用戶對屬性Pi的選擇與平常無差異,ck重要程度較低。而KL散度越大,則說明ck對用戶在屬性Pi上的選擇引起了較大的影響,應(yīng)賦予ck較大的權(quán)重。據(jù)此,本研究提出的計算上下文因素值ck對于屬性Pi重要程度的加權(quán)系數(shù)可以表示為:
Wck,Pi=1+DPi(Rck||R)
(12)
式(10)中考慮加權(quán)系數(shù)后,即可計算得相應(yīng)上下文信息加權(quán)的動態(tài)偏好模型:
(13)
推薦系統(tǒng)最后輸出的結(jié)果是項目資源,因此項目屬性的偏好值要轉(zhuǎn)化為項目資源整體的偏好得分。基于屬性效用疊加的思想,通過線性加權(quán)計算整體偏好得分,項目資源中同一屬性有多個取值則取其平均值。用戶u對于項目資源v的預(yù)測偏好得分Ruv可以表示如下:
(14)
其中,o表示項目屬性的個數(shù),pij為項目v所具有的屬性值。wi為該項目第i個屬性特征的權(quán)重,表示該屬性對項目的重要程度,此權(quán)重值通過調(diào)查項目各屬性的重要程度或咨詢專家后得出。su,pij和tc,pij分別預(yù)測了用戶u對于項目v所具有屬性值pij的評分偏好和基于上下文感知的選擇偏好,兩者通過相乘結(jié)合,最后再取均值。
本研究設(shè)計一個用于收集用戶上下文信息的Web頁面,結(jié)合多種上下文信息獲取方法來采集用戶用餐時的記錄。在考慮基于上下文感知的貝葉斯模型中上下文信息因素的取值約束和條件盡可能相互獨(dú)立的原則,篩選出收集的數(shù)據(jù)。篩選后的屬性包括DayNight、Weather、Temperature(離散化后)、Holiday、AreaType、Acquaintance、Mode、Companion、Health,屬性的取值主要通過手機(jī)瀏覽器和服務(wù)器從互聯(lián)網(wǎng)等外部信息源直接獲取,用戶手動輸入獲取后3個屬性。信息收集的頁面如圖2所示。
由于用戶不易判斷出菜式類的菜系等屬性,而菜式的子類類型具有主觀性且主要決定于食材和做法,因此不作為網(wǎng)頁收集的菜式屬性。實(shí)驗選擇便于用戶判斷的菜式屬性:1~2個食材、做法、口味、價格標(biāo)簽。為了方便用戶分類并避免誤判,部分屬性值進(jìn)行了合并和簡化的處理,比如食材的選項按常識歸納縮減為28個類,包括畜肉類4項、禽肉類4項、蔬菜類5項、魚蝦蟹貝類5項、谷類、薯類、豆類、菌類等食材。做法選項有10個屬性值,分別為炒、蒸、煲、煎炸類、燒烤類、燉煮類、灼燙類、烘焙、常溫處理、其他做法??谖队?個屬性值,分別為淡、咸、甜、苦、酸、辣。在加權(quán)結(jié)合用戶評分偏好和基于上下文感知的選擇偏好的式(14)中,屬性效用權(quán)重wi表示屬性對菜式重要程度,食材取0.4,做法、口味、價格標(biāo)簽各取0.2。
圖2 信息收集頁面
每次用餐記錄可以保存1~4個菜式,信息獲取錯誤等上下文信息缺失的情況不保存記錄。通過輸入菜式名保存的菜式在用戶下次記錄時可以直接通過下拉列表選擇,將用戶的記錄中屬性值相同的菜式設(shè)定為相同菜式,另外用戶自定義菜式名的差異可忽略。根據(jù)上下文與項目評分的松耦合關(guān)系,評分表現(xiàn)的是用戶對項目的固定偏好程度,因此同一用戶在不同上下文中對相同菜式的重復(fù)評分記錄取平均值。
在本研究中,邀請了各年齡段、各職業(yè)的用戶進(jìn)行用餐記錄。在餐飲O2O平臺注冊時先對用戶的靜態(tài)信息進(jìn)行采集,再為用戶分配獨(dú)立的頁面鏈接,在移動設(shè)備的瀏覽器打開即可直接獲取動態(tài)上下文信息,記錄用餐內(nèi)容信息以及評分。收集到的數(shù)據(jù)經(jīng)過剔除和篩選,去除少于5條記錄的用戶后,共得到34位用戶在2019年后三個季度期間的2 170條記錄,合并屬性值相同菜式后共得到不同的356個菜式。
推薦預(yù)測準(zhǔn)確度是評價電子商務(wù)推薦系統(tǒng)優(yōu)劣的指標(biāo)之一。針對用戶的選擇偏好程度進(jìn)行基于上下文感知的預(yù)測,將用戶對項目的選擇偏好與評分偏好進(jìn)行區(qū)分。為預(yù)測基于上下文感知的用戶選擇行為,實(shí)驗以對比推薦列表和實(shí)際列表的準(zhǔn)確率和召回率來評估個性化推薦的預(yù)測準(zhǔn)確度。
實(shí)驗數(shù)據(jù)劃分為訓(xùn)練集和測試集,推薦系統(tǒng)根據(jù)訓(xùn)練集的數(shù)據(jù)得到一個在測試集條件下預(yù)測的推薦列表。通過準(zhǔn)確率(Precision)表示推薦算法預(yù)測的推薦菜式結(jié)果符合用戶偏好的程度,并通過召回率(Recall)表示用戶偏好的菜式被推薦算法成功預(yù)測的程度[15]。假設(shè)D為實(shí)驗的菜式列表,對于某目標(biāo)用戶,R(d)為推薦系統(tǒng)根據(jù)訓(xùn)練集的數(shù)據(jù),采用不同算法得到的在測試集條件下預(yù)測的推薦列表,T(d)為測試集中該用戶選擇的菜式列表,準(zhǔn)確率和召回率的計算公式可以表示如下:
(15)
(16)
從每位用戶的記錄中隨機(jī)抽取5條包含上下文信息的用餐記錄作為測試集,每條記錄包含1~4個菜式,其余的所有記錄作為訓(xùn)練集,計算平均的準(zhǔn)確率和召回率。34位用戶各自的記錄條數(shù)從5條至183條,因此實(shí)驗的條件出現(xiàn)了傳統(tǒng)協(xié)同過濾算法中用戶冷啟動的情況。菜式評分記錄方面,同一用戶對屬性值相同菜式的重復(fù)評分記錄取平均值后,以34位用戶對不同菜式完整的911條評分作為近鄰搜索的訓(xùn)練集,用戶-菜式評分矩陣的缺失率為92.5%,符合推薦系統(tǒng)實(shí)際使用中評分?jǐn)?shù)據(jù)稀疏的情況。
本實(shí)驗將對文中的上下文后過濾的協(xié)同過濾推薦方法I,傳統(tǒng)基于用戶的協(xié)同過濾推薦方法II,傳統(tǒng)協(xié)同過濾近鄰搜索的動態(tài)偏好預(yù)測推薦方法III,基于上下文信息相似度的推薦方法IV進(jìn)行比較。其中:
方法II根據(jù)對菜式的相同評分尋找鄰居用戶,再根據(jù)鄰居用戶的評分預(yù)測目標(biāo)用戶的缺失評分,其不融入上下文信息;
方法III根據(jù)傳統(tǒng)協(xié)同過濾的方式尋找鄰居用戶,再按照本研究采用上下文信息加權(quán)的貝葉斯方法進(jìn)行動態(tài)偏好分析,得到基于上下文感知的選擇偏好;
方法IV按照本研究基于項目屬性的方法搜索鄰居,在目標(biāo)用戶以及鄰居用戶的歷史上下文信息中,找出與當(dāng)前上下文語義相似度最高的上下文,再推薦菜式[16]。
本實(shí)驗對比了以上4種推薦方法在取不同鄰居用戶數(shù)量時得到的TOP-10推薦菜式的準(zhǔn)確率和召回率,結(jié)果如圖3和圖4所示。
圖3 準(zhǔn)確率
圖4 召回率
由圖3和圖4得,文中提出的上下文后過濾的協(xié)同過濾推薦方法的準(zhǔn)確率和召回率整體上高于其他推薦算法,隨著鄰居數(shù)量的增加,準(zhǔn)確率呈現(xiàn)先上升再下降的趨勢。因為評分矩陣稀疏,傳統(tǒng)基于用戶的協(xié)同過濾推薦方法II在鄰居數(shù)量較少時推薦結(jié)果較好,而待推薦菜式的已有評分記錄菜式較少,因此在鄰居數(shù)量上升時準(zhǔn)確率和召回率下降較快,在鄰居數(shù)目大于12時,其準(zhǔn)確度均低于其他基于上下文感知的推薦方法,表明了融入上下文信息可以有效提高餐飲O2O推薦的準(zhǔn)確度。方法I的準(zhǔn)確度整體比方法III高,且相比以全體用戶為鄰居即不通過綜合相似度選擇鄰居的情況表現(xiàn)更優(yōu),表明了基于項目屬性的近鄰搜索以及評分偏好預(yù)測方法的有效性。基于上下文相似度的推薦方法IV僅在鄰居較少時有較高的準(zhǔn)確率和召回率,鄰居數(shù)目增大時準(zhǔn)確度明顯低于方法I,表明用戶在相似上下文中可能會選擇相同菜式,但該方法沒有考慮用戶偏好信息,同時證實(shí)了采用上下文信息加權(quán)的貝葉斯方法進(jìn)行動態(tài)偏好分析的有效性。
在為用戶個性化地定制餐飲服務(wù)時,本研究融合了上下文后過濾的協(xié)同過濾推薦算法和基于貝葉斯模型的加權(quán)方法。經(jīng)實(shí)驗證明,所設(shè)計的模型能有效解決數(shù)據(jù)稀疏的問題,與其他算法進(jìn)行對比,提高了推薦的準(zhǔn)確率和召回率,表明更容易滿足用戶對個性化餐飲的要求。
此外,本研究還存在改善的空間:用戶對菜品屬性的偏好是隨時間發(fā)生改變的,因此可考慮在推薦算法中引入與時間相關(guān)的因素,提高某時間段對用戶的餐飲推薦;當(dāng)用戶群體較大時,可引入K-means聚類算法的思想進(jìn)行算法改良;對特定的情景應(yīng)該有更具體準(zhǔn)確的分類,以提高推薦度。