周 倩,王 遜,李靈慧,黃樹成,王云沼
(1.江蘇科技大學計算機學院,江蘇鎮江 212003;2.中國人民解放軍陸軍通信訓練基地,北京 100029)
隨著互聯網的發展,面對海量數據不斷涌現,人們很難選擇個性化的信息。由此,推薦算法應運而生,它能夠緩解信息過載問題,并且為用戶推薦感興趣的信息[1]。在推薦算法中包括3 種較為流行的推薦:基于內容的推薦(Content-based Recommendation)、基于協同過濾的推薦(Collaborative Filtering-based Recommendation)以及基于關聯規則的推薦。學者們也進行了大量研究,比如Hernando等[2]提出一種基于貝葉斯概率模型的用戶評級協同過濾推薦預測方法;Zhang 等[3]將學生的學習軌跡、借書時間信息以及圖書流通時間融入算法,提出一種基于時間序列的協同過濾個性化書籍推薦算法;趙杰[4]提出一種改進的LDA 用戶興趣模型用于個性化圖書推薦,將借書者特征信息的相似度計算和借書者屬性融入相似度計算方法;鄒海濤等[5]利用局部網絡拓撲結構組合模型,將用戶自身購買歷史與社交網絡特征相結合,提升推薦結果準確度。
然而,上述算法沒有考慮到圖書本身的語義信息。知識圖譜(Knowledge Graph,KG)作為最近新興的輔助數據源,引起越來越多人的關注。例如,Zhang 等[6]利用網絡嵌入和自編碼器獲取結構化知識的向量化表示、文本知識特征、圖片知識特征,在將這3 類特征融合到協同集成學習框架實現個性化推薦;Wang 等[7]提出RippleNet 算法,通過在推薦算法中利用知識圖譜并結合注意力機制得到用戶的偏好特征表示,有效提高了推薦算法的準確性;Wang等[8]提出RKGE-CF 算法,將知識圖譜實體嵌入與神經網絡相結合,提高了推薦性能;李浩等[9]將物品的外部附加數據和用戶的偏好數據加入知識圖譜,提取實體與關系的語義,將結果與協同過濾推薦結果相融合,準確率有顯著提升;Wang 等[10]提出KGCN 模型,利用用戶和項目屬性提出一種將知識圖譜作為輔助信息的圖神經網絡推薦模型,有效緩解稀疏性和冷啟動問題,提升推薦效果。
綜上所述,為了更好地進行圖書推薦,本文提出融合知識圖譜與協同過濾的圖書推薦算法。首先,利用TransE算法計算得到圖書之間的語義表示,然后利用余弦相似性計算方法計算圖書的語義近鄰;然后,在協同過濾算法基礎上利用同現相似度公式計算相似度,并改進相似度公式,加入活躍用戶懲罰因子,減少熱門書籍和活躍用戶對結果的影響;最后,將兩種結果通過創新性的高位替換低位方式融合形成最終推薦結果。本文算法融入了圖書的語義信息,尋找圖書之間的語義相似度,根據語義相似程度進行推薦,對改進推薦算法的物品冷啟動問題有一定效果。
協同過濾推薦算法是應用最為廣泛的推薦算法之一,通過挖掘用戶歷史行為數據發現用戶偏好,基于不同的偏好對用戶進行群組劃分并推薦品味相似的商品[11-12]。協同過濾推薦算法包括基于用戶(User-based)和基于物品(Item-based)的協同過濾算法[13]?;谟脩舻膮f同過濾算法根據用戶歷史評分數據計算用戶偏好物品,利用用戶偏好物品尋找與用戶偏好一致的用戶,然后將尋找到用戶的其他偏好商品推薦給該用戶。而基于物品的協同過濾算法思想與基于用戶的協同過濾算法類似,只是將用戶變為物品,例如喜歡物品A 的用戶都喜歡物品B,用戶T 喜歡物品A,則給用戶C 推薦物品B。
目前,各網上商城用戶數量明顯多于圖書數量,因此本文采用基于物品的協同過濾推薦算法,且利用余弦相似度公式計算物品相似度。
與其他種類的輔助信息相比,知識圖譜的引入可以讓推薦結果具有可解釋性且更加精確[14]。將知識圖譜引入推薦算法,有以LibFM 為代表的基于Embedding 的推薦算法[15]和以PER、MetaGraph 為代表的基于Path 的推薦算法[16]?;贓mbedding 的方法通常直接使用來自知識圖譜的信息以豐富Item 或User 表示。該類算法可分為兩類:基于翻譯的模型,如TransE[17]、TransH[18]、TransR、TransD等;語義匹配模型,如DistMult等?;赑ath 的方法通過構建User-item Graph,利用知識圖譜中實體的連通性模式進行推薦。由于該算法利用的數據庫為Book-Crossing,該圖書數據庫數據量大且較為稀疏,因此本文將采用翻譯方法[19]中效果較好的TransE 方法。
傳統的圖書推薦算法未考慮到圖書語義信息的缺陷,因此本文提出融合知識圖譜和協同過濾的圖書推薦算法,首先通過知識圖譜自學習算法,將圖書語義信息轉化為圖書向量矩陣,然后利用相似性計算方法計算圖書之間的相似性,形成圖書語義相似性矩陣。利用協同過濾表示學習,根據用戶—圖書評分矩陣,獲取圖書—圖書相似性矩陣,根據相似性計算結果獲取協同過濾推薦集合,最后將兩個結果通過一定比例的低位換高位算法進行融合。
本文算法流程如圖1 所示。算法需要輸入用戶—圖書評分矩陣Rm*n、圖書知識圖譜和評分矩陣—知識圖譜對照表這3 部分,輸出為融合知識圖譜和協同過濾的圖書推薦算法的推薦列表。具體流程步驟描述如下:
(1)根據評分矩陣—知識圖譜對照表,將用戶—圖書評分矩陣Rm*n進行篩選,獲取與知識圖譜相關的評分矩陣R′m*n。
(2)利用評分矩陣獲取圖書集合,再計算圖書與圖書之間的相似性并得到圖書相似性矩陣。
(3)利用TransE 算法進行訓練,最后得到實體向量集E 和關系向量集R。
(4)獲取知識圖譜中的圖書集合,利用上一步得到的實體向量集E,通過余弦相似度計算圖書與圖書之間的語義相似性并得到圖書語義相似性矩陣。
(5)根據當前用戶的歷史評分數據,獲取歷史交互的圖書列表,根據列表中的圖書分別獲取協同過濾推薦集合以及語義推薦集合,最后將兩個推薦集合排序。
四是順利啟動實施世行貸款節水灌溉二期項目。配合河北、山西和寧夏三?。ㄗ灾螀^)完成了世行貸款節水灌溉二期項目轉貸協定的簽訂和項目啟動實施工作,制定了項目和資金管理辦法;組織開展了項目設計、實施方案技術性審核以及管理人員培訓。
(6)選擇融合比例,分別計算出協同過濾推薦集占比x及語義近鄰推薦集占比y,然后取協同過濾推薦集中前x個成員及語義推薦集中的前y個數據。如果在取得過程中某個數據已經存在,則順延取下一位。
基于物品的協同過濾推薦算法是在用戶—圖書評分矩陣上為每本書找到K 個與之最相似的最近鄰,根據相鄰圖書的相似度權重以及用戶對圖書的偏好計算相似度矩陣。在相似度方法選擇中,本文使用同現相似度公式計算圖書之間的相似度。

