个性推荐系列目录:
个性推荐①——系统总结个性化推荐系统
个性推荐③—基于物品的协同过滤算法及优化方案
个性推荐系统常用的有两种:基于领域的推荐算法和基于内容的过滤算法,前者又分为基于用户的协同推荐算法(userCF)和基于物品的协同过滤(itemCF),本篇重点介绍基于用户的协同推荐算法的原理、适用范围及优化方案
一、算法步骤
① 找到和目标用户相似的用户集合
② 找到这个集合中用户喜欢的,且目标用户没有听过或产生过行为的物品,推荐给目标用户
二、用户相似度计算
基于用户历史行为得到用户相似度
以电商为例,如果两人共同购买的物品越多,两人越具有相似度。
以新闻为便,如果两人共同看过的新闻越多,两人越具有相似度
这里的购买,看过,都是用户的历史行为。
而如何量化这种相似度呢?——余弦相似度
给定用户u和用户v,令N(u)表示用户u曾经有过正反馈的物品集合,令N(v)
为用户v曾经有过正反馈的物品集合。W就是两两用户的相似度矩阵
def UserSimilarity(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])
W[u][v] /= ma