1. 程式人生 > >基於鄰域的推薦算法

基於鄰域的推薦算法

width contain sed span odi def -m 用戶組 復雜

基於鄰域的算法,就是最常見的CF協同過濾算法。分為 基於用戶的 user based CF 和 基於物品的 item based CF.

1.user based CF

對目標用戶u, 找出與之相似的用戶集合 U,將U中用戶感興趣而u沒見過的物品推薦給u.

用戶相似度,通過將用戶表示成商品的向量後計算。

如果兩兩用戶都計算相似度,那麽計算復雜度為O(|U|^2),而對每個u來說,它的向量都是稀疏的。也就是說很多用戶間沒有交集,相似度計算為0。所以可以先過濾掉這些用戶組合後再進行計算。一個方法是建立物品到用戶的倒排表,對每個物品下的用戶列表,兩兩組合作為key,key每出現一次加一,這樣計算出每種存在交集的用戶組合的相似度分子,然後除以分母即得到相似度。

得到topK相似的用戶後,計算目標用戶u對物品i的興趣度就表示成這個K個用戶的相似度與他們對u的興趣度的線性組合。

用戶興趣相似度的一個改進:將商品流行度考慮進去,對熱門商品采取懲罰。

技術分享

2.item based CF

基於用戶的CF隨著用戶增長,用戶關系矩陣過大。基於物品的CF推薦與用戶之前感興趣過的物品有關聯關系(或相似)的物品。相似度計算方式是通過用戶的行為,而不是物品本身的屬性來獲得。

也就是將物品表示成用戶的向量後計算。和user based CF同理,建立用戶-物品的倒排表。

同理,會對某些屬性的用戶進行懲罰,來修正物品的相似度。

ItemCF的相似度矩陣歸一化後能夠提高精度、覆蓋度。

參考:《推薦系統實踐》

基於鄰域的推薦算法