其中,分母|N(x)|是喜歡物品x的用戶數,而分子|N(x) ∩N(y)|是同時喜歡物品x和物品y的用戶數據。
由于圖書會有暢銷和冷門的區別,同現相似度公式容易形成任何圖書都會與暢銷書有較大相似度的現象,于是本文懲罰了暢銷書的權重減少暢銷書與很多圖書相似的可能性。同時,圖書推薦不僅有暢銷書的影響,還會有活躍用戶的影響。因此,本文還加入了對活躍用戶的懲罰使推薦結果更加準確。

其中,|N(y)|表示喜歡圖書y的用戶數,喜歡圖書y的用戶越多,說明圖書y越暢銷,同時結果也會越小,兩本書的相似度就會越低。u代表同時給圖書x和圖書y評分的用戶,|N(u)|是用戶u一共評分過的圖書數量。用戶u評價過的圖書數量越少,結果就會越高,兩本書的相似度也就越低,這樣避免了暢銷書及活躍用戶對相似度的影響。
知識圖譜的本質是一種揭示實體之間關系的語義網絡,能夠利用已存在的關系數據集判斷未標注實體間的關系,使相似度計算結果更加準確[20]。圖書知識圖譜如圖2所示。

Fig.2 Book knowledge graph圖2 圖書知識圖譜
本文采用TransE 算法進行知識圖譜訓練。以往訓練三元組的方法大多存在參數過多問題,以至于模型過于復雜難以理解,而TransE 算法能夠有效學習三元組的向量表達。通過將每個三元組實例(head,relation,tail)中的關系relation 看作從實體head 到實體tail 的翻譯,不斷調整h、r和t(head、relation 和tail 的向量),從而使(h+r)盡可能與t相等,即h+r=t。TransE 算法訓練得到圖書語義向量矩陣及關系向量矩陣,再利用相似性公式將圖書語義向量矩陣轉化為圖書語義相似性矩陣,最后可以得出每本圖書的語義近鄰。本文在選取相似性計算方法時,選用的是余弦相似度公式,如式(3)所示。

