基于邻域的算法
基于领域的算法是推荐系统中最基本的算法,包括基于用户的协同过滤算法以及基于物品的协同过滤算法。
基于用户的协同过滤算法
- 这是推荐系统中最古老的算法,甚至可以说这个算法标志这推荐系统的诞生。
- 基础算法
主要步骤:
(1)找到和目标用户有相似兴趣的用户集合。
(2)根据相似用户的感兴趣的,推荐目标用户感兴趣但是没有听说过的进行推荐。
对于步骤(1),关键是计算两个用户的兴趣的相似度。可以通过Jaccard公式或者余弦公式。假设有用户u和v,N(u)表示u有正反馈的物品,以此类推。
Jaccard公式:
余弦公式:
使用Python实现余弦公式的为代码如下(该方法非常耗时):
def UserSimarility(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] /= math.sqrt(len(train[u]) * len(train[v] * 1.0))
return w
然而以上的算法相当耗时,时间消耗在寻找相似用户之上。我们可以通过建立倒排表,通过UserCF实现推荐算法。