劉靖凱
(廣東工業大學,廣東 廣州510006)
推薦算法是一種根據用戶興趣,為用戶推薦一系列其感興趣的物品的算法。推薦算法分為召回和排序兩個步驟,其中,召回步驟常用的算法有協同過濾算法、隱語義算法等。協同過濾算法利用所有用戶的歷史行為信息,特別是用戶對物品的正反饋行為,計算出特定用戶對物品的興趣偏好,從而達到個性化推薦的目的。由于協同過濾算法具有魯棒性強、計算復雜度低等特點,所以已經被廣泛應用于各種實際的推薦場景之中。
常用的協同過濾算法有基于用戶的協同過濾算法和基于物品的協同過濾算法,基于用戶的協同過濾算法通過推薦與用戶興趣相近的其他用戶感興趣的物品,從而達到精確推薦的目的。最近的一些研究嘗試將協同過濾算法和基于模型的推薦算法結合,來提高推薦算法的性能。為了保持模型的時效性,一些在線學習的模型通過學習新產生的用戶行為數據來保持模型參數的質量。在線學習的推薦模型能夠從持續更新的數據流中訓練模型參數。常用的模型有增量式的協同過濾模型[1]和增量式的矩陣分解模型。
深度隨機游走[2]是一種將圖結構轉化為向量表示的算法。算法采用無監督的深度學習方法[3],這一方法已廣泛地運用于自然語言處理當中。深度隨機游走算法可以學習到用戶節點之間的社交關系,包括相鄰用戶節點的鄰域信息和同一用戶群體的成員關系。利用圖結構來代替用戶的歷史行為信息矩陣,可以有效地表示不同用戶群體的距離。利用向量來表示用戶節點可以有效地解決圖數據稀疏性的問題。
本文基于此背景提出了一種基于深度隨機游走的協同過濾推薦算法(Collaborative Filtering Algorithm Based on Deepwalk,DW-CF),利用用戶的歷史行為,構建用戶圖結構,計算用戶嵌入向量,計算各用戶向量間的余弦相似度,從而計算用戶的推薦列表,算法在實驗中體現了其有效性。
推薦算法利用用戶的歷史行為數據為用戶推薦排序好的物品。在本文的實驗中使用到公開數據集MovieLens-1M。其中包含用戶(u1,u2,…,um)和物品(C1,C2,…,Cn)之間的交互信息。本文提出的推薦算法根據用戶對物品的正反饋行為和用戶之間的社交信息,預測每一個用戶對物品的興趣偏好得分ru,c,從而將預測得分最高的N 個物品推薦給該用戶。傳統的用戶協同過濾算法通過計算任意兩個用戶的行為相似度來表示用戶之間的興趣相似度。而本文的深度隨機游走算法是通過計算用戶的表示向量,計算任意兩個向量的余弦距離來表示用戶之間的相似度,進而計算用戶對物品的興趣偏好。


圖1 深度隨機游走算法流程
基于用戶向量的協同過濾算法是利用上文方法計算得到的用戶向量,計算任意兩個用戶之間的余弦相似度,找到與該用戶相似的用戶,計算用戶對各物品的興趣得分,為用戶推薦物品。與用戶k 最相似的N 個用戶L(uK)可以通過以下公式求得:




圖2 基于用戶向量的協同過濾算法流程

本文采用召回率作為評價推薦算法質量的指標,其中Recall@N 表示給用戶推薦的物品里,評分排名前N 的物品中,占測試集中所有中樣本的比重,可以衡量推薦系統的查全率。
在深度隨機游走算法中,重復次數γ 為80,單次隨機游走步長k 為40,SkipGram 模型中滑動窗口大小w 為10,重復訓練次數為20,用戶向量維度d 為128 維。
為了驗證本文提出算法的表現,我們將其與傳統的用戶協同過濾算法[5](User-CF)進行比較。用戶協同過濾算法利用用戶對物品的評分矩陣計算兩個用戶的余弦相似度,為用戶推薦其未有過評分行為的物品。
本文評估算法效果的指標為Recall@10,Recall@15 和Recall@20。實驗結果如表1 所示。

表1 MovieLen 測試數據上的性能比較
從實驗結果可以看出使用DW-CF 算法產生的用戶向量可以有效度量任意兩個用戶的相似度,且度量的精度比傳統的用戶協同過濾算法更好。同時,隨著召回列表規模的增加,DW-CF算法的優勢越大,這說明興趣相似的用戶其在低維空間的余弦距離相近。
DW-CF 算法可以有效地學習用戶之間的隱向量表示。將用戶圖結構中產出的隨機游走序列作為輸入,我們的算法可以有效地學習出包含不同用戶群體興趣偏好的向量表示。將所得向量用于計算用戶的推薦列表,可以有效地得到用戶對各物品的興趣偏好,這可以更好的提升推薦系統的準確性。然而,本文提出的算法只適用于靜態的用戶和物品的數據中,在實際的場景中,用戶節點是處于不斷變化當中的,如何歸納計算動態的用戶向量,是此類推薦算法下一步研究的重點。