推薦算法-協(xié)同過濾2 基于用戶

基本步驟:

1- 找到和目標(biāo)用戶興趣相同的用戶集合
2- 找到這個集合中用戶喜歡的,且目標(biāo)用戶沒有聽過的物品推薦給用戶

用戶興趣相似度計算

1- jaccard : (N(u) && N(v)) / (N(u) || N(v))
2- 余弦相似度 len(N(u)&& N(v)) / (len(N(u))x len(N(v)))

算法1:簡單直接法
def UserSimiliar(train):
     W=dict()
    for u in train.keys():
         for v in train.keys():
                   if (u==v) :
                         continue
                   W[u][v]=len(train[u] & train[v]) / math.sqrt(len(train[u])*len(train[v]) *1) 
    return W
算法2:根據(jù)物品建立倒排法,在倒排中計算用戶的相似度
def UserSimiliar(train):
     item_users  = {}  
     for u,items in train:
           for item in items.keys():
                 if item is not in item_users.keys():
                    item_users[item]=set()
                 item_users[item].add[user]  倒排...
    C =N= {}
    for i,users in item_users:
                for u in users : 
                       N[u]+=1                   # 計數(shù)
                       for v in users: 
                             if u!=v:
                                 c[u][v]+=1     # cuv 
    
    W=dict()
     for u,related_users in C:
         for v,cuv in related_usres.items():
                   W[u][v] = cuv/math.sqrt(N[u]*N[v])   
    return W

UserCF 算法

推薦和他興趣類似的K 個用戶喜歡的物品

def Recommend(user,train,W):
    rank ={}
    interacted_items = train[user]  用戶喜歡的物品
    for v, wuv in sorted(W[u].items, key = itemgetter(1)), reverse= True)[0:k]:
           for i,rvi in train[v].items:       
               if i not in interactive_items:  # 不是用戶U 喜歡的,就推薦
                   rank[i]+=wuv*rvi 
  return rank .  

UserCF-IIF算法

如果兩個用戶都買過新華字典,這絲毫不能說明他們興趣相似。因?yàn)榻^大多數(shù)人都要買。但是兩個用戶都買過數(shù)據(jù)挖掘,說明興趣相似。
所以需要懲罰熱門的相似物品。

def UserSimilarity(train): 
for i,users in item_users.items():
     for u in users:
          C[u][v]+= 1/math.log(1+len(users))  # 

UserCF-IIF 覆蓋度和召回率會略優(yōu)于UserCF.

實(shí)際應(yīng)用:

Digg

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容