我們想到的最簡單算法是給用戶推薦好友喜歡的物品集合。即用戶 u 對物品 i 的興趣 p ui 可以通過如下公式計算勾习。
其中 out(u) 是用戶 u 的好友集合垢乙,如果用戶 v 喜歡物品 i ,則 r vi =1 语卤,否則 r vi =0 追逮。不過,即使都是用戶 u 的好友粹舵,不同的好友和用戶 u 的熟悉程度和興趣相似度也是不同的钮孵。因此,我們應(yīng)該在推薦算法中考慮好友和用戶的熟悉程度以及興趣相似度:
這里眼滤,w uv由兩部分相似度構(gòu)成巴席,一部分是用戶 u 和用戶 v 的熟悉程度,另一部分是用戶 u 和用戶 v 的興趣相似度诅需。
下面的代碼實現(xiàn)社會化推薦的邏輯漾唉。在代碼中, familiarity 存儲了每個用戶最熟悉的 K 個好友和他們的熟悉程度堰塌, similarity 存儲了和每個用戶興趣最相關(guān)的 K 好友和他們的興趣相似度赵刑。 train 記錄了每個用戶的行為記錄,其中 train[u] 記錄了用戶 u 喜歡的物品列表场刑。