其中,當A、B 兩個圖書向量相似度越大,sim(A,B)數值就越接近1,知識圖譜中兩者的語義相似性越高,反之,相似性越低。最終計算出圖書—圖書語義相似性矩陣。根據相似度公式可以得知,矩陣是一個對稱陣,即a(i,j)=a(j,i)。通過矩陣,可以獲得每本圖書的語義推薦集合。
為更好地實現新圖書推薦(此處新圖書指評分數據少于2 條的圖書),在計算新圖書的語義相似性時,加入閾值判斷,即在計算圖書A,B 的語義相似性時,判斷圖書B 是否為新圖書,若B 是新圖書,則會獲取與圖書A 相似性最大圖書X 的相似度maxsim(A,X)以及與圖書A 相似性最小圖書N 的相似度minsim(A,N)),若sim(A,B) >(maxsim+minsim),sim(A,B)的相似度計算如式(4)所示。

這樣既可以增加新圖書語義推薦概率,也不會造成新圖書與任何圖書都有較大相似性的現象,對解決物品冷啟動有一定意義。
本文創新性地使用高位替換低位的方式進行融合,即首先將知識圖譜推薦結果集及協同過濾推薦結果集按相似度大小倒序排序,然后將知識圖譜推薦集合與協同過濾推薦集合按適當的比例選取相似度高的圖書集成最優結果集。這樣既考慮了外部評分數據,也考慮了圖書語義信息,同時可以緩解新物品因為評分信息不足而無法得到推薦的現象。融合過程如下:

假定要為用戶推薦N 本圖書,ListCF為協同過濾算法推薦的集合(已排序),ListKG為語義相似度矩陣推薦的集合(已排序)。ListBook為最終給用戶推薦的結果集,融合比例為x,其取值范圍為x∈[0,1]。在最終推薦結果集中,若ListCF集合不為空,則ListCF集合的數量為其中為向下取整,ListKG的數量為kglen=N-cflen。融合算法根據輸入的融合比例分別計算兩個近鄰集中數量占比。算法在取推薦數據時會判斷結果集中是否包含本數據,最終得到結果集ListBook。
本文使用Book-Crossing 數據集進行測試。將該數據集信息轉換為隱式反饋數據,其中每個條目都標有1,表示用戶對該圖書給予正面評價,并為每個用戶采樣一個標記為0 的未監視圖書。此外,Book-Crossing 數據集數據較為稀疏,因此未設置肯定評分閾值。
知識圖譜則利用Microsoft Satori 構建。首先從整個KG 中選擇關系包含“書”的三元組子集,然后通過將Book-Crossing 中ID與三元組頭部或尾部匹配以獲取有效數據,同時排除沒有匹配或者多匹配實體的項目。此時,Book-Crossing 中每一個ID都可以在三元組中找到對應數據,但三元組中頭部或尾部在Book-crossing 中不一定有數據,即模擬現實中某些圖書只有語義信息而沒有評分信息。
本文將評分數據隨機分為4 份,選取其中1 份作為測試集合,其他3 份作為訓練集,每次實驗結果運行5 次取平均值。數據集詳細信息如表1所示。

