耿化聰,梁宏濤,劉國柱
(青島科技大學(xué)信息科學(xué)技術(shù)學(xué)院,山東 青島 266061)
隨著互聯(lián)網(wǎng)的普及,人們在互聯(lián)網(wǎng)上分享了大量食譜信息,這些信息為人們?nèi)粘5娘嬍尺x擇帶來了一定幫助,但同時也會隨之產(chǎn)生信息過載問題,此時一款高效的飲食推薦系統(tǒng)將會為用戶解決這一難題。
如今推薦系統(tǒng)[1]已被廣泛應(yīng)用于電子商務(wù)[2]、新媒體[3]等領(lǐng)域。在各種推薦算法中應(yīng)用最廣泛的是協(xié)同過濾算法[4],該算法通過分析用戶-物品評分矩陣數(shù)據(jù)得出用戶偏好進(jìn)行推薦。然而傳統(tǒng)的基于協(xié)同過濾算法的推薦系統(tǒng)通常會受得稀疏性問題和冷啟動問題的困擾,此外,因為一些新物品在過去從未有用戶與其進(jìn)行交互,導(dǎo)致無法向用戶推薦新的物品,使用戶無法探索大量的全新物品。
近年來,一些學(xué)者在飲食推薦領(lǐng)域做出很多相關(guān)研究,Sobercki等[5]在基于人口統(tǒng)計學(xué)推薦模型中引入模糊推理模型進(jìn)行飲食推薦,這提高了專家在食譜推薦領(lǐng)域知識建模方面的自由度。Freyne等[6]把菜譜分解為各種原料,通過傳統(tǒng)的基于內(nèi)容協(xié)同過濾算法和機(jī)器學(xué)習(xí)算法進(jìn)行飲食推薦,提高了推薦結(jié)果的覆蓋率和準(zhǔn)確率。Schafer等[7]在協(xié)同過濾算法的基礎(chǔ)上,引入用戶健康和口味等級信息,并通過基于等級的運(yùn)動推薦系統(tǒng)進(jìn)行增強(qiáng)。CTRMF[8]是由Lin等人提出的一種基于內(nèi)容驅(qū)動的時間正則化矩陣分解協(xié)同過濾算法,旨在將異構(gòu)內(nèi)容信息集成到一個飲食推薦系統(tǒng)的矩陣分解模型中。Ueda等[9]通過把食譜分解為不同的成分,并根據(jù)每種成分的占比來反映用戶的偏好。
在此背景下,本文提出一種通過引入食譜間語義信息來提高飲食推薦系統(tǒng)性能的方法。由于知識圖譜的本質(zhì)是儲存實體與實體間關(guān)系的結(jié)構(gòu)化網(wǎng)絡(luò)[10],其包含了豐富的實體間語義關(guān)聯(lián)信息,因此將知識圖譜應(yīng)用于飲食推薦系統(tǒng)中可以有效緩解數(shù)據(jù)稀疏性問題。目前知識圖譜在推薦系統(tǒng)中的應(yīng)用主要分為基于翻譯[11]、基于路徑[12]和混合[13]的方法。Wang等[14]將知識圖譜表示學(xué)習(xí)應(yīng)用于新聞推薦領(lǐng)域,使其充分融合新聞?wù)Z義層和知識層表征。CKE[15]模型以TranR[16]為異構(gòu)網(wǎng)絡(luò)嵌入方法,通過考慮實體和關(guān)系的異構(gòu)性來提取物品的結(jié)構(gòu)表示,將協(xié)同過濾算法與結(jié)構(gòu)知識、文本知識、圖像知識結(jié)合在一個統(tǒng)一的推薦框架之中。Haussmann等[17]針對飲食領(lǐng)域構(gòu)建FoodKG知識圖譜,利用目標(biāo)本體對結(jié)構(gòu)化資源進(jìn)行建模,并利用其他非結(jié)構(gòu)化資源對知識圖譜進(jìn)行擴(kuò)充。
近年來,深度學(xué)習(xí)已在推薦領(lǐng)域得到廣泛應(yīng)用,在一些推薦場景中取得了不錯的推薦效果。從整體上來看,目前深度學(xué)習(xí)在推薦系統(tǒng)中的應(yīng)用大致可以分為2種類型,一類是使用深度神經(jīng)網(wǎng)絡(luò)處理用戶或物品的原始特征,另一類是使用深度神經(jīng)網(wǎng)絡(luò)對用戶和物品直接的交互進(jìn)行建模。Cheng等[18]提出的Wide & Deep模型通過聯(lián)合訓(xùn)練寬廣線性模型和深度神經(jīng)網(wǎng)絡(luò),使其兼?zhèn)溆洃浤芰头夯芰?但寬廣線性部分的輸入需要依賴人工特征工程。在此基礎(chǔ)上,Guo等[19]提出的DeepFM模型結(jié)合用于推薦的因子分解機(jī)和用于特征學(xué)習(xí)的深度神經(jīng)網(wǎng)絡(luò),該模型除原始特征以外不需要特征工程。He等[20]提出的NCF是一種基于神經(jīng)網(wǎng)絡(luò)的協(xié)同過濾模型,它將MF和多層感知機(jī)模型相結(jié)合進(jìn)行推薦。
在以上工作的基礎(chǔ)上,本文算法首先通過知識圖譜表示學(xué)習(xí)算法[21]得出菜品間語義相似度,再由協(xié)同過濾算法得出用戶飲食偏好,最后將兩者進(jìn)行合理融合并生成推薦列表。通過充分利用菜品間固有語義信息,緩解數(shù)據(jù)稀疏性問題,增加推薦的合理性。通過將提出的方法應(yīng)用于飲食數(shù)據(jù)集,實驗結(jié)果表明,與現(xiàn)有方法相比,本文算法在推薦準(zhǔn)確率上有明顯提升。
協(xié)同過濾算法是目前最流行、應(yīng)用最廣的推薦技術(shù)之一。該算法并不考慮被推薦物品的內(nèi)容,而只關(guān)注用戶對物品的評分?jǐn)?shù)據(jù),其主要思想是假設(shè)用戶更傾向于喜歡相似物品。
設(shè)U={U1,U2,…,Um}為所有用戶的集合,用戶個數(shù)為m;設(shè)L={l1,l2,…,ln}為所有物品的集合,物品個數(shù)為n;用戶-物品評分矩陣Rm×n為:
(1)
其中,Rij為用戶Ui對物品lj的評分,評分的高低代表著用戶i對物品j的喜好程度。
將用戶對某一物品的評分看作一個m維的向量,如對物品i的評分向量為Ii=(s1i,s2i,…,smi),則物品li和物品lj之間的余弦相似度為:
(2)
其中,simcf(i,j)的取值區(qū)間為[0,1],simcf(i,j)的值越大則表明物品i和物品j之間的相似度越高。
(3)
在進(jìn)行k近鄰選擇時,先對菜品相似度進(jìn)行閾值過濾,把相似度低于設(shè)定閾值的菜品進(jìn)行排除,然后對剩余菜品按相似度進(jìn)行排序,最終把前k個菜品加入推薦列表。
知識圖譜由知識三元體頭實體h、關(guān)系r、尾實體t組成,對于每一個三元組可表示為(h,r,t)。知識表示學(xué)習(xí)是將知識圖譜中的實體與關(guān)系投影到一個低維連續(xù)向量空間內(nèi),進(jìn)而可以快速計算實體間語義相似度。其中,Bordes等人[23]提出了TransE模型,如圖1所示。該模型認(rèn)為一個正確三元組要滿足公式(4):
圖1 TransE模型
‖h+r‖≈t
(4)
雖然TransE模型簡單高效,但是它只適合處理1-1類型關(guān)系,在處理1-N、N-N類關(guān)系時存在嚴(yán)重缺陷。而一個食譜對應(yīng)多種原料,一種原料又對應(yīng)多個食譜,此時使用TransE模型會導(dǎo)致相似度計算失真,故本文采用能夠處理此類問題的TransHR[24]模型來對實體間多重關(guān)系進(jìn)行表示。
如圖2所示,在TransHR中,對于每一個三元組(h,r,t),用k維空間的實體向量h來表示實體,d維空間的關(guān)系向量r來表示關(guān)系,其中k不一定等于d。假設(shè)一對實體間有n個關(guān)系且第i個關(guān)系表示為ri,為將關(guān)系向量ri從關(guān)系空間投影到實體空間,為每一個關(guān)系向量生成一個轉(zhuǎn)移矩陣Mri中。通過式(5)可以得到投影向量為:
圖2 TransHR模型
r(h,t)=riMri,i=1,2,…,n
(5)
故每一個具體的d維向量Mri將其對應(yīng)的ri轉(zhuǎn)換成一個獨立的k維向量r(h,t),從而可以看作為頭實體向量h到尾實體向量t之間的平移[25]。因此能夠相應(yīng)地定義損失函數(shù)如公式6所示:
(6)
其中fr(h,t)表示h+r(h,t)與t之間的差別。
本章具體介紹融合知識圖譜嵌入(Knowledge Graph Embedding, KGE)與CF的飲食推薦算法。該算法通過融合菜品間的語義相似度和協(xié)同過濾相似度的方式,達(dá)到結(jié)合外部評分和內(nèi)涵知識的效果,有效彌補(bǔ)協(xié)同過濾算法忽略菜品內(nèi)部信息的缺陷,緩解數(shù)據(jù)稀疏性問題。
首先構(gòu)建飲食知識圖譜,通過TransHR模型得到食譜的低維向量表示,再計算出食譜間的語義相似性,得到食譜的語義近鄰。同時通過設(shè)置融合比例,把語義相似性矩陣和由外部評分得到的相似性矩陣相融合,最終形成推薦列表。TranHR-CF算法的流程如圖3所示。
圖3 TransHR-CF算法流程
通過對飲食領(lǐng)域的相關(guān)知識進(jìn)行分析與研究,采取自上而下的方式抽象飲食知識圖譜本體[26]為食譜、食材、菜系、體質(zhì)、人群、營養(yǎng)成分這6個類。其中,食譜指食材經(jīng)過不同的烹飪方式而得到的菜品名稱,如蒜蓉西蘭花、宮保雞丁和炸醬面,通常用戶在進(jìn)行飲食選擇時會首先想到菜品名稱;食材指制作菜品時所用到的原材料,如西紅柿、牛肉等;菜系涵蓋了我國傳統(tǒng)飲食文化中的8大菜系,它們各自具有鮮明的地方風(fēng)味特色,不同的人可能會喜歡不同的菜系;體質(zhì)可分為平和質(zhì)、氣虛質(zhì)、濕熱質(zhì)等9個類型,它是中醫(yī)基礎(chǔ)理論的重要組成部分,也是人們?nèi)粘o嬍尺x擇的依據(jù);人群指具有特殊身體狀態(tài)的一類人,如孕婦、老人、嬰幼兒等;營養(yǎng)成分是指菜品中所含營養(yǎng)物質(zhì),如蛋白質(zhì)、脂肪和碳水化合物。本體確定的同時也確定了飲食領(lǐng)域中相關(guān)概念的類別、實體的屬性、取值范圍,通過這些特征可以在總體上概括某種菜品的主要內(nèi)容。本文在各類本體之間提取出用料、富含、適宜體質(zhì)、禁忌等18個關(guān)系,進(jìn)而可以生成<類,關(guān)系,類>形式的三元組,如<食譜,用料,食材>,<食譜,富含,營養(yǎng)元素>等。
飲食知識圖譜本體構(gòu)建完成以后進(jìn)行本體實例化,通過填充知識圖譜中的實例層,最終完成飲食知識圖譜的構(gòu)建。
由于構(gòu)建知識圖譜時采用歐氏距離計算損失函數(shù),故本文采用相同范數(shù)的歐氏距離對菜品i和菜品j進(jìn)行相似度計算,結(jié)果如式(7)所示:
(7)
由于2個實體向量之間對應(yīng)的關(guān)系向量不唯一,且這些關(guān)系也可以分為直接關(guān)系和間接關(guān)系。考慮直接關(guān)系的權(quán)重應(yīng)當(dāng)大于間接關(guān)系,則菜品i與j之間的語義相似度可以表示為:
(8)
其中,λ的取值范圍為(0,1),N(Ii,Ij)和M(Ii,Ij)分別為食譜i與j之間直接關(guān)系數(shù)和間接關(guān)系數(shù)。
由式(8)得到語義相似性以后,可以生成菜品相似性矩陣,如表1所示。
表1 菜品相似度矩陣
由知識圖譜表示學(xué)習(xí)算法得到食譜語義相似度simsemg,再把它與協(xié)同過濾算法得到的相似度simcf以線性加權(quán)的方式進(jìn)行融合,融合方法如公式(9)所示:
sim(i,j)=α·simsemg(Ii,Ij)+(1-α)simcf(Ii,Ij)
(9)
其中α為權(quán)重系數(shù),且0<α<1。
本文使用Fui來表示用戶u對食譜i的預(yù)測評分,預(yù)測評分Fui的計算公式如下:
(10)
其中,X(i,k)為與食譜i最為相似的k個食譜,A(u)表示用戶u已經(jīng)評分的食譜。A(u)∩X(i,k)表示2個菜品集合的交集。sim(i,j)為物品i和j的融合相似度。Ruj為用戶u對物品j的評分。通過計算出的Fui進(jìn)行排序,選取前k個食譜形成推薦列表。
本文驗證TransHR-CF算法所用的數(shù)據(jù)集主要包括用戶飲食行為相關(guān)數(shù)據(jù)和飲食知識圖譜數(shù)據(jù),下面對2類數(shù)據(jù)集進(jìn)行相關(guān)介紹。
用戶行為相關(guān)數(shù)據(jù)來自于“下廚房”網(wǎng)站,最終收集到有效用戶記錄3698條,食譜10,954部,用戶對菜品評分?jǐn)?shù)92,348條,評分范圍為[0,5]?,F(xiàn)對評分?jǐn)?shù)據(jù)集按時間先后進(jìn)行排序,并且取前80%作為訓(xùn)練集,后20%作為測試集。
飲食知識圖譜數(shù)據(jù)中食譜實體數(shù)據(jù)、食譜實體與食材實體之間的數(shù)據(jù)來源于“下廚房”網(wǎng)站,食材營養(yǎng)成分、功能性調(diào)理、人群膳食、疾病調(diào)理這幾類數(shù)據(jù)來源于“下廚房”網(wǎng)站、豆果美食、人民健康網(wǎng)。通過使用微軟公司的軟件Satori來構(gòu)建飲食知識圖譜,最終得到包括食譜、食材、菜系、體質(zhì)、人群、營養(yǎng)成分在內(nèi)的6類本體,獲取65027個實體,包括用料、富含、適宜體質(zhì)、禁忌在內(nèi)的18種關(guān)系。由于每個食譜中包括的食材較多,為降低知識圖譜的構(gòu)造成本,本文只抽取與實驗數(shù)據(jù)相關(guān)的知識。
為與基準(zhǔn)方法比較,現(xiàn)分別選取召回率(Recall)和AUC這2個評價指標(biāo)對各模型進(jìn)行性能評價。這2個評價指標(biāo)定義如下:
(11)
AUC:ROC曲線和橫坐標(biāo)軸所圍成曲面面積,取值范圍為[0.5,1]。AUC的值越接近1,則表明推薦效果越好。
3.3.1 融合權(quán)重因子確定
融合權(quán)重因子α控制協(xié)同過濾相似度和知識圖譜相似度在混合相似度中所占的比例。現(xiàn)設(shè)定近鄰數(shù)k為50,表示學(xué)習(xí)嵌入維度為100,α的取值范圍為[0,1]。實驗中α從0到1遞增,每次增加0.1,一共進(jìn)行11組實驗,每組實驗重復(fù)10次取平均值。實驗結(jié)果如圖4所示。
圖4 不同融合權(quán)重α下的實驗結(jié)果
從圖4可以得出,隨著融合因子變大,本文算法的召回率得到提升,并且在α=0.6時效果最好,并在α>0.6時,推薦效果逐漸下降,故在接下來的實驗中選定α為0.6。
3.3.2 嵌入維度確定
在將知識圖譜嵌入到低維向量空間時,不同嵌入維度將產(chǎn)生不同的推薦效果,實驗選擇融合因子α為0.6,近鄰數(shù)為50,維度分別設(shè)為20、40、60、100。實驗結(jié)果如圖5所示,由圖5可以得出,隨著嵌入維度的增加,由于更大嵌入維度可以帶來更多有用信息,使得性能得到提升,但當(dāng)維度大于60以后,由于過擬合使得性能有所下降。故維度為60時推薦效果最佳。
圖5 不同嵌入維度下的召回率
3.3.4 算法對比
為驗證本文中TransHR-CF算法的有效性,分別與基準(zhǔn)算法CF[27]、TransE-CF[28]、RippleNet[29]、NCF[20]、DeepFM[19]進(jìn)行對比實驗。其中,表示學(xué)習(xí)嵌入維度設(shè)定為60,α的取值為0.6,近鄰數(shù)分別選取2、10、50、100。每組實驗循環(huán)10次后取平均。表2、圖6分別為各個算法在召回率R和AUC評價指標(biāo)方面的表現(xiàn)情況。
圖6 AUC值
表2 不同k值下的召回率
實驗結(jié)果表明,隨著近鄰數(shù)k的逐漸增加,各模型的召回率逐漸上升。從整體上來看,本文算法與基準(zhǔn)算法相比,本文算法在召回率、AUC這2項指標(biāo)上的表現(xiàn)都優(yōu)于基準(zhǔn)算法,表明本文算法能夠給出更加符合用戶需求的飲食推薦。
為解決飲食推薦問題,本文首先通過知識圖譜表示學(xué)習(xí)方法得到菜品的低維向量表示,進(jìn)而計算出菜品間語義相似度;再由外部用戶-物品評分矩陣計算出物品間余弦相似度;最后通過對2個相似度進(jìn)行合理融合得出最終菜品相似度,并依據(jù)最終菜品相似度進(jìn)行推薦。該算法不僅考慮到用戶飲食偏好,也考慮到菜品間內(nèi)部聯(lián)系,最終給出一個健康、符合個人生活偏好的個性化飲食推薦。下一步將嘗試引入動態(tài)時間函數(shù),從時間敏感層面滿足動態(tài)用戶需求。