ITEM CF



 
其中, S(u, K) 包含和用户 u 兴趣最接近的 K 个用户, N(i) 是对物品 i 有过行为的用户集合, w uv

是用户 u 和用户 v 的兴趣相似度, r vi 代表用户 v 对物品 i 的兴趣,因为使用的是单一行为的隐反馈数

据,所以所有的 r vi =1 。

如下代码实现了上面的 UserCF 推荐算法:

def Recommend(user, train, W):

rank = dict()

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 in interacted_items:

#we should filter items user interacted before

continue

rank[i] += wuv * rvi

return rank



 这里N(u)是用户喜欢的物品的集合,S(j,K)是和物品j最相似的K个物品的集合,w ji 是物品j和i

的相似度,r ui 是用户u对物品i的兴趣。 (对于隐反馈数据集,如果用户u对物品i有过行为,即可令

r ui =1。 )该公式的含义是,和用户历史上感兴趣的物品越相似的物品,越有可能在用户的推荐列

表中获得比较高的排名。该公式的实现代码如下所示。

def Recommendation(train, user_id, W, K):

rank = dict()

ru = train[user_id]

for i,pi in ru.items():

for j, wj in sorted(W[i].items(), /

key=itemgetter(1), reverse=True)[0:K]:

if j in ru:

continue

rank[j] += pi * wj

return rank

 

你可能感兴趣的:(it)