计算余弦相似度用户/项目协同过滤的差异

时间:2017-11-04 12:33:57

标签: python numpy math cosine-similarity

我跟随tutorial来计算用户 - 用户协同过滤和用户项协同过滤的余弦相似度。

我不明白为什么我们使用转置作为用户相似度分母,而我们不使用转置来实现项目相似性。按照python代码:

ratings = np.zeros((n_users, n_items))
for row in df.itertuples():
    ratings[row[1]-1, row[2]-1] = row[3]

def predict_fast_simple(ratings, similarity, kind='user'):
        if kind == 'user':
            return similarity.dot(ratings) / np.array([np.abs(similarity).sum(axis=1)]).T
        elif kind == 'item':
            return ratings.dot(similarity) / np.array([np.abs(similarity).sum(axis=1)])

任何人都可以通过示例向我解释,因为我没有看到两个公式(基于用户和基于项目)之间的差异:分母是类似用户对项目i和项目j的评级的平方和谁评价这两个项目。 (对于两个用户评定的项目交叉点的基于用户的平方和)。

0 个答案:

没有答案