劉婷
摘要:隨著移動(dòng)端設(shè)備的快速發(fā)展,手機(jī)應(yīng)用呈爆炸式增長(zhǎng),如何在眾多飲食中將用戶喜愛的餐飲準(zhǔn)確推薦給用戶顯得尤為重要。針對(duì)傳統(tǒng)推薦算法中存在的數(shù)據(jù)稀疏性問(wèn)題、冷啟動(dòng)問(wèn)題以及用戶評(píng)分尺度不同導(dǎo)致的近鄰用戶尋找不準(zhǔn)確的問(wèn)題,文章提出基于內(nèi)容的推薦與基于協(xié)同過(guò)濾的綜合推薦算法,擺脫了對(duì)顯式項(xiàng)目評(píng)分的依賴,弱化了數(shù)據(jù)稀疏問(wèn)題,可以即時(shí)地、精準(zhǔn)地為用戶推薦符合其喜好的產(chǎn)品。最后能夠在移動(dòng)訂餐系統(tǒng)實(shí)現(xiàn)商家對(duì)用戶的個(gè)性化推薦。
關(guān)鍵詞:推薦算法;協(xié)同過(guò)濾;移動(dòng)訂餐系統(tǒng)
隨著移動(dòng)互聯(lián)網(wǎng)的發(fā)展,手機(jī)點(diǎn)餐、微信點(diǎn)餐等手機(jī)訂餐軟件已成為其最新的發(fā)展趨勢(shì)。餐飲行業(yè)現(xiàn)有的大多數(shù)管理系統(tǒng)落后于用戶和管理人員的需要,一種行之有效的方法是將推薦系統(tǒng)應(yīng)用于餐飲管理,分析用戶的歷史數(shù)據(jù),向用戶提供更符合消費(fèi)者喜好的服務(wù),也能方便消費(fèi)者使用,具有極大的現(xiàn)實(shí)意義和經(jīng)濟(jì)效益。
推薦算法就是利用用戶的一些行為,通過(guò)一些數(shù)學(xué)算法,推測(cè)出用戶可能喜歡的東西,利用推薦算法從海量數(shù)據(jù)中挖掘出用戶感興趣的項(xiàng)目(如信息、服務(wù)、物品等),并將結(jié)果以個(gè)性化列表的形式推薦給用戶。目前,推薦系統(tǒng)在很多領(lǐng)域得到了成功應(yīng)用,包括電子商務(wù)(如Amazon,eBay,Netflix,阿里巴巴等)、信息檢索(如iGoogle,MyYahoo,百度等)、社交網(wǎng)絡(luò)(Facebook,Twitter,騰訊等)、位置服務(wù)(如Foursquare,Yelp,大眾點(diǎn)評(píng)等)、新聞推送(如Google News,GroupLens,今日頭條等)等各個(gè)領(lǐng)域。本文對(duì)現(xiàn)有的推薦方法進(jìn)行分析,為移動(dòng)訂餐系統(tǒng)的設(shè)計(jì)提供參考和啟發(fā)。
1 傳統(tǒng)推薦算法
目前廣泛使用的推薦方法主要包括基于內(nèi)容的推薦方法和協(xié)同過(guò)濾推薦算法?;趦?nèi)容的推薦則是根據(jù)用戶自身選擇的物品的內(nèi)容相似性進(jìn)行推薦,即推薦給用戶與他喜歡的東西相似的東西?;趨f(xié)同過(guò)濾的推薦則是通過(guò)分析相似用戶的興趣,根據(jù)相似用戶的評(píng)價(jià)來(lái)進(jìn)行推薦。其中,最經(jīng)典的協(xié)同過(guò)濾算法是矩陣因子分解,利用用戶與項(xiàng)目之間的交互信息為用戶產(chǎn)生推薦,協(xié)同過(guò)濾是目前應(yīng)用最為廣泛的推薦算法,但是在應(yīng)用中遇到了致命的問(wèn)題——數(shù)據(jù)稀疏和冷啟動(dòng)問(wèn)題。此外,經(jīng)典的協(xié)同過(guò)濾方法采用淺層模型無(wú)法學(xué)習(xí)到用戶和項(xiàng)目的深層次特征。基于內(nèi)容的推薦方法利用用戶已選擇的項(xiàng)目來(lái)尋找其他類似屬性的項(xiàng)目進(jìn)行推薦,但是這種方法需要有效的特征提取,傳統(tǒng)的淺層模型依賴于人工設(shè)計(jì)特征,其有效性及可擴(kuò)展性非常有限,制約了基于內(nèi)容的推薦方法的性能。
1.1 基于內(nèi)容的推薦
基于內(nèi)容的推薦主要根據(jù)用戶已經(jīng)選擇或者評(píng)分的項(xiàng)目,挖掘其他內(nèi)容上相似的項(xiàng)目作為推薦,基于內(nèi)容的推薦算法的主要優(yōu)勢(shì)在于無(wú)冷啟動(dòng)問(wèn)題,只要用戶產(chǎn)生了初始的歷史數(shù)據(jù),就可以開始進(jìn)行推薦的計(jì)算。而且隨著用戶的歷史記錄數(shù)據(jù)的增加,這種推薦一般也會(huì)越來(lái)越準(zhǔn)確。
1.2 基于協(xié)同過(guò)濾的推薦
協(xié)同過(guò)濾算法是一種僅僅基于用戶行為數(shù)據(jù)設(shè)計(jì)的推薦算法。隨著互聯(lián)網(wǎng)空間的迅猛發(fā)展,數(shù)據(jù)規(guī)模的爆炸式增長(zhǎng),協(xié)同過(guò)濾算法已經(jīng)成為學(xué)術(shù)界和工業(yè)界的關(guān)注熱點(diǎn)并得到了廣泛應(yīng)用,形成了眾多相關(guān)研究成果。為了實(shí)現(xiàn)大數(shù)據(jù)環(huán)境下高效、精準(zhǔn)的商品推薦,將協(xié)同過(guò)濾思想與信息檢索理論有機(jī)融合,提出基于學(xué)習(xí)排序(Learning To Rank,LTR)的并行協(xié)同過(guò)濾推薦算法。針對(duì)推薦系統(tǒng)中的冷啟動(dòng)問(wèn)題,提出基于消費(fèi)者行為的點(diǎn)餐推薦算法,設(shè)計(jì)出頻度統(tǒng)計(jì)、關(guān)聯(lián)規(guī)則和Markov鏈3個(gè)推薦引擎的加權(quán)組合推薦系統(tǒng)。針對(duì)傳統(tǒng)的基于用戶的協(xié)同推薦算法存在的數(shù)據(jù)稀疏以及對(duì)用戶評(píng)分的強(qiáng)依賴問(wèn)題,提出基于社交信任機(jī)制的在線學(xué)習(xí)協(xié)同推薦算法。在傳統(tǒng)二部圖推薦算法的基礎(chǔ)上提出一種針對(duì)電商平臺(tái)快速消費(fèi)品的圖推薦算法。對(duì)近幾年基于深度學(xué)習(xí)的推薦系統(tǒng)研究進(jìn)展進(jìn)行綜述,分析其與傳統(tǒng)推薦系統(tǒng)的區(qū)別以及優(yōu)勢(shì),并對(duì)其主要的研究方向、應(yīng)用進(jìn)展等進(jìn)行概括、比較和分析。
2 混合推薦算法
2.1 核心思想
基于內(nèi)容的推薦與基于協(xié)同過(guò)濾的推薦是目前主流的推薦算法??紤]到單一推薦方法都存在各自的不足,通過(guò)組合不同的推薦算法進(jìn)行混合推薦,往往能夠產(chǎn)生更好的推薦性能。為了進(jìn)一步提高推薦算法的推薦質(zhì)量,針對(duì)推薦算法中存在的一些缺陷,比如新用戶問(wèn)題、新項(xiàng)目問(wèn)題以及數(shù)據(jù)的稀疏問(wèn)題,眾多學(xué)者提出了一些新的方法來(lái)對(duì)推薦算法進(jìn)行改進(jìn),比如融合爭(zhēng)議度特征的協(xié)同過(guò)濾推薦算法,可以緩解傳統(tǒng)算法在稀疏數(shù)據(jù)情況下相似度計(jì)算不準(zhǔn)確的問(wèn)題;基于內(nèi)存的傳播式協(xié)同過(guò)濾推薦算法,對(duì)數(shù)據(jù)稀疏性問(wèn)題進(jìn)行了有益的探索和研究。
然而一些傳統(tǒng)的推薦算法以及上述所提出的改進(jìn)算法都忽略了一個(gè)重要的現(xiàn)實(shí)問(wèn)題:這些算法都依賴于用戶對(duì)項(xiàng)目的評(píng)分,而現(xiàn)實(shí)中能對(duì)項(xiàng)目進(jìn)行的評(píng)分的用戶則少之又少,這些用戶可認(rèn)為是死忠用戶,大部分用戶都不會(huì)去評(píng)分,用戶沒(méi)有評(píng)分則無(wú)法推薦,用戶較少評(píng)分則大幅影響推薦的準(zhǔn)確性。其可能造成的結(jié)果是死忠用戶越來(lái)越死忠,而不評(píng)分用戶的推薦準(zhǔn)確度無(wú)論算法如何提高都得不到質(zhì)的飛躍。
針對(duì)上述問(wèn)題,本文提出了一種推薦算法結(jié)合了基于內(nèi)容的推薦與基于協(xié)同過(guò)濾的混合推薦算法(Contentand Collaborative Filtering Hybrid Recommendation,CCF-HR)。該算法可以根據(jù)用戶的非評(píng)分行為計(jì)算出用戶的喜好模型,利用這一模型和相似用戶可以對(duì)產(chǎn)品進(jìn)行評(píng)分預(yù)測(cè),擺脫了對(duì)顯式評(píng)分的依賴,弱化了數(shù)據(jù)稀疏問(wèn)題。
2.2 推薦算法中的概念
2.2.1 餐飲產(chǎn)品特征
本文中餐飲產(chǎn)品有價(jià)格特征和產(chǎn)品分類特征兩個(gè)特征。價(jià)格特征有8個(gè)特征值,分別是8個(gè)價(jià)格區(qū)間,分別用f1~f8表示。產(chǎn)品分類特征有5個(gè)特征值,中式快餐、西式快餐、飲品、甜品、小吃,分別用f9~f13表示。
2.2.2 用戶對(duì)餐飲產(chǎn)品特征值的評(píng)分
根據(jù)用戶的購(gòu)買記錄和收藏列表,計(jì)算其對(duì)產(chǎn)品特征值的喜愛程度,這一喜愛程度可視為用戶對(duì)該特征值的評(píng)分。
評(píng)分的定義如下:對(duì)用戶的購(gòu)買記錄和收藏列表進(jìn)行統(tǒng)計(jì),該用戶對(duì)特征值fi的評(píng)分si為他購(gòu)買的產(chǎn)品中含特征值fi的數(shù)量與某一特征特征值總數(shù)(即產(chǎn)品的總數(shù))的比值。即:
其中mi為用戶購(gòu)買的產(chǎn)品中特征值fi出現(xiàn)的次數(shù),
。如果用戶的收藏表的一個(gè)產(chǎn)品該用戶從未購(gòu)買過(guò),說(shuō)明該用戶想嘗試一下該產(chǎn)品。在該算法中將提高該產(chǎn)品所具有的特征值的評(píng)分。
2.2.3 餐飲產(chǎn)品特征的偏愛度
在本文中,產(chǎn)品的兩個(gè)特征的特征值取值都可視為離散型隨機(jī)變量,隨機(jī)變量的標(biāo)準(zhǔn)差代表著特征值的離散程度,標(biāo)準(zhǔn)差越小,意味著用戶的購(gòu)買傾向越趨近于某一特征值,用戶在購(gòu)買時(shí)就越重視該特征。標(biāo)準(zhǔn)差與平均數(shù)的比值稱為變異系數(shù),變異系數(shù)可以消除單位和(或)平均數(shù)不同對(duì)兩個(gè)資料變異程度比較的影響。所以兩個(gè)特征偏愛度之比是兩個(gè)特征變異系數(shù)的反比。
設(shè)用戶所購(gòu)買過(guò)的產(chǎn)品的價(jià)格特征取值是離散型隨機(jī)變量X(X的取值是產(chǎn)品的價(jià)格),設(shè)其標(biāo)準(zhǔn)差為σ1,其均值為E(X)。設(shè)用戶所購(gòu)買過(guò)的產(chǎn)品的分類特征值是離散型隨機(jī)變量的取值是1,2, 3, 4, 5,分別代表5個(gè)分類),設(shè)其標(biāo)準(zhǔn)差為σ2,其均值為E(Y)。X的變異系數(shù)為
,
Y的變異系數(shù)為
。則產(chǎn)品價(jià)格特征和分類特征對(duì)于用戶偏愛度分別為:
其中 w1+w2=l。
2.2.4 用戶特征向量
用戶特征向量是一個(gè)13維的向量V=(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13,)其中的si是用戶對(duì)特征值fi的評(píng)分。該向量表示用戶的喜好。
2.2.5 用戶之間的相似度
用戶集U={u1,u2,…,un},特征值F={f1,f2,…,fn},在本系統(tǒng)中目前m=13,即總共有13個(gè)特征值,則用戶對(duì)各特征值的評(píng)分如矩陣R(見表1)。
利用余弦相似性計(jì)算用戶之間的相似度。每個(gè)特征值的所有評(píng)分記錄可以視為m維用戶空間特征向量,用戶i與用戶j的特征向量分別為i和j,其相似度記為r(i,j)。則:
其中分子為兩個(gè)用戶特征向量的內(nèi)積,分母為兩個(gè)用戶特征向量模的乘積。在本系統(tǒng)中,如果0.618≤r(i,j)<1(向量中的值都是正數(shù),所以相似度取值范圍是[0,1],0.618則是該范圍的黃金分割點(diǎn)),用戶j才能被視為用戶/的相似用戶。2.2.6 用戶對(duì)餐飲產(chǎn)品的評(píng)分
當(dāng)計(jì)算出當(dāng)前用戶的相似用戶后,會(huì)對(duì)相似用戶所購(gòu)買的產(chǎn)品進(jìn)行評(píng)分。評(píng)分公式如下:
其中,Ti,j,k是當(dāng)前用戶ui對(duì)其相似用戶uj購(gòu)買的產(chǎn)品pk的評(píng)分,s(i,j)是用戶ui與用戶uj之間的相似度,w1,w2是用戶ui的產(chǎn)品特征偏愛度,sa,sb是當(dāng)前用戶ui對(duì)產(chǎn)品pk的兩個(gè)特征所取特征值的評(píng)分。
2.2.7 推薦產(chǎn)品候選集合
在計(jì)算用戶相似度時(shí),一邊計(jì)算用戶相似度,一邊按相似度從大到小進(jìn)行排序。之后,對(duì)相似用戶所購(gòu)買過(guò)的產(chǎn)品進(jìn)行評(píng)分的同時(shí)按評(píng)分從大到小進(jìn)行排序,加入推薦產(chǎn)品候選集合。
2.28 推薦產(chǎn)品集合
在本文中,為用戶所推薦的產(chǎn)品的數(shù)目是不定的,是個(gè)參數(shù)〃。用戶的相似用戶數(shù)目是不定的,用戶所購(gòu)買過(guò)的產(chǎn)品與相似用戶所購(gòu)買過(guò)的產(chǎn)品也是充滿變數(shù)的,到底推薦哪些產(chǎn)品是一個(gè)很復(fù)雜的問(wèn)題。在該算法中將采用集合運(yùn)算來(lái)獲取最終的推薦產(chǎn)品集合。
設(shè)系統(tǒng)中的所用產(chǎn)品為全集集合E,推薦產(chǎn)品候選集合為A,用戶未購(gòu)買過(guò)的產(chǎn)品集合為集合B,用戶購(gòu)買過(guò)的產(chǎn)品集合為集合C。集合E,A,B,C之間將會(huì)有3種關(guān)系,如圖1所示。
圖1(a)中A,B,C 3個(gè)集合互相是沒(méi)有相交部分的。圖1(b)中集合A、C有相交部分,即推薦產(chǎn)品候選集合中的部分產(chǎn)品已經(jīng)購(gòu)買過(guò)。圖1(c)中集合A包含于C,即推薦產(chǎn)品候選集合中的產(chǎn)品已經(jīng)全部購(gòu)買過(guò)。
在本文的推薦算法中,算法將優(yōu)先推薦優(yōu)先級(jí)高的產(chǎn)品,當(dāng)高優(yōu)先級(jí)的產(chǎn)品的數(shù)量加上已經(jīng)推薦的產(chǎn)品數(shù)量小于n(推薦的產(chǎn)品的數(shù)目)時(shí),將推薦下一個(gè)優(yōu)先級(jí)的產(chǎn)品,直到所推薦的產(chǎn)品數(shù)量達(dá)到n。設(shè)3個(gè)優(yōu)先級(jí)別的集合PA,PB,PC,最終的推薦產(chǎn)品集合為PF。其中PA的優(yōu)先級(jí)最高,為推薦產(chǎn)品候選集合中沒(méi)有購(gòu)買過(guò)的產(chǎn)品。PC的優(yōu)先級(jí)最低,為已購(gòu)買過(guò)的產(chǎn)品。PB的優(yōu)先級(jí)介于兩者之間,為未購(gòu)買過(guò)的產(chǎn)品。3個(gè)集合通過(guò)以下集合運(yùn)算獲得。
2.3 算法的詳細(xì)流程
算法的詳細(xì)流程如圖2所示。
3 結(jié)語(yǔ)
本文提出了一種推薦算法結(jié)合了基于內(nèi)容的推薦與基于協(xié)同過(guò)濾的混合推薦算法。該算法可以根據(jù)用戶的非評(píng)分行為計(jì)算出用戶的喜好模型,利用這一模型和相似用戶可以對(duì)產(chǎn)品進(jìn)行評(píng)分預(yù)測(cè),擺脫了對(duì)顯式評(píng)分的依賴,弱化了數(shù)據(jù)稀疏問(wèn)題,為移動(dòng)訂餐系統(tǒng)的設(shè)計(jì)提供參考和啟發(fā)。在今后的工作中可以進(jìn)一步研究用戶的背景信息(如性別、年齡、職業(yè)等)對(duì)推薦的影響,進(jìn)一步改進(jìn)算法,充分發(fā)揮推薦算法在移動(dòng)訂餐中的作用。