Table 1 Book-Crossing data set information表1 Book-Crossing數據集信息
實驗硬件處理器型號為Inter(R)Core(TM)i5-1021U,內存為12G,軟件環境為Python 3.7。
對于推薦算法結果,本文使用3 個評價指標進行分析:精確率(Precision)、召回率(Recall)、F1 分數。3 個評價指標都可以根據混淆矩陣計算得出。精確率表示預測為正樣本的樣本中,正確預測為正樣本的概率;召回率表示正確預測出正樣本占實際正樣本的概率;F1 分數折中了召回率和精確率,如式(5)—式(7)所示。

其中,TP代表樣本的真實類別為正,最后預測得到的結果也為正,FP代表樣本的真實類別為負,最后預測得到的結果為負;FN代表樣本的真實類別為正,最后預測得到的結果卻為負。
實驗將融合比例作為變量,顯示不同融合比例下的推薦效果。本次實驗選取Top-K 的K 值為10,定義相似圖書數量為20。協同過濾推薦:對語義相似性推薦的融合比例從0∶10 到10∶0 分別做實驗,每個融合比例均運行10 遍求平均值。精確率、召回率、F1 指標曲線如如圖3 所示。橫坐標為融合比例,縱坐標分別為精確度、召回率、F1值。從圖3 可以看出,精確率、召回率、F1 在融合比例為5∶5 時效果最好,即進行Top-10 推薦時,協同過濾推薦與語義相似性推薦各占一半時,效果最好。

Fig.3 Curve of precision rate,recall rate and F1 score圖3 精確率、召回率、F1 score指標曲線
本文選取經典和新的推薦算法進行比較,如KGCN 算法、RippleNet 算法和RKGE-CF 算法與CKCF 算法進行比較,驗證本文算法的可行性和優越性。由于F1 分數折中召回率和精確率,則展示召回率和精確度指標上的對比結果。本文算法與KGCN,RippleNet 和RKGE-CF 算法在召回率和精確度指標上的對比結果如圖4、圖5 所示。從圖4可以看出,不管K 值為多少,4 種算法的召回率不相上下,說明本文算法雖有優勢,但優勢不明顯。

Fig.4 Comparison of recall rates of various algorithm圖4 各算法召回率比較
從圖5 可以看出,本文算法在Top-5、Top-10 優勢明顯,在Top-20 及Top-50 上也有一定提高。CKCF 算法在精確率指標上隨TOP-K 的K 值呈遞減趨勢變化。精確率最高在TOP-5 時達0.043 7,與其他算法相比有明顯提高。在TOP-50時達0.013 1,但相比其他算法仍有一定提高。

Fig.5 Comparison of precision of various algorithm圖5 各算法精確率比較
綜合考慮,本算法在計算物品相似度時不僅懲罰了熱門圖書還懲罰了活躍用戶的比重,使得協同過濾推薦結果更加準確,同時基于知識圖譜訓練計算圖書的語義相似度,然后將評分近鄰與語義近鄰相結合,從而提升推薦質量。
本文提出一種融合知識圖譜和協同過濾的圖書推薦算法CKCF,通過協同過濾發現用戶現有興趣,同時利用知識圖譜挖掘用戶潛在興趣,最后將兩者融合以提升推薦效果。CKCF 算法能夠利用TransE 將三元組數據轉換為低維空間向量矩陣,獲取圖書實體向量矩陣。通過余弦相似度公式計算出每本圖書之間的語義相似性,同時提升新圖書的語義相似性,生成語義相似性矩陣并獲取圖書語義近鄰。在獲取協同過濾推薦集合時改進相似度計算方法,加入懲罰因子減少暢銷書及活躍用戶對推薦結果的影響。最后將語義相似性矩陣推薦結果與協同過濾推薦結果集融合,得到個性化推薦結果。本文算法在語義的層面上增強了協同過濾算法推薦效果,但算法還有待優化之處,如未考慮知識圖譜關系向量矩陣,這為今后工作提出了新的